Initial documentation
commit
344e97eb40
|
@ -0,0 +1 @@
|
|||
/.idea
|
|
@ -0,0 +1,23 @@
|
|||
# The Grid
|
||||
The Grid is a fork of the Matrix protocol with a different set of core values and a true community management.
|
||||
It aims to be care more for privacy and much more friendly to self-hosted infrastructures.
|
||||
|
||||
## Status
|
||||
We are currently putting it all together before official kickoff.
|
||||
|
||||
See the [Sunrise](https://gitlab.com/thegridprotocol/home/milestones/1) milestone for the current progress.
|
||||
|
||||
## Documents
|
||||
The following bootstrap documents explain what The Grid is in more details, how it came to be, differences with Matrix,
|
||||
how the protocol will be managed by the non-profit and how documentation should take place.
|
||||
- [Project Overview](docs/overview.md)
|
||||
- [Governing Body](docs/governing-body.md)
|
||||
- [Documentation Principles](docs/doc-principles.md)
|
||||
|
||||
## Contact
|
||||
Visit us on:
|
||||
- Matrix
|
||||
- [#thegrid:kamax.io](https://matrix.to/#/#thegrid:kamax.io)
|
||||
- [#kamax-thegrid:t2bot.io](https://matrix.to/#/#kamax-thegrid:t2bot.io)
|
||||
|
||||
- Telegram: [@thegrid_matrix](https://t.me/thegrid_matrix)
|
|
@ -0,0 +1,206 @@
|
|||
# Documentation Principles
|
||||
|
||||
## Scope
|
||||
This document aims to:
|
||||
- Define the value and importance of documentation for the protocol and in the ecosystem
|
||||
- Define key terms
|
||||
- Describe the principles of Documentation processes
|
||||
- Describe the various types of Documentation
|
||||
|
||||
## Concepts
|
||||
We strongly believe in documentation, not because of the documentation itself, but because of what it represents, the
|
||||
values it upholds and a possibly near universal recognition of worth for the knowledge it contains.
|
||||
|
||||
The rest of this document will describe those in details.
|
||||
|
||||
### Proof of Work
|
||||
The expression ***Proof of Work***, shortened to ***PoW***, will be used throughout this document to represent the effort
|
||||
made by someone to articulate and communicate meaningfully about relevant matters towards others. It comes from the
|
||||
[Proof-of-work system](https://en.wikipedia.org/wiki/Proof-of-work_system).
|
||||
|
||||
There is no restriction on the amount of work itself, which can range from near-to-nothing to extensive amounts of time
|
||||
and money. It will directly depend on the situation and the goal of the debate.
|
||||
|
||||
Anyone in the community (including from the boards) who wants to participate in a debate MUST produce ***PoW***.
|
||||
***PoW*** does not mean minimal amount of knowledge. Rather, ***PoW*** means minimal amount of effort.
|
||||
We expect back-and-forth argumentation backed by ***PoW*** as people participate in an exchange of some sort, until no
|
||||
more argumentation can be brought up, which will settle that particular exchange.
|
||||
|
||||
### Documentation
|
||||
The word ***Documentation*** will be used as a generic concept throughout this document.
|
||||
Any document that seeks to be recognized as *Documentation* must incorporate at least one ***PoW***.
|
||||
|
||||
It is defined as something that:
|
||||
- Is available publicly
|
||||
- Is directly reachable using a [URL](https://en.wikipedia.org/wiki/URL)
|
||||
- Is a standalone piece of work, or directly incorporated in one at the same location
|
||||
- Is written in English if text-based
|
||||
- Incorporates at least one ***PoW*** from the concepts below
|
||||
- Can be re-used by others to build on
|
||||
- Provides a publicly accessible channel for feedback
|
||||
|
||||
Examples of Documentation:
|
||||
- A standalone HTML page
|
||||
- A PDF document
|
||||
- An [ODT](https://en.wikipedia.org/wiki/OpenDocument) document
|
||||
- A Gogs/Gitea/Github/Gitlab issue
|
||||
- A comment on an issue
|
||||
- A Cryptpad document
|
||||
- A Google Docs document
|
||||
- A schematic wireframe
|
||||
- A fully rendered and styled visual mockup of a GUI
|
||||
|
||||
Any produced *Documentation* is guaranteed to be reviewed by the governing body in a timely fashion. *Documentation* will
|
||||
therefore become the ideological currency of the project and ensure everyone who worked to produce one will be able to
|
||||
"trade" it for something else (e.g. trade it for the review of the documentation).
|
||||
|
||||
We make no generic requirements on the format, length or overall wording of *Documentation*, as long as the vast majority
|
||||
of the community is happy about it. This is on purpose, following on the issues met so far using a too strict proposal
|
||||
process and we’ll rely on a naturally occurring balance with gentle nudges in the right direction.
|
||||
|
||||
The Technical Board will produce a list of officially recommended formats, way of sharing and provide sample templates
|
||||
for the various fitting use case so people can easily get started. Those will be kept up to date and relevant.
|
||||
|
||||
### Implementation
|
||||
The term ***Implementation*** will refer to the deliverable or the actual product derived from a given *Documentation*.
|
||||
It is a generic term, it's meaning will change depending on the role/occupation of the deliverer.
|
||||
|
||||
Examples of Implementation:
|
||||
- As a software developer: source code
|
||||
- As a graphic designer: Wireframes and mockups
|
||||
- As a User Experience engineer: Guidelines/recommendations
|
||||
- As a system administrator: Install guides, deployment scripts, etc.
|
||||
|
||||
## High-level concepts
|
||||
To ensure successful *Documentation*, it is essential to respect some core concepts that reflect the value of the protocol,
|
||||
its openness and the recognition of ***PoW***.
|
||||
|
||||
The following concepts are how something will be judged as qualifying as a ***PoW***.
|
||||
|
||||
### Extract, organize and materialize thoughts
|
||||
Our experience shows that the human mind tends to underestimate risks, difficulty level and overall workload.
|
||||
Therefore we believe that the act of writing the *Documentation* - regardless how small - simply forces one to think further
|
||||
and in more details about what one tries to accomplish and filters the most basic and unconscious biases.
|
||||
|
||||
### State functional problem to be solved
|
||||
While chat or voice exchanges are good for quick exchanges, it’s easy to lose sight of the actual problem one is trying
|
||||
to solve and the involved scope, or simply not really know what problem is currently be solved. By stating up front the
|
||||
problem, the scope is set and can be enforced in further exchanges.
|
||||
|
||||
### Facts backing
|
||||
**This is *Proof of Work***
|
||||
|
||||
As this is a technical exercise, it is important that any statement that influences choices, like "it is very likely that
|
||||
X happens", be backed up by objective, quantifiable and/or qualifiable facts from an independent source.
|
||||
|
||||
### Usage feedback and usability
|
||||
**This is *Proof of Work***
|
||||
|
||||
Using or testing software/*Documentation* or any kind of item that comes from a ***PoW*** becomes itself a ***PoW*** once
|
||||
that experience is documented.
|
||||
|
||||
This is typically:
|
||||
- Software tests in development cycle
|
||||
- Daily usage from end-users
|
||||
- Bug reports of software of the protocol specification itself
|
||||
- Feature request from end-users
|
||||
|
||||
In addition to load testing, pen-testing, etc, usability focus groups (whether remote or in person), feedback via surveys
|
||||
and suggestion forms provide an excellent opportunity to gain new and sometimes unexpected insights. If the same
|
||||
feature request or complaint appears frequently, it should be considered actionable. Putting together such a compiled
|
||||
list or results of testing provides actionable next steps.
|
||||
|
||||
Ad hoc observations such as “my group found this feature difficult to use” can be logged as an issue and may also be
|
||||
considered; however compiling quantitative evidence (X% of users could not complete an assigned task) is strongly encouraged.
|
||||
|
||||
UX professionals and designers should also be encouraged to submit wireframes, mockups, and process documentation
|
||||
for future functionality. (Not just "what’s broken?" but "what can be dreamed and built?").
|
||||
In this instance, a well-developed use case is considered ***PoW***.
|
||||
|
||||
### Sources linking
|
||||
**This is a *Proof of Work***.
|
||||
|
||||
As facts must come from external sources, it is critical to include links to those sources, so anyone evaluating the
|
||||
document can have access to the same information as the author without having to research the data themselves.
|
||||
|
||||
### Proposed solution
|
||||
**This is a *Proof of Work***.
|
||||
|
||||
Once the problem to be solved and the scope are documented, one will describe the proposed solution that solves the
|
||||
stated problem/issue.
|
||||
Next to the description of the solution, one MUST reiterate in a short conclusion how the solution effectively solves
|
||||
the problem.
|
||||
|
||||
### Rationalisation
|
||||
**This is a *Proof of Work***.
|
||||
|
||||
As one goes through the proposed solution, one will use the various facts and/or linked sources to justify the proposed
|
||||
solution. One CANNOT rely on common knowledge, as this is a cognitive bias. On the other hand, one is free to rely on
|
||||
required knowledge.
|
||||
|
||||
Example: If describing an HTTP endpoint, one may have to justify the validity of the HTTP choices made (POST vs PUT, etc.),
|
||||
but one will not have to justify TCP principles.
|
||||
|
||||
### Implementation
|
||||
**This is a *Proof of Work***.
|
||||
|
||||
This validates the proposed solution with an actual Implementation and ensures that the theoretical outcome is feasible
|
||||
in practice, as a real product for real users.
|
||||
|
||||
### Peer convincing
|
||||
**This is a *Proof of Work***.
|
||||
|
||||
Proposals should be written in a way that one attempts to convince others that the proposed solution is the correct one,
|
||||
instead leaving the fact checking work to their reviewing peers.
|
||||
One MUST NOT assume they are correct to start with. They MUST convince others of the validity of their claims using the
|
||||
elements described above.
|
||||
It MUST be easier to read the proposal than to write it.
|
||||
|
||||
## Types
|
||||
*Documentation* will be divided into several types, each having their own requirements and goals.
|
||||
Except for The Protocol Specification, any of those *Documentation* can be put forward by the governing body or by the
|
||||
community.
|
||||
|
||||
Types are not mutually exclusive and a single *Documentation* can be of several types.
|
||||
|
||||
The various types will outline the various stages/steps of the overall process which is a recurring cycle:
|
||||
1. Guides/Recommendations/Templates and The Protocol Specification allow Implementations to be made
|
||||
2. Implementations trigger Issues/Bug reports/User feedback
|
||||
3. Issues/Bug reports/User feedback trigger Research/Analysis
|
||||
4. Research/Analysis inspire Guides/Recommendations/Templates and Proposals
|
||||
5. Proposals aim to enhance Guides/Recommendations/Templates and The Protocol Specification - Back to first step.
|
||||
|
||||
### Issue/Bug report/User feedback
|
||||
This kind of *Documentation* will mostly rely on [Usage feedback and usability](#usage-feedback-and-usability).
|
||||
|
||||
**Example**: Request to clarify recommended setup for synapse (Github issue).
|
||||
|
||||
### Research/Analysis
|
||||
This kind of *Documentation* will mostly rely on [Facts backing](#facts-backing), [Sources linking](#sources-linking) and
|
||||
[Peer convincing](#peer-convincing). It can be produced by anyone and will be the primary backing work for other *Documentation*.
|
||||
|
||||
**Example**: Matrix Server ACL addition analysis ([Github gist](https://gist.github.com/maxidor/b25769f1a89c8860b928babe795bbaaf)).
|
||||
|
||||
### Guide/Recommendation/Template
|
||||
This kind of *Documentation* will mostly rely on [Usage feedback and usability](#usage-feedback-and-usability) and
|
||||
[Proposed solution](#proposed-solution).
|
||||
|
||||
**Example**: Matrix stack installation guide ([Github repo](https://github.com/PC-Admin/PC-Admin-s-Synapse-Setup-Guide)).
|
||||
|
||||
### Proposal
|
||||
This kind of *Documentation* will mostly rely on [Proposed solution](#proposed-solution), [Rationalisation](#rationalisation)
|
||||
and [Peer convincing](#peer-convincing).
|
||||
|
||||
**Example**: Matrix client auto-discovery ([Google Docs](https://docs.google.com/document/d/1vF-uWlUYmf1Xo161m871H1upJbwiIPeikWGWzaE_lrU)).
|
||||
|
||||
### Implementation
|
||||
This kind of *Documentation* will mostly rely on [Facts backing](#facts-backing) and [Implementation](#implementation).
|
||||
|
||||
**Example**: any software implementation following a protocol specification.
|
||||
|
||||
### The Protocol Specification
|
||||
The Protocol Specification will be one of the final products and the most important deliverable for the Governing Body.
|
||||
|
||||
As a special authoritative document, its main Proof of Work will be "delayed" and mostly contained in its ability of
|
||||
[Peer convincing](#peer-convincing) and being backed by two independent [Implementation](#implementation), adding to a
|
||||
total of three independent *Documentations* (one is the specification, two are the implementations).
|
|
@ -0,0 +1,181 @@
|
|||
# Governing Body
|
||||
|
||||
## Scope
|
||||
This document will outline the high level concepts and guidance principles of the governing body of The Grid that will
|
||||
be used for the articles of constitution.
|
||||
|
||||
This document will NOT go into details of how day-to-day management will happen, which will be left to the discretion
|
||||
of the Governing Body.
|
||||
|
||||
## Legal entity
|
||||
The Governing Body will be a non-profit organisation, funded in Luxembourg, as an Association sans but lucratif by Max
|
||||
Dor (author of this document), Daily Manager of Kamax Sarl, and two other people (TBC, people that are known personally,
|
||||
but not necessarily technical), as legally required.
|
||||
|
||||
Non-profit status will ensure that all activities and incomes must be legally targeted to fulfil the missions of the
|
||||
non-profit without being subdued by making a profit for its shareholders, as opposed to a for-profit which its sole
|
||||
purpose is to make profit and distribute it to its shareholders.
|
||||
|
||||
Non-profit gives a better framework for donations or voluntary work, without the need for extensive accounting or legal
|
||||
requirements overall, giving much more freedom in the day-to-day running of the organisation and helps keeping management
|
||||
costs to a minimum, which would otherwise add up to several thousands Euro per year.
|
||||
|
||||
The legal entity will be used to centralize ownership of various protocol IP materials, like Internet domains, trademarks,
|
||||
logos. The source code of any tools built by or on request of the legal entity will remain the IP of their respective owners.
|
||||
|
||||
## Missions
|
||||
The Governing Body will have the following missions:
|
||||
|
||||
### Regular protocol specification releases
|
||||
A protocol is only defined by its specification, and its delivery in a clear, comprehensive, validated and usable format
|
||||
by the widest technical audience is the most important mission.
|
||||
|
||||
The Governing Body exists in fine for the sole purpose of this deliverable and should be judged on it.
|
||||
|
||||
### Provide adequate environment, tools and hosting
|
||||
The Governing Body will provide:
|
||||
- A documented vision for the protocol
|
||||
- What is reasonably necessary for its boards to fulfill their responsibilities
|
||||
- What is reasonably expected from the community about such entity with a similar mission
|
||||
- End-users software, tools and services to showcase the protocol usage and goals
|
||||
- Development software, tools, documentation and services to ensure independent implementations are possible and straightforward
|
||||
- Means and services to discuss, exchange, and learn about the protocol
|
||||
- Guidelines and processes for protocol changes and community contributions, ensuring these are always welcoming,
|
||||
as easy as possible, and as rewarding as possible.
|
||||
|
||||
### Community management
|
||||
Ensure:
|
||||
- A Community Manager which will always be available and reachable
|
||||
- The community is proactively kept up to date of changes and achievements
|
||||
- Officially-managed places are properly and timely moderated
|
||||
- Feedback from The Community, however bad or good, is always taken into consideration
|
||||
|
||||
### Protocol fostering
|
||||
Proactively engage into activities to:
|
||||
- Make the protocol known by as many people as possible (website, social medias, conferences, etc.)
|
||||
- Convince end-users to use the protocol (demos, webcast, etc.)
|
||||
- Convince developers to build on the protocol
|
||||
- Grow the community at large
|
||||
|
||||
## Funding
|
||||
The Governing Body should only be founded on donations from the community. This will be a critical dynamic for this
|
||||
project, as it will ensure the community has a clear and straightforward way to show its support and general agreement
|
||||
with how well the Governing Body is doing.
|
||||
|
||||
All donations will be listed and made public. Donors that have made a donation with significant amount (> X€ over X months)
|
||||
must be publicly disclosed as they can use it as leverage to achieve their own goals. Donations MUST NOT be conditional
|
||||
to any delivery, service or related item. Donations MUST be without any string attached.
|
||||
|
||||
While sponsoring is occasionally acceptable, full disclosure about the transaction, including the contract, MUST be
|
||||
publicly disclosed. Contracts that conflict with this full public disclosure clause MUST be refused. Signatures, emails,
|
||||
contact numbers will be removed before public disclosure.
|
||||
|
||||
Sales of goods and services are acceptable, as long as:
|
||||
- They are legally acceptable for the non-profit
|
||||
- The majority of income is not tied to a minority of customers
|
||||
- Do not interfere or take priority in any way with the missions and responsibility of the Governing Body outlined in this document
|
||||
|
||||
The Governing Body will give full disclosure about incomes on a regular basis (TBD, quarterly?), so it can be audited by the community at large.
|
||||
|
||||
## Financing
|
||||
The Governing Body will be allowed to use its funds to:
|
||||
- Pay a regular salary to management board members
|
||||
- Give financial compensation to technical board members, after approval from management board and technical lead, to
|
||||
ensure they can afford dedicated time and give an incentive to remain a member
|
||||
- Pay for the various fundamental technical services (Domains, web hosting, etc.)
|
||||
- Finance trips and related expense to social events which are relevant for the boards’ missions (e.g. FOSDEM stand)
|
||||
- Finance individual missions with independent contractors/orgs that may have dedicated knowledge into one area, to further
|
||||
progress the protocol (e.g. a security/crypto consultant for end-to-end encryption, or security audit)
|
||||
|
||||
The Governing Body WILL NOT be allowed to provide funds to any entity listed as an employer or of significant involvement
|
||||
with any of the boards’ members. This will ensure no board member will have an incentive to redirect the Governing Body
|
||||
money for its own profit.
|
||||
|
||||
The Governing Body will give full disclosure about spending on a regular basis (TBD, quarterly?), so it can be audited
|
||||
by the community at large.
|
||||
|
||||
## Leadership
|
||||
The leadership of the non-profit will be divided into two boards:
|
||||
- Management board
|
||||
- Technical board
|
||||
|
||||
Membership of those boards are not mutually exclusive, and one person can be a member of both. Each board will have
|
||||
specific, non-overlapping responsibilities.
|
||||
|
||||
We recognize and even value that no one can be 100% neutral and therefore might try to push their own agenda, even if
|
||||
unconsciously. We see this as a driving force as members would have a reason and a motivation to be there and is not a
|
||||
negative thing on its own.
|
||||
|
||||
As a user, developer, sysadmin, member or donator, it is very important to be able to make an informed decision about
|
||||
whether one should continue contributing in its own way to the project. This starts by knowing who the people in charge
|
||||
are, what allegiance they might have and the laws they are bound to.
|
||||
|
||||
Therefore, every member of each board must disclose the following on public record:
|
||||
* Name (not necessarily full legal name, but not an obscure nickname either, like “l33t1337”)
|
||||
* Employment status with position and employer if applicable
|
||||
* Significant (paid and/or with decision making level) involvements in other organisations of any kind
|
||||
* Country of legal residence
|
||||
|
||||
Members will be listed on the main website of the protocol project page, along with the latest up to date information.
|
||||
|
||||
### Management board
|
||||
This board will be made from members of the legal entity and will take on the following responsibilities:
|
||||
- Management of the non-profit legal entity
|
||||
- Accounting
|
||||
- Finances
|
||||
- Promotion of The Grid
|
||||
- Ensure the governing body’s missions are fulfilled
|
||||
- Functional (high-level, non-technical) steering of the protocol
|
||||
- Community management
|
||||
|
||||
Eligibility:
|
||||
- Legal member of the non-profit
|
||||
|
||||
Membership starts:
|
||||
- By vote of all current board members
|
||||
|
||||
Membership ends if either of the following occurs:
|
||||
- Of their own will, at any time
|
||||
- By vote of all other board members
|
||||
|
||||
### Technical Board
|
||||
This board will be made of people who have written implementations of the protocol and thus can have an informed,
|
||||
knowledgeable and authoritative view about the technical choices to be made and decisions to be taken.
|
||||
|
||||
This board’s members will be made of:
|
||||
- One lead member, called “The Lead”
|
||||
- An number of other members, called “The Members”
|
||||
|
||||
The board will decide on a tie-breaking mechanism for decisions.
|
||||
|
||||
The lead will take on a “back-seat” role, only giving his final opinion/choice/vote after everyone else has. The Lead
|
||||
will have a special role as a spokesperson of the technical board, both towards the management board and the community.
|
||||
|
||||
The lead can only be voted in by the management board which MUST seek a written list candidates from the technical board.
|
||||
The lead can only be voted out by the technical board and MUST, prior to voting, seek a written opinion about it from the management board.
|
||||
This will ensure that both boards agree on The Lead being a good fit for the role and that potential abuse is kept under control.
|
||||
The board CANNOT contain more than one member that have financial ties with a specific entity. This will ensure the board
|
||||
cannot be taken over in the long term by a single employer/corporation/organisation.
|
||||
|
||||
Responsibilities:
|
||||
- Production of the protocol Specification
|
||||
- Production and maintenance of an implementation validation tool to certify those implementations as protocol compliant
|
||||
- Technical steering of the protocol, to fulfil the functional goals
|
||||
- Review of community proposals
|
||||
- Proactively ensure enough implementations exist to keep the protocol validated
|
||||
|
||||
|
||||
Eligibility:
|
||||
- Be the main author of at least one maintained (compliant with the current or previous version of the protocol) component implementation
|
||||
- Submitted at least one protocol change that has been accepted in the official documentation in the last X months
|
||||
- Commitment to be available X business days per week, except when on justified leave
|
||||
|
||||
Membership starts:
|
||||
- By vote of all current technical board members
|
||||
|
||||
Membership ends if either of the following occurs:
|
||||
- Of their own will, at any time
|
||||
- By vote of all current technical board members
|
||||
- By failure to disclose any potential conflict of interest, enforced by the management board if necessary
|
||||
- By failure to be available as required, enforced by the management board if necessary
|
||||
- By failure to keep their implementation maintained, enforced by the management board if necessary
|
|
@ -0,0 +1,177 @@
|
|||
# Overview
|
||||
|
||||
## Scope
|
||||
This document aims to provide background on:
|
||||
- Why/how The Grid project came to be
|
||||
- Its intended goals and values
|
||||
- Differences with the Matrix protocol
|
||||
- The high-level methodology/processes we want to put in place to ensure this protocol and project are successful
|
||||
- The set of first priorities that will be worked on
|
||||
|
||||
## Origin
|
||||
As independent developers on the Matrix protocol, we decided to pursue an alternative approach and set of goals and
|
||||
provide a fresh set of eyes and solutions to the remaining challenges the protocol is trying to solve.
|
||||
|
||||
We have spent to this day over 18 months learning, analyzing and reverse-engineering the Matrix protocol, implemented
|
||||
nearly all components with various use cases, granting us extensive knowledge about its:
|
||||
- Strengths and weaknesses
|
||||
- Current limitations
|
||||
- Security vulnerabilities, both used and hypothetical
|
||||
|
||||
While we will like to take an alternate road from the Matrix protocol and become a stand-alone protocol, we believe in
|
||||
the fundamental concepts and the building blocks and will keep The Grid protocol in line with those for the time being.
|
||||
|
||||
## Goals
|
||||
The protocol will aim for the following goals:
|
||||
- Solve the problem originally identified by the Matrix protocol, fragmented communications, engaging it from a social
|
||||
point of view.
|
||||
- Simple client implementations, relying on the server for heavy lifting
|
||||
- Federated communication between servers
|
||||
- Decentralized data storage, spread across participating servers
|
||||
- Designed for a full self-hostable stack to avoid centralization and/or monopoly
|
||||
|
||||
## Values
|
||||
### Protocol
|
||||
- Libre (Free) and Open protocol where its contributors and users are empowered
|
||||
- Privacy of data and metadata
|
||||
- Security of data and of the network
|
||||
- Data exchange relying on a federated network, allowing everyone to spin-up a server and provide the service to a set of users
|
||||
- Decentralized data storage, ensuring no single point of failure
|
||||
|
||||
### Management
|
||||
- Transparency and openness around any talk, design session, workshop, meetings and any other related activity for the
|
||||
protocol, without secretive or confidential sessions
|
||||
- Clear, understandable specification documents are the top priority and the main deliverable. A protocol is nothing
|
||||
without a specification.
|
||||
- Taken actions and their consequences are used in evaluation, instead of intent.
|
||||
- Decisions are backed with documented facts/feedback/issues
|
||||
|
||||
### Documentation
|
||||
Documentation will be considered a generic term. Complexity, size, format and shape will be scoped to what is deemed
|
||||
appropriate by the Governing Body for the various use cases.
|
||||
|
||||
As a protocol only exists in its specification and the only seeked resource, documentation will hold a special place for
|
||||
this project and acts as the currency in spirit of the project, with various value depending on its complexity, size,
|
||||
format, shape, use case and scope at hand.
|
||||
|
||||
It will also be used to enforce various good practices and force facts checking.
|
||||
More details will be given in a separate, dedicated document to Documentation.
|
||||
|
||||
## The Grid vs Matrix
|
||||
### Differences
|
||||
#### Core values
|
||||
Matrix’s ideals are Openness, Decentralization and Encryption [1](#links-and-sources) while The Grid’s ideals are
|
||||
Freedom, Privacy and Security.
|
||||
|
||||
We see Matrix ideals as a subset of The Grid: While Matrix attempts to only solve the technical problem of fragmented
|
||||
communications, The Grid wants to solve the problem at a social level, a higher level which includes the technical one.
|
||||
|
||||
While Matrix values and licenses align with the ideals of Open Source, The Grid would follow those of Libre (Free) software.
|
||||
This would ensure that users and their rights are the focus and put at the center of each decision, instead of limiting
|
||||
the discussion to technical matters only.
|
||||
|
||||
We believe in a social gain with The Grid protocol rather than technical or monetary gain, which should be reflected in
|
||||
its own ecosystem.
|
||||
|
||||
#### Actors
|
||||
Given the social purpose of the protocol, we believe involvement, participations and decision making should reflect the
|
||||
social nature of the protocol.
|
||||
|
||||
Therefore, we want to put in place an ecosystem where anyone has a mean to express their opinion, provide feedback, or
|
||||
contribute to the project itself. Making sure that no single entity is in a position of power alone. Instead, several
|
||||
entities are in place to keep each other in check.
|
||||
|
||||
The creators of this protocol will initially stand alone in a position of power to bootstrap the ecosystem. Afterwards,
|
||||
the newly-created non-profit will provide within its articles the requirements to join the various boards and decision
|
||||
groups. See the Governing body section for more details.
|
||||
|
||||
#### Documentation
|
||||
Matrix relies on reverse-engineering reference implementations since its creation 4 years ago, and has yet to produce a
|
||||
version of its documentation that can be used to implement a full set of usable and interportable implementations.
|
||||
A new spec proposal process was put in place but we believe it does not address the existing issues that led to the
|
||||
current situation.
|
||||
|
||||
The Grid will therefore take a different approach and attempt to turn documentation into something positive and rewarding
|
||||
for contributors and implementers, while putting processes and limits to avoid stagnation and status-quo.
|
||||
It will also take the approach that the spec (the end-result) is to be implemented by at least two projects, independent
|
||||
of each other, to ensure that the documentation and the specification are not academic exercises, but real-world and
|
||||
problem-solving.
|
||||
|
||||
This practical approach where contributors/implementers can see their work be used and recognized, is an example of a
|
||||
rewarding experience for those who wish to contribute to the project.
|
||||
|
||||
### Which is better?
|
||||
We don’t believe one is better than the other - The Grid and Matrix will each follow different values and a different
|
||||
type of management.
|
||||
|
||||
While they will most likely solve technical problems in different ways, The Grid will initially build from what Matrix
|
||||
is today and re-use existing and validated documentation. APIs like Client, Application services and Identity service
|
||||
will remain compatible in the short term as the focus will be on producing a usable document that describes the server
|
||||
protocol, which Matrix currently doesn’t have.
|
||||
|
||||
As The Grid and Matrix will both have concepts of Application Services and therefore Bridges, linking both protocols and
|
||||
network will be a property that will be heavily leveraged on The Grid side to smooth out any transition or API change
|
||||
that would make the two protocols otherwise incompatible and unable to exchange data.
|
||||
|
||||
If you believe in the same values and ideas as we do, we’ll be happy to have you help us with The Grid.
|
||||
|
||||
## Next steps
|
||||
The high level steps are:
|
||||
- Creation of a non-profit to kick-start, grow, foster and maintain The Grid protocol.
|
||||
- Document all the concepts and network exchanges.
|
||||
- Ensuring that at least two independent implementations validate the documentation.
|
||||
|
||||
### Governing body
|
||||
To ensure the protocol is free of control from a single entity and that the users are empowered to control it, a non-profit
|
||||
organisation will be created to represent the protocol lead and will be funded on donations.
|
||||
|
||||
This body will be created as soon as possible as we believe it is key to ensure neutrality in a communication protocol.
|
||||
|
||||
This governing body will be created using public and community-reviewed articles and will put in place technical board(s)
|
||||
composed of key entities from the community to fulfill its mission.
|
||||
|
||||
This governing body will have for mission to ensure the protocol fostering and that its management values are respected
|
||||
and followed.
|
||||
|
||||
Details about this controlling body, its missions and its proposed articles for creation are available in [a separate
|
||||
document](governing-body.md).
|
||||
|
||||
### Initial Documentation
|
||||
We recognize the hard work, effort and engineering level of the current Matrix protocol and wish to build on that,
|
||||
instead of starting from scratch. We also believe that having a documentation of the as-is is key for people to contribute
|
||||
constructively and avoid an unfair amount of work spent on reverse-engineering implementations to reach a level of
|
||||
understanding sufficient to even start meaningful discussions/contributions to improve the protocol.
|
||||
|
||||
The biggest lack of documentation is currently the as-is for the server protocol, which deals with internal structures
|
||||
of a Homeserver, the federation exchanges, the DAG model and its underlying algorithms. It is therefore not possible
|
||||
to build on an existing documentation for those core concepts.
|
||||
|
||||
As the current federation protocol has several critical security vulnerabilities like state resets which have been used
|
||||
in attacks [2](#links-and-sources) [3](#links-and-sources) on the live network, and very few underlying algorithms and
|
||||
endpoints have been documented, we will take this opportunity to attempt creating internal structures and federation
|
||||
exchanges that are immune to those known vulnerabilities, while holding back on any kind of optimization that would
|
||||
require re-engineering on working, secure and tested concepts.
|
||||
|
||||
As all this will be done in the open, as per our core values, current issues to be addressed will be documented and
|
||||
labeled appropriately so anyone in the community can offer a documented technical solution for them. We believe that
|
||||
fresh sets of eyes and brains are required to solve those vulnerabilities.
|
||||
|
||||
Work has already been started on this and is currently being committed to this Github repository, and a generated online
|
||||
version is also available. This work will be relocated under the newly The Grid organisation repositories very soon.
|
||||
|
||||
### Independent implementations
|
||||
Meanwhile, we will encourage, foster and proactively seek that independent entities implement the protocol using its
|
||||
latest documentation.
|
||||
|
||||
We believe that a communication protocol that does not have at least two independent implementations is fundamentally
|
||||
dysfunctional, as its contributors and governing body have failed to communicate to or be understood by other parties
|
||||
about its worth, merit and the related technical knowledge.
|
||||
|
||||
In the near and middle term, emphasis will be put on the various protocol efforts to not diverge too much too fast from
|
||||
the Matrix protocol. Independent implementers will be able to easily and painlessly implement The Grid as well, ideally
|
||||
in an invisible manner for the end user.
|
||||
|
||||
## Links and Sources
|
||||
[1]: https://matrix.org/blog/home/ - “Support Matrix Today” section
|
||||
[2]: https://matrix.org/blog/2018/05/01/security-update-synapse-0-28-1/
|
||||
[3]: https://matrix.org/blog/2018/06/14/security-update-synapse-0-31-2/
|
Loading…
Reference in New Issue