Skip to content
This repository has been archived by the owner on Jul 6, 2020. It is now read-only.

Update decision-making-processes.md #138

Closed
wants to merge 17 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
188 changes: 166 additions & 22 deletions decision-making-processes.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,179 @@
Here is the start of a description of the decision making process for the variety of decision types. Deciding how to decide is a work in progress that is being refined.
# Abstract
This document defines the formal governance process for Solid, and records how this has changed over time. Currently, governance is based around Solid Team who consult the Solid Panel for their opinion via a vote on occasion.

The Solid Leader needs to give final approval the decision making process for each category of decision including who can decide on what to the decision to hold legitimacy.
The Solid Team has broad authority, which they seek to exercise as rarely as possible. The Solid Leader (who is in the Solid Team) needs to approve any decision making processes for it to be legitimate and the Solid Leader can veto decisions at any point.

Some decisions can be made purely by the Solid Leader; however, there are many decisions at a lower category of important for which it would be useful to have a legitimate process that could always be blocked by the Solid leader. The operations of legitimate process could be [...?]
This document is to be reviewed when there are one thousand eligible candidates for the Solid Panel (see description of Solid Panel below).

Types of decisions include:
* Who is on the Solid team?
* How to make a change to the Solid spec?
* How to start a Solid Project?

Possible candidates for the Decision Panel, that could be adapted according to the type of decision include:
# Scope
The scope of Solid governance includes but is not limited to changes to:
* The Solid specification
* Solid test suite
* [Solid roadmap](https://github.com/solid/information/blob/master/solid-roadmap.md)
* [Solid Projects](https://github.com/orgs/solid/projects) i.e. a GitHub project in the Solid Github account
* Communication channels to use for Solid conversations



# [The Solid Team]
The Solid Team is a 5 person trusted group who manage Solid, which currently consists of:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"manage" has many meanings; what do we mean?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Management scope is covered in the section #Mandate

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Best to link that word to the relevant section then

* Tim Berners-Lee
* Mitzi László
* Kjetil Kjernsmo
* Ruben Verborgh
* Justin Bingham

The Solid Team assume [defined roles](https://github.com/solid/information/blob/master/solid-team.md) required to achieve the Solid project's goals, especially those that require a high level of trust. The defined [roles and responsibilities](https://github.com/solid/information/blob/master/solid-team.md) as well as individuals appointed were defined by open suggestions by anyone on a Github pull request which were ultimately approved by the Solid Leader, Tim Berners-Lee.

The first Solid Team including Mitzi László, Kjetil Kjernsmo, Ruben Verborgh, and Justin Bingham is appointed directly by the Solid Leader for a five year appointment.

## Mandate
The Solid team shall work to:
* Maintain the quality and stability of Solid
* Make contributing as accessible, inclusive, and sustainable as possible
* Establish appropriate decision-making processes
* Seek consensus among those building on Solid and using Solid before acting in a formal capacity
* Act as a court of final appeal for decisions where all other methods have failed
* Coordinating the definition of the Solid values
* Coordinating the definition of the Solid specifications including from technical, legal, and design perspectives
* Providing examples of the Solid specification under open source licensing
* Promoting awareness of Solid
* Coordinating the several parties implementing the Solid specification
* Coordinating the development of a Solid Test suite to automate the checking of compliance of solutions to the Solid specifications
* Providing an updated list of Solid solutions

## Powers
The Solid Team has broad authority to make decisions about Solid. For example, they can:
* Formally accept or reject suggestions (usually in the form of a GitHub pull request or issue)
* Enforce or update the Solid project's code of conduct
* Manage Solid assets and infrastructure, including the Solid Github organisation and repositories, the bug tracker, mailing lists, conversation channels etc.

However, the Solid Team cannot modify this decision making process or affect the membership of the Solid Panel (see below for description of Solid Panel), except via the mechanisms specified in this decision making process document.

The Solid Team should look for ways to use these powers as little as possible. Instead of voting it's better to seek consensus. Instead of ruling on individuals it's better to define standard processes for decision making. It's better to establish a Code of Conduct committee than to rule on individual cases, etc.

To use its powers, the Solid Team votes. The Solid leader can always veto the voting outcome. Every Solid Team member must either vote or explicitly abstain. Members with conflicts of interest on a particular vote must abstain. Passing requires a strict majority of non-abstaining Solid Team members.

Whenever possible, the Solid Team's deliberations and votes shall be held in public.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cases where this is not possible are…?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You mean the Solid leader veto or that the deliberations of the Solid Team being public?

Do you have cases in mind?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It says "whenever possible", so I'd want to make that explicit, or maybe remove if no cases exist. I don't see any (unless urgent security bugs).


## Electing the Solid Team
Following Solid Teams will be appointed through election. A Solid Team election consists of two phases:
* Phase 1: Candidates advertise their interest in serving. Candidates must be nominated by a Solid team member. Self-nominations are allowed.

* Phase 2: Each individual on the Solid Panel can vote for zero to five of the candidates. Voting is performed anonymously. Candidates are ranked by the total number of votes they receive. If a tie occurs, it may be resolved by mutual agreement among the candidates, or else the winner will be chosen at random.

Each phase lasts one to two weeks and should be publicly communicated. The election process is managed by the Election Manager nominated by the outgoing Solid Team.

The Solid Team should ideally reflect the diversity of individuals building on Solid and using Solid. The Solid Decision Panel is encouraged to vote accordingly.

## Term
A new Solid Team is elected after five years.

## Vacancies
Solid Team members may resign their position at any time.

Whenever there is a vacancy during the regular Solid Team term, an election will take place as described above to appoint a replacement to serve out the rest of the term.

If a Solid Team member drops out of touch and cannot be contacted for a month or longer for reasons other than sick leave or pregnancy leave, then the rest of the Solid Team may vote to initiate an election as described above.

Solid Team members may take sick leave or pregnancy leave and an election will take place to appoint an interim individual.

## Conflicts of Interest
Solid Team members are trusted to act in the best interests of Solid rather than themselves or their employers, the mere appearance of any one company dominating Solid development could itself be harmful and erode trust . In order to avoid any appearance of conflict of interest, at most 2 members of the Solid Team can work for any single employer. This does not apply for the first appointment of the first Solid Team because there is a single dominant employer working on Solid at the time.

In a Solid Team election, if 3 of the top 5 vote-getters work for the same employer, then whichever of them ranked lowest is disqualified and the 6th-ranking candidate moves up into 5th place; this is repeated until a valid Solid Team is formed.

During a Solid Team term, if changing circumstances cause this rule to be broken (for instance, due to a Solid Team member changing employment), then one or more Solid Team members must resign to remedy the issue, and the resulting vacancies can then be filled as normal election.

## Vote of No Confidence
In exceptional circumstances, it may be necessary to remove someone from the Solid Team against their will. (For example: egregious and ongoing code of conduct violations.) This can be accomplished by a Solid Panel vote, but unlike other votes, this requires at least a two-thirds majority.

A no-confidence vote is triggered when a Solid Panel member calls for one publically on an appropriate project communication channel, and ten other Solid Panel members second the proposal. The vote lasts for two weeks. Solid Panel members vote for or against. If at least two thirds of voters express a lack of confidence, then the vote succeeds.

There are two forms of no-confidence votes: those targeting a single member, and those targeting the Solid Team as a whole. The initial call for a no-confidence vote must specify which type is intended. If a single-member vote succeeds, then that member is removed from the Solid Team and the resulting vacancy can be handled in the usual way. If a whole-Solid Team vote succeeds, the Solid Team is dissolved and a new Solid Team election is triggered immediately.

# The Solid Panel
Solid Panel members need to demonstrate a good grasp of the philosophy of the Solid Project, a good track record of being constructive and helpful, significant contributions to Solid project's goals, in any form and willingness to dedicate some time to improving Solid.

The Solid Team consults the Solid Panel for advice on occasion when an internal Solid Team vote is not sufficient. Sufficiency is judged by the Solid Team. The Solid Panel can request a vote on issues that they feel are important to open up to a Solid panel. If there are two Solid Panel members who back the first Solid Panel request for a vote, the vote will go ahead.

A [list of the current Solid Panel members](https://github.com/solid/information/blob/master/solid-panel.md) can be found.

## Mandate
The Solid Panel gives advice that shapes the future of the project. The Solid Panel are expected to act as role models acting as custodians of Solid on behalf of all those who rely on Solid. The Solid Panel will intervene where neccessary, in online conversations or at official Solid Events on the rare occasions that a situation arises that requires intervention.

## Requirements
The Solid Panel consists of
* [Solid Team](https://github.com/solid/information/blob/master/solid-team.md)
* [MIT Solid Project Team](https://solid.mit.edu)
* [W3C Solid Community Group Participants](https://www.w3.org/community/solid/participants)
* former [MIT Solid Project Team](https://solid.mit.edu)
* Active Identity Providers
* Active Pod providers
* Active Solid app providers
* Active Solid Users who show a minimum engagement of having a WebID, Pod, and use at least one Solid app regularly and actively
(please include further suggestions, precautions of existing suggestions, and detailed criteria of existing suggestions)

Once there is a Solid Test Suite it could be made a requirement that identity providers, Pod providers, and Solid app providers need to pass the Solid Test Suite to be able to participate in the Solid Panel.

Companies with multiple employees have a vote per individual employee rather than per company.

## Appoinment
Anyone can apply to the Solid Panel as long as they fulfill the criteria above. The Solid Leader appoints candidates to roles.

# Decision Making Process
Decisions other than appointing individuals to roles, such as those listed below, are made in the following way.
* Changes to the Solid specification
* Changes to the [Solid roadmap](https://github.com/solid/information/blob/master/solid-roadmap.md)
* Changes to the Solid Test Suite
* Starting or changing the aim or project manager of a [Solid Project](https://github.com/orgs/solid/projects) i.e. a GitHub project in the Solid Github account

## Standard Decision Making Process
Step 1. Making a Suggestion
Anyone can suggest a change by getting a GitHub account and submitting a pull request or issues to the relevant repository on the Solid GitHub account.

For the specific decision at hand, the Decision Panel could start by making a list of all the options to move forward with the pros and cons of each option. This is to make sure that everyone has a chance to voice their thoughts on all the options and their opinions of each so that they feel that all the options are given a chance. The Solid Manager would collect the options, pros, and cons, and then make sure that everyone on the Decision Panel receives a complete copy of all the information.
Step 2. Inviting a Conversation around your Suggestion to Find Consensus
You can post the pull request or issue on the relevant channels to invite conversation.

Each individual in the Decision Panel has one vote even if they have multiple criteria for being in the Decision panel, so each person in the Decision Panel has an equal voice. Each individual can vote on a first and second choice, or they can abstain. After counting the first choice votes, the votes from the bottom three options get transferred to the second choice vote to avoid strategic voting that does not reflect the true opinion of the Decision Panel. The votes are recounted and the majority vote wins. The Solid Manager's responsibilities are to --
* make sure everyone on the Decision Panel is aware of the vote
Anyone can suggest routes forward to the suggested changes with pros and cons of each route forward on the original pull request or issues.

Below is a possible table format where all the final suggested routes forward, pros and cons could be included when the conversation becomes longer and more complex.

| Route Forward | Pros to Consider | Cons to Consider |
| ------------- | ------------- | ------------- |
| (insert suggestion) | (insert suggestion) | (insert suggestion) |
Mitzi-Laszlo marked this conversation as resolved.
Show resolved Hide resolved

This step is to make sure that everyone has a chance to voice their thoughts on all the options and their opinions of each so that they feel that all the options are given a chance.

If the suggestion is a change to the Solid specification ou will then need to get a W3C account and join the W3C Solid Community Group to raise a conversation about your suggestion as an item on the weekly call agenda. By adding the item to the agenda all members of the W3C Solid Community Group will be automatically notified and therefore are able to comment on the pull request or issue directly. If the suggestion is a change to the Solid specification then you will need to state why this change is necessary. For example, is it to remove ambiguity or to provide a more beautiful solution to something that is already solved.

Step 3. Coming to a Conclusion through Compromise
The Solid Team will make a decision about if to include the suggestion. The original pull request or issue needs to be open for one week unless it's a typo correction.

## Elaborate Decision Making Process
If three members of the Solid Panel raise a concern about the decision of the Solid Team this triggers the voting process.

The voting process occurs in the following way. The Solid Team collects the options, pros, and cons, and then make sure that everyone on the Solid Panel receives a complete copy of all the information via the github pull request and issue.

Each individual in the Panel has one vote even if they have multiple criteria for being in the Solid panel, so each person in the Panel has an equal voice. Each individual can vote on a first and second choice, or they can abstain. Each individual in the Panel has seven days to vote. If the individaul does not vote after seven days their vote will automatically be counted as an abstaining vote. After counting the first choice votes, the votes from the bottom three options get transferred to the second choice vote to avoid strategic voting that does not reflect the true opinion of the Panel. The votes are recounted and the majority vote wins.

The Solid Team's responsibilities are to:
* make sure everyone on the Panel is aware of the vote
* explain how they can vote
* collect the final results
* communicate the outcome

# Changes to the Solid Specification
Decisions around the Solid Specification changes need to have a procedure around them to encourage conversation to find solutions to more complex decisions.
Solid specification 0.9 will be released on July 1st, and new versions of the Solid specification will be released every six months. For a change to the Solid specification to be merged there needs to be at least one working implemetation that adheres to the changed Solid specification.

# History

The Solid project was started by Tim Berners-Lee, who has served as the Solid Leader from inception. If there is a difference of opinion, parties are encouraged to talk to find a compromise. The Solid Specification Repository Manager is responsible for processing the suggestion to a change to the Solid specifications and deciding on the route forward. The repository manager of the repository to which the suggestion pertains to will be responsible for merging and closing the pull request or issue. If a compromise cannot be met the Solid Leader will make the final judgement.

## Step 1. Making a Suggestion
Anyone can suggest a change to the Solid specification by getting a GitHub account and submitting a pull request or issues to the Solid specification repositories.
# References

## Step 2. Inviting a Conversation around your Suggestion to Find Consensus
You will then need to get a W3C account and join the W3C Solid Community Group to raise a conversation about your suggestion as an item on the weekly call agenda. By adding the item to the agenda all members of the W3C Solid Community Group will be automatically notified and therefore are able to comment on the pull request or issue directly.
This document was put together with inspiration and learnings from the following resources.

## Step 3. Coming to a Conclusion through Compromise
If there is a difference of opinion, parties are encouraged to talk to find a compromise. The Solid Specification Repository Manager is responsible for processing the suggestion to a change to the Solid specifications and deciding on the route forward. The repository manager of the repository to which the suggestion pertains to will be responsible for merging and closing the pull request or issue. If a compromise cannot be met the Solid Leader will make the final judgement.
* Python (2018) [Python Lanugage](https://www.python.org/dev/peps/pep-0013/)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo

* Elinor Ostrom (2005) [Understanding Institutional Diversity](https://www.wtf.tw/ref/ostrom_2005.pdf).
* Chales M Schweik and Meelis Kitsting (2010) [Applying Elinor Ostrom’s Rule Classification Framework to the Analysis of Open Source Software Commons. Transnational Corporations Review](http://www.tnc-online.net/pic/2010032809124697.pdf)
* Sean McDonald (2019) [Reclaiming Data Trusts. CIGO](https://www.cigionline.org/articles/reclaiming-data-trusts)
* Aymeric Augustin (xxxx) [Django](https://docs.djangoproject.com/en/dev/internals/organization/)
* https://tc39.github.io/process-document/