DAO's are dependent on centralised services from a multitude of closed source providers. Not only does this make them vulnerable to censorship, they're too complicated to use for ordinary people.
Provide a distributed, resilient, community owned framework that provides communication, storage, blockchain access and computing infrastructure,using Instant Messaging as the communication backbone.
This is the total amount allocated to DAO Infrastructure Framework (DIF).
Table of Contents
_________________
1 Overview
==========
The system is a decentralised infrastructure platform that provides
communication, computing, blockchain services and storage. It can be
used by individuals, groups, companies or DAO's, installing only the
modules that are needed for their situation. The system follows the
paradigm that an Instant Messaging client should be the main method
that members interact with a DAO.
It is designed to free people and DAO's from being dependent on
centralised services. It aims to provide modern digital services even
to communities who do not have internet access. Impi can also provide
an onion address for Instant Messaging (XMPP) clients to connect to.
This provides Tor level of anonymity.
The system aims to provide all the services necessary for a DAO to
operate. These services include communication via Instant Messaging,
access to blockchain services, verified off-chain computation, private
IPFS storage and private blockchains to store information important to
the community and other web related services.
The system is a platform that others can write programs on top of
without having to worry about communication protocols or validation
etc. The system represents it's XMPP contacts as PTY's (pseudo
terminals) on the GNU/Linux base system. This allows programs written
in any language to communication with the user by reading and writing
to the appropriate PTY.
This allows researchers and hobbyists around the world who are not
blockchain native to experiment with different economies, different
governance structures, and different ways of coordinating people in
their favourite language, with full access to it's libraries and
packages, as well as a full GNU/Linux operating system without
worrying about worrying about the underlying tech stack or
insfrastructure.
Th system is designed to be simple enough to be setup by someone with
very little technical skill, and be able to offer a range of services
to their community. The system will be available as a live distro that
can be burned to a USB flash drive from which a PC can be booted into
a Live Environment. The live environment is able to immediately
provide all the services offered by the system, or they can install it
on the hardware. The installation will be as automated as possible.
During the entire installation process there is a chat window
accessible that is automatically connected to a Group Chat full of
people who are willing and able to assist anyone who is having trouble
with the installation or just has a question. The system is
human-to-human communication centric.
The system provides a natural path for growth. As more people join the
network, the more secure the system becomes. What starts off as a
single computer can evolve into infrastructure that the community can
rely on, regardless of which members come or go. It is up to the
community themselves to decide how much security they need for their
network and their needs. The more nodes that are on the network, the
higher their level of security.
Instant Messaging is the primary method of communicating with the
system. Using something as simple as instant messaging decreases the
amount of new things that a new member needs to learn. By using an
interface that people are already familiar with, we are able to
provide them with access to the benefits of web3 technology.
The text based nature of instant messages medium makes writing
interfaces much simpler and quicker than writing HTML base interface.
The DAO's computing interface is represented by a bot on the XMPP
network known as the receptionist, and generally has an address
similar to "receptionist@cardano.org". The Receptionist can either be
a bot, or the communication can be routed to someone in the DAO who's
shift it is at that time to greet people and point them in the right
direction. The direction that they get pointed to might be another DAO
member, or a service bot.
Receptionists are just Service Bots with a certain collection of
features enabled, which is entirely customizable.
If the system is used by a single person, their bot is called a
Personal Assistant (PA), which is completely customizable by them, and
acts as a "Digital Ironman Suit" to take care of all the unproductive
actions that need to be taken on the internet just to interact with
different systems.
A PA can execute any system command (if permitted) on the user's
machine, allowing for endless possibilities, and remote control of
one's computer or server. For example, a user could message their PA
"Send 50 ADA to John". This will then run the appropriate
cardano-cli command or send a JSON message to an Ogmios bridge to
send the ADA. TOTP could be added ontop for extra security if need be.
XMPP is federated, like email, in that anyone can start an email
server (or join an existing server), and it's users can communicate
with any other email server's users. There is no central point that
can be controlled. If one is shut down, another can be started.
2 Communication Channels
========================
The programs can communicate directly with users via instant messages,
and vice versa, without having to worry about the technology stack
underneath. Each user or group chat becomes a PTY on the system.
Programs can pipe in and out of PTY. This allows a programs to easily
interact with groups of people, possibly coordinating their efforts to
achieve a certain goal.
3 Off-chain computation
=======================
The off-chain computation is provided by the nodes that run the
system. The computing environment is a complete GNU/Linux system. One
node does the computation and the others verify that the results are
correct. Nodes are incentivised to act honestly.
4 Validation
============
When Impi is running on more than one machine on the network, the
system can perform verified communication and computation. This means
that the system can run ordinary trusted code in a trustless
environment and obtain a certain degree of assurance that what is
being represented is in fact true and correct. The more machines that
are connected, the higher the degree of assurance. This allows
computation from ordinary non-smartcontract code to be verified. This
would allow an entire governance system to be written in Python for
example.
To verify the communication and computation automatically, all data
between stages move through group chat rooms. This allows multiple
nodes to observe what data is being sent as input, they can run the
same computation themselves, and then they can validate that the
answer given is in fact the correct answer. If a node provides
incorrect data, they are penalised.
This is how Chainlink works, which is one of the options to secure the
system. Unfortunately Chainlink is not available for Cardano yet.
Until it does become available for Cardano, or an alternative is
found, the system can be secured on the Ethereum network for scenarios
that require that form of security.
The long term goal of the project would however move to more of a
local reputation system, instead of using the dollar's reputation.
Reputation could dictate how often you get selected to perform a task,
and hence how much you earn.
5 Multi-chain
=============
Impi is multi-chain. It's connects to blockchains either via a Rosetta
driver module, or via a chain specific driver module. Currently a
driver would entail Chainlink Network Nodes that verify the data going
to and from the blockchain.
6 Community Owned Blockchains
=============================
In addition to connecting to blockchains, Impi can run it's own local
blockchain of it's choice (if it has the drivers). This allows a
community to have access to whatever smartcontract functionality they
want and are able to keep a record of what is important to the
community (for example the daily temperature can be recorded on a
community blockchain), and have that functionality at a very cheap
price, if not free.
The local blockchain can perform transactions between community
members on the local chain, and only speaking to the main chain when a
transaction needs to interact with a mainnet contract or address. Each
Impi basically becomes a side chain to your main chain of choice. This
kind of scenario would be perfect for a town for example. All real
world transactions are kept local, cheap and fast and decrease the
load on the main chain.
7 File Storage
==============
A private IPFS network will be used to provide file storage for the
DAO.
8 Pub/Sub
=========
Pub/Sub stands for Publish/Subscribe. It allows users to subscribe to
published events. For example, A user's PA can be set to watch for any
deposits in a certain wallet, and then use Pub/Sub to send anyone who
is interested in that wallet a message with the deposit details.
A DAO could do something similar and place a Pub/Sub watcher on their
treasury wallet, and all those in the DAO that need or want to keep an
eye the treasury can subscribe to that Publication. Under what
conditions the message is sent can also be personalised, for example,
a certain user might only want to be sent a message if more than a
certain amount is transferred, or more than a certain amount of
transactions have occurred within a certain amount of time. Another
Pub/Sub could be created for an AI that watches for any anomalies on a
wallet.
The Pub/Sub model allows a DAO to create their own minnie twitter
amongst their community members, that filters content and follows
rules set out by members of the DAO itself. THe DAO's XMPP server can
connect to any other DAO's XMPP server, allowing minnie twitter
spheres to join into one large twitter sphere, where communities can
express themselves freely, but can regulate themselves, and allow
others to do as best suits them, but at the same time, be able to get
each other's feeds if they so choose.
9 XMPP servers can offer a .onion address.
==========================================
This allows for a convenient setup where only your XMPP client
connects to the onion site through a Tor bridge and all your other
traffic can flow like normal without any need for a system
configuration change. Any program that needs to communicate
anonymously can use the XMPP http api to route their traffic through
the XMPP/Tor tunnel. Even though the XMPP server connects to it's
clients via onion, it's XMPP side is still on the clear web with a
normal JID (Jabber ID). This would allow a DAO to present it's
receptionist to the clear web, and allow it's members to connect
completely anonymously, whilst at the same time allow any user from
another normal server to communicate with the user that is anonymous,
as well as allow the normal user from the other server to utilise the
services offered by the DAO (or not, perhaps they are offered
different services, DAO's choice)
10 HTTP to XMPP Bridge API
==========================
In addition to these features that the system brings to a single user
or a DAO, it also provides an HTTP API for external programs to
interact with the DAO, or the users. For example, instead of Ideascale
sending an email to all the Catalyst members, they can call the Impi
API with their message and the group name, and assuming someone in the
DAO has given them authority to do so, all members will be sent the
message.
Members can reply directly to messages sent from the DAO to provide
their feedback. For example, there could be a proposal that needs to
be voted on. Ideascale can use the appropriate API to send the
proposal to the appropriate members. Each member will receive a
message from the DAO's receptionist containing all the details about
the proposal, as well as the proposal itself. Each member can then
read the proposal quickly whenever they have a spare moment available
and reply directly to the message with a yes or no. The response will
be sent back to Ideascale as their voting response.
11 Issue Centered Chat Rooms
============================
A user, or a group of users who are responsible for a system could for
example have their error logs messaged to a group chat so everyone who
is interested can join the group chat and be kept up to date with the
system state. This automatically creates a place where there users can
coordinate on fixing the issue, as well as allow certain users to
issue shell commands directly in the chat so that everyone can keep an
eye on the progress.
To enable the logs being sent to a group chat, a user only needs to
run something like "tail -f logfile | xmpp-bridge
operators@cardano.org"
12 Human Coordination Modules (HCM)
===================================
Human Coordination Modules coordinate the completion of a collection
of tasks by the members of the DAO.
For example, lets assume there are 10 proposals and 100 users. Each
proposal needs to be assessed by at least by 5 people. Ideascale can
call an API, pass the system the lists of proposals, and the users
that are participating, and the system will send each proposal to 5
members. The members can then rate the proposal by responding directly
to the message that contains the proposal. Once a member is done
proposing, they are sent another proposal to validate if there is one.
If one of the members does not respond within a certain amount of
time, they are sent a messsage saying their window has closed and the
proposal is sent to the next member to assess. This could easily be
changed if you were not on a strict budget and didn't mind having
additional responses.
This continues until all the proposals have been evaluated. This saves
the member having to go to the website, find the proposals, then find
a proposal to review, review it, and then send the response. The
system ensures that the next action that the member needs to take is
ready to be accessed by them whenever they have a gap in time without
having to waste time and mental effort in getting ready. They only
have to open a message. The system is designed to be flexible and
extendable, making it easy for additional coordination modules to be
added, tested and used. The modules can also be written in any
language.
An example of what such a coordination mechanism might look like is
the Real World Auditor. There is a video showing the flow of the
system here:
13 Onboarding
=============
A training module can be used to onboard new users who might not be
familiar with using text messages as a way to interact with systems,
as well a teach them how to interact with the DAO, or organisation
using text messages. As they progress though the program, they gain
access to more and more commands, access and privileges. And becuase
it's just Instant Messaging, if a new user gets stuck, or doesn't
understand something, they can use the help command, which will find a
more senior DAO member to join the chat and to help the new user out.
The system allows for as much automation as one wishes, but with the
option to have people on hand to guide and help when it is needed.
Besides onboarding and retaining more member, it helps prevent people
feeling lost,isolated and alone in their digital experience.
The system is designed to hold peoples hands from the beginning, only
giving them access to facilities that they have learned about and
played with in a sandboxed environment. My hope is that this assurance
that they can't break anything, and that they can play with it in the
sandbox as much as they want with no consequence, combined with a
coach on hand that will show you the ropes, that they will be able to
relax into the system knowing they are safe. Education is key, as many
older people, and people who come from a disadvantaged background who
struggle with technology, they land up being prey to scam artists and
thieves.
14 Front End
============
Because XMPP is an open protocol, any XMPP client will be able to
communicate with the server.
However, MatterMost
alternative to slack or discord. We will do an investigation into
whether it will be possible/viable to fork the MatterMost front end
application and modify it to use XMPP as it's communication protocol.
The modification will result in a open source and federated
alternative to Discord and Slack in a nicely packaged client that runs
on Windows, Mac, Linux, Android, iOS and has a Web Client. If it is
deemed viable, we will create a proposal to do the conversions in a
future fund.
Another investigation will be done into creating a package for Emacs
that by default mimics the layout of Discord and offers the same
functionality, except it has Emacs super powers and is text based.
This could be done as a fork of telega.el
Client. We swap out the comms backend to use XMPP and create a few
layouts that are in the style of Discord/Slack/Mattermost. A
preconfigured plug and play version of Emacs with the package can be
sent to members by the DAO's receptionist when they join the DAO, or
whenever they request it, or they can get it from the DAO's IPFS.
At the same time, the Emacs Application Framework will be investigated
for it's ability to integrate PyQt programs into Emacs. This framework
promises to empower us to create graphical front ends for Emacs. This
should allow us to mimic Slack / Discord / Mattermost's interface
almost exactly. In addition, it creates a possible path to offer all
the services offered by Impi to be accessible from within Emacs, and
make Emacs look like a modern application. If deemed viable, it too
will become a proposal for a future fund.
15 Cockpits
===========
The X in XMPP stands for extensible. The protocol is designed to be
extended so that it can suit growning needs. A investigation into
whether a plugin for XMPP that allows a Window Layout to be suggested
by bot or chat room is a viable idea or not. This will allow
communities to choose what and how information is shown to it's
members. In essence, it a pluging to relay a cockpit configuration. If
the cockpit requires programs or files, the extention will offer a git
url, or transfer the files directly. This does present some obvious
security vulnerabilities which will need to be addressed.
A default layout could make a client application look like discord for
example with the server list on the far left, then a column with the
rooms in it, then a big chat window in the middle, and then a column
on the right that shows who's online.
A certain DAO might want a news feed to be on the right, and a chat
window on the left. XMPP is extensible enough to allow this
functionality to be added in the future.
If found to be viable, this will become a proposal in a future fund.
16 People centric design
========================
At any point in any conversation, or interaction with a smart contract
for example, a user can can execute the help command, which will then
instruct the system to add another user to the Group Chat. The user
will be someone who can either offer direct assistance, or will know
who to contact to find the assistance that is needed. They can also
teach the user if they are new or are battling with a certain part of
the system.
This is the advantage of using XMPP as a method of interacting with
other protocols. If you get stuck or are unsure of something, you can
always request assistance and someone can join you in your chat and
help you out. You can choose how much of the history you want them to
see, or you can choose for them to see nothing, the choice is yours.
17 Inter-DAO communication and coordination modules
===================================================
Modules can be written in any language to experiment with what DAO to
DAO communication and collaboration could look like in a low
consequence environment.
DOA to DOA communication and cooperation is being investigated by
groups like PrimeDAO
18 Non-Distributed Services
===========================
The system also provides non-distributed services. These are run on a
single node at a time, but all nodes are able to offer the service.
Load balancing will split the load amongst the nodes. The data is
stored on IPFS when possible, else the data will be backed up using
rsync until an IPFS solution can be found.. All the services are open
source. Here is a list of the services that will be initially included
in system:
+ Prosody
easily extendable.
+ CryptPad
suite that is end-to-end encrypted and open-source.
+ Taigao
Management Tool It offers Kanban boards, Gantt charts, Issue/bug
tracking
+ Jitsi Meet
Conferencing Solutions
+ Gitea
+ Onionshare
tool that lets you securely and anonymously share files, host
websites, and chat with friends using the Tor network.
+ Etherpad
open source online editor providing collaborative editing in really
real-time.
+ PrivateBin
open source online pastebin where the server has zero knowledge of
pasted data.
+ Mumble
latency, high quality voice chat application.
+ PeerTube
decentralized and free/libre alternative to video broadcasting
services.
DAO's are tricky to get right. The whole concept is new, Discord is new
to many people, users/members are generally still trying to figure out
this whole web 3 thing. Plus information is scattered everywhere across
multiple centralised services.
It's easy to get lost, and every DAO is different with different
interfaces, utilising different technologies. This creates a massive
learning curve for anyone trying to get into this space, or just
participate in a DAO.
Also, some people are shy. They might have a question but don't want to
ask it on a public channel in fear of looking stupid or ignorant, or
worried someone is just going to say that they should google it first.
This massively decreases their ability to get involved and contribute to
the DAO.
This solution provides a familial text instant message interface, with
more one-on-one assistance to members that prefer not to be too active
in public channels. The member can message "help" to the DAO's
receptionist bot and they will be connected to a more senior member of
the DAO to assist them, whether that's teaching them how to perform the
action they wish to perform, or pointing them to documentation, putting
them in contact with someone who can assist more, teaching them how to
phrase their question so that they can ask it on a public channel on the
subject, or just giving them the answer to their question.
The members who are assisting the new members are members who have been
around for a little bit and know the basic ins and outs of the DAO and
system.
Because programs for DAO's can be written in langauge, more people are
able to participate in writing tools for DAO's. You could run it as a
Jupyter Notebook if you wanted.
A basic DAO template will be provided for the system. The template will
provide tools to the DAO that support flows similar to what is described
in this document:
An example would be to provide a way for a new member to self signal
that they wish to contribute to the DAO. This involves them getting
involved in DAO activities. One such activity is assisting new users.
This serves three purposes.
meaning you don't know how to do what you want to do with the system,
could result in the new user getting frustrated and abandoning the
system. Always having a human on hand to come and assist them if need
be could help ease people into a new way of doing things and keep the
retention rate as high as possible. This also helps make technology
more human centred.
question they don't know the answer to. This allows them to learn
more about the DAO and the system in a much more broad sense than if
they were to just go and find out things on their own.
shop wants to have an online shop available on the XMPP network. They
create their receptionist bot, with the address
receptionist@cookieshop.com. They don't want to be dealing with
customer queries themselves, because they believe technology should
make your life easier, not consume all of it. They want to spend
their time making cookies. What they can do is install the system and
set up a receptionist bot at receptionist@cookieshop.com. They can
have a pool of people that are looking for work. Whenever a client
connects to receptionist@cookieshop.com, the chat is routed to one of
the people that are looking for work. They then interact with the
client on the cookie shop's behalf. You can enable a feature to allow
two other people to join the chat and just observe. They ensure the
person interacting with the client does so professionally and gives
them the correct information.
There is also the ever present risk of censorship that comes with
relying solely on a centrally controlled service such as Discord,
Discourse or Telegram. If for whatever reason your Discord server gets
shut down, how do you reconnect with your members. There is no way to
re-establish the same kind of connection again. Some of the members
might re-group through Telegram or Discourse, but you are going to loose
a fair percentage who might not be actively involved, but would still
like to stay up to date with the project in case they need it in the
future. But the main hurdle in getting a DAO back up and running again
after a ban from something like Discord for example is implementing a
replacement and getting people to start using that service or app. Where
do you go? Slack? This new service then involves new applicatoins,
another learning curve, wasting all your member's time.
XMPP is federated, like email, in that anyone can start an email server
(or join an existing server), and it's users can communicate with any
other email server's users. There is no central point that can be
controlled. If one is shut down, another can be started.
The main perceived risk is Chainlink not becoming available on Cardano, or taking a
very long time. The current plan relies on Chainlink to provide validation
services to the network. Due to the design of the system, with the validation
engine being a module and the validation itself is abstracted away from the rest
of the system, the rest of the system can be developed in the interim. If
Chainlink never comes to Cardano, then another Oracle and validation solution
will need to be found.
I have not tested HTTP-over-XMPP api yet. This API needs to be investigated
further to find out how viable it actually is for use. This feature is a
nice-to-have for the system and is not on any critical path. If it does not work
correctly, the services offered by the DAO could be presented on onion sites to
help with member privacy.
Milestones reached by end of month
Month 1:
Month 2:
Month 3:
Month 4:
At the end of this month, system management programs and usability features will be added to the system. These programs are designed around using Instant Messaging as the primary method of communicating with the user. The programs will provide basic functionality to the system, and serve as the building blocks for more complex systems. The GNU/Linux system handles all the access control and privileges, and provides read and write access to a user's instant messenger application via pseudo terminals (pty).
Stdin and stdout will be routed by default to the instant messaging user that started the session. This allows normal programs to communicate with a user over XMPP without even realising it. This will hopefull allow more developers to experiment with writing modules as they don't need to learn anything new if they can already program, as well as giving someone access to the entire GNU stack for dealing with users.
The tools that will be written are:
Draft system setup and configuration documentation
Month 5:
This month, the following modules will be made available.
IPFS integration will be complete.
Month 6:
Month 7:
Month 8:
Month 9:
Lead Programmer at $70 - $100 per hour
160 hours per month = $16 000 per month
Technical Lead at $100 per hour
160 hours per month = $16 000 per month
Junior Dev at $40 - $70 per hour
160 hours per month = $11 200 per month
Developer Cost per month:
$16 000 + $16 000 + $11 200 = $43200
Developer Cost for 9 mont period:
$338 800
Hardware for experimentation : $12 000
Total Cost: $400 800
Roger van Schie
Tech Lead, System Design, System Configuration, System Packaging, Programming.
Lead Programmer Wanted
Looking for a lead programmer with Plutus experience to do project management, implement a Chainlink Oracle or something similar, write the Gajim plugin, and help with the modules.
Testing and Documentation Programmer wanted
Looking for a programmer to write tests and documentation.
Yes.
There are several investigations that will take place during this project, such as whether it is viable to use MatterMost's front end to create a Discord alternative based on XMPP. The outcomes of these various investigations will dictate which proposals will be submitted in future rounds.
The milestones mentioned in the project plan will be tracked to gauge project progress.
An easy to setup, easy to use, intuative DAO infrastructure that allows communities to communicate, coordinate and thrive, even in the most remote locations on the planet, whilst providing them access to modern robust and reliable Web3 services in a way that is easy and familial even to those who struggle with technology.
To provide a framework that makes technology work for it's users instead of it's users working for it.
No
I have been in the Web3 space for about 2 years. In this space, I have created the Real World Auditor that is a system that coordinates people to assess the truthfullness of a statement and cadcadGolem which distributes simulation workloads from cadCAD over the Golem network.