A strategy for development of p2p economic network infrastructure

tl; dr
The strategy that follows is a proposal to develop a decentralized economic network - meanwhile being able to guarantee an economic sustainability to develop a stable release and in the long term to build an open source environment not dependent on a single team of developers.

The goal is to create the first app to allow people to act as nodes in p2p economic networks.
By installing and configuring the app for their needs, individuals and groups will have the opportunity to appear in the network and have social, economic and political relations with the other nodes, without any authority in the middle of the conversation.
Later, other groups or individuals will be able to use or fork the app and adapt it according to specific political and economic decisions, implement new features or modify existing ones, define new political and governance protocols or experiment with new economic models. The software will be open source from the beginning.

Recommended resources

Plan for financial support

The plan consists of 2 main steps.
The first step concerns the financing of the generic economic server development of a node in the economic network, gathering together requirements from key pilot projects, in order to cover a strategic range of economic needs.

From now on, the economic server will be called pub and identify the main app by which an agent appears on the network and uses to perform economic activities.

The pub will have a solid foundation that will implement a suitable economic vocabulary to meet the general needs of an economic network and at the same time we will develop a dashboard to use it according to the needs of each specific groups chosen for the first round of use-case.

To achieve this goal, we will choose from 2 to 5 pilot projects to be implemented in the first phase.

The pub will contain the features necessary to satisfy the user journeys that will be defined with each pilot project, which will finance the development of the first phase or will help in several other ways (communication, development, infrastructure, hospitality, etc)

The second phase, instead, suggests a methodology for decentralizing software development and customization according to specific needs of different groups.

First phase: Pilot.

Requirements

  • 3 full-time senior developers
  • Support from Mikorizal
  • 18 months
  • Affiliation with 2 to up 5 communities / groups as Pilot projects (a group can be a cooperative, a local project, a service, an ethical bank, a squat, a cultural center, a FabLab, a small municipality, …)

Pilot project proposals:

  • Coopshares
  • MAN - Mutual Aid Network
  • MACAO

Budget

€ 200.000
Budget will be provided by the groups that will be choosen for the pilot.
The budget will be used to pay 18 months of development for 3 full-time senior developers, who will lead the project development team, cover the costs of a test / development infrastructure and pay external support/consultancies.

Pilot Roadmap

The first part of the roadmap will serve to create the minimum working structure of an economic p2p ecosystem, in accordance with the requirements previously collected from the pilots.
After completing the first phase of the roadmap, the software will be ready for any individual / group to install the node, create its own user and appear in the network.
During the creation phase of the user, it will be possible to define the type: individual or group.
In the case of creating a group-type agent, it will be possible to determine membership parameters and roles.
Once the agent is created, it will be possible to publish offers / requests / proposals, respond to offers / requests / proposals from other users and enter into agreements that may lead to the subsequent creation of an economic event.
Among the various types of economic events available, in the first phase of the roadmap we will focus on creating:
transfers of resources / assets / credits between two users.
This type of event will allow the implementation of a social wallet within the economic system and the possibility of creating agreements for the exchange of any type of resource or asset between 2 nodes.

Macro user stories

  • As an agent I want to setup a new node of the p2p economic network
  • As an agent I want to create my profile (I want to specify extra parameters, like roles and accessibility)
  • As an agent I want to have relationships with other agents of the network
  • As an agent I want to transfer to resources (goods, assets, currencies, credits) between 2 agents
  • As an agent I want to publish an intent (Intents can be Requests for somebody else)
  • As an agent I want to publish an event on the network (for example, I baked a pie.)
  • As an agent I want to create an agreement with another agent (Intents may trigger to Conversation for Action.)

During the remaining 6 months of the roadmap, the focus will be on customizing the previously developed dashboard, in accordance with the requirements of each pilot project and on the development of dedicated feature requests, a part of the 6 months will also be necessary to create translators, a software component necessary to make compatible data structures of third parties software in the economic network.

At the end of the 18 months, each pilot project can perform the flow defined in its user journey.
The economic network node will be open source, ready to be used or extended.

Tech overview

There are 3 main components that will be developed in the first 18 months:

  • Economic Pub
  • Dashboard
  • Economic Translator for each third service

Here an overview of a possible pub connected with third part services…

Economic Pub

The economic pub is a server that incorporates ActivityPub, and extends its syntax (ActivityStream) to handle economic events specified above.
It will also implement an authentication system (still to be defined).
The software on which it is based is pub of the commons, a fork of pleroma written in Elixir.
The economic pub will communicate with the frontend through a GraphQl layer.

Dashboard

The dashboard is the client used by the user to manage their profile and do activities within the network.
It is written in React, and will be based on the use of a component library already partially developed and tested for this product.
Part of the dashboard is already developed and adopted within the faircoop ecosystem to organize workflow and distribute value to participants.

Economic translator

The translator is a software written specifically to make compatible data structures of third-party software, with the economic syntax of ActivityStream; in order to share data from other software correctly in the economic network.
So many translators will exist as many third-party services included in the architecture of each node.
Each node can create other translators to include other software in the economic network.
The translators developed in the roadmap will be those necessary for the user journeys of the chosen pilot projects.
Examples of translators are:

  • The translator for Coopshares FairChain
  • The translator for Dyne’s social wallet
  • The translator for the API of Bank of the Commons

Second phase: Development and diversification

At the end of the 18 months, each person or group can setup his own node and participate in the network.
The available features will be those developed for the pilot projects that participated and financed the first phase.

The features provided in the user journeys, however, may not cover all the needs of a finished product.
Once the first phase of the roadmap has been completed, each pilot project will have to independently continue the necessary development.
The core team should take care to write the documentation of the work produced and to cover production code with tests , to simplify the life of devs who will go to work later on the code.
We can then include an optional training period for the devs, to cover the basic concepts of both vision and technical infrastructure.
The initial team can decide to continue the work of maintaining the first pub, extend the documentation, support the development of other nodes through training / consulting, create third-party services or decide to join teams to work on specific pub implementations for groups .

It will be anyway essential to be able to have a balance between the two actions:

  1. On the one hand having a stable team that works and maintains the first pub up-to-date and continues to implement new features and update the documentation. The work of this team will also be to cure and evolve a heterogeneous community around the construction of a p2p economic network, not limited only to developers, but which includes and encourages the entry of different professionals who can make a complete contribution in line with the principles of the integral revolution: politicians, anthropologists, economists, etc …
  2. On the other, make sure that medium / large projects (starting from those who participated in the pilot) have a proper team to develop needed features and maintain the infrastructure.

The activities foreseen in the second phase include:

  • Create a community (devs and other specialists) that can stimulate and develop new ideas / visions / features / models
  • Create and maintain the documentation of the pub and the p2p economic network
  • Create an economic packages manager, (a kind of features / tools marketplace) to allow the exchange and implementation of modules, developed by other developers within the ecosystem.
  • Create a support / consultancy service for devs & groups who want to implement the pub
  • Promote the creation of devs teams to work on specific implementations and customizations of a pub

The goal of the second phase is to enable new programmers to develop components/apps, so that each group / community can have its own developer (or team of developers) that manages the requests, in total autonomy from all sorts of central development teams.


Special thanks to Bob Haugen, Lynn Foster and Alekos for proofreading, content improvements, ideas.