Skip to content

Latest commit

 

History

History
186 lines (138 loc) · 7.49 KB

Governance.md

File metadata and controls

186 lines (138 loc) · 7.49 KB

Introduction

This document suggests a governance model to be used by the Neo core developers. The goal is to develop a fair model that balances compensation with each individual's responsibilities and outcomes/deliverables. This document also suggests the creation of a Core Developer Treasury to maintain the core developer team.

Main Issue

Developing a fair plan that balances compensation with each individual's responsibilities and outcomes/deliverables is essential. Stability, fairness, and organization are required to attract and retain talent.

Existing Problems

We face challenges in our development processes, for example:

  • Issues raised that are not relevant to the current objectives of the project.
  • Abandoned issues or PRs.
  • Evaluating results based only on PRs.
    • Leading to competition instead of collaboration.
  • A feeling of disorganization.
  • Unclear assignment of responsibilities.
    • Who responds to people?
    • Who verifies results?
    • Who does the release?
    • Who details the issues?
    • ...
  • Lack of processes leading to poor efficiency
  • No overall vision of the code base health.

It looks like, culturally speaking, we are failing to understand this: Everything is about people. Software is about people, not code.

Understanding People:

  • People want to work in a professional and welcoming environment.
  • People want to feel safe.
  • People want challenges that match their skills.
  • People want a sense of professional growth.
  • People want to create a legacy.
  • People are not the same: different people provide different value
  • People want a fair work environment, including fair compensation.
  • People need a sense of belonging.
  • People don't want and can't be controlled. They need to be convinced.
  • People don't like feeling being used.
  • People don't like being ignored.
  • People like privacy.
  • Seasoned developers are older people who demand more stability.
  • People want to see the results of their work.
  • We must understand the people using our stuff and how they feel about it.
    • Identify usability improvement points (installation, configuration, etc.).
  • We want to attract and retain the best people.
  • People prefer teams that work online and asynchronously.
    • Culture compatible with everyone's reality, timezone, etc.
  • We want people to deliver their best.
  • People expect a long-term vision.
  • We want people that aim for the overall network improvement.
  • People work better with incentives than punishments.
  • People make mistakes, but no one should be negligent or lack general responsibility.

Proposed Solution: Create a clear Core Developer Team and Treasury

This governance model should embrace both responsibilities and compensations. This relates, but it's not the same as the development process #2955.

What to expect from the Core Devs?

We want to build a team of great people so that they can deliver their best.

This means that we expect that:

  • The team works professionally and responsibly.
  • The team works productively.
  • The team works participatively.
  • The team is capable of self-management.
    • Planning of features.
    • Bug fixes.
    • Organization of deliveries.
    • Dealing with incidents.
  • The team is capable of governing itself.
  • The team collaborates rather than competes.
  • The team communicates their work.
    • Discussion of solutions on GitHub.
    • Creation of in-code documentation.
    • Keep documents and repositories updated and organized.
    • Produce information facts that can be used in web documentation.
      • It's not the developer's responsibility to create end-user documentation, only to provide facts about the functionality and behavior of the code and features.
  • The team creates rituals (recurring activities) for information exchange and planning.
  • The team collaborates with other working groups.
    • Assist the design team in creating visuals for abstract elements.
    • Help the content team to provide accurate content.
    • Offer integration support to new features
  • The team uses dApps built on Neo
  • The team creates mechanisms to deter harmful behaviors
    • This should be seen as a governance tool, not a motivation to work

Core Developer Team

We must offer more than a good working environment to maintain a core developer team with skilled and motivated developers. It's essential to compensate accordingly. To do this transparently, we suggest the creation of a Core Developer Treasury. This treasury is used to compensate core developers for their work.

Elected core developers can vote on issues and participate in paid reward distributions.

  • Voting can be done on GitHub issues.
  • Voting can be done privately on Discord
  • Voting is done using emojis:
    • 👍 : +1
    • 👎 -1
    • 👀 0

Core Treasury & Compensation

The idea is a Core Developer Treasury managed by NGD and maintained by Core Developers. NGD funds the treasury while core developers vote on the rules and perks.

  • A consensus node and private donations fund this treasury to keep core developers connected with the technology and incentivize $GAS consumption.
  • To keep contributors safe, it's recommended to use private channels to discuss monetary values and transactions.

Compensation

Offer a combination of:

  • Base Salary
  • Rewards
  • Perks and Benefits
Base Salary

It is necessary to offer stability and retain seasoned developers.

  • Should be enough to provide family security.
  • Lower than market rates.
    • The goal is to offer a more significant part of the compensation through rewards.
  • Guaranteed during down periods.
  • Guaranteed up to 45 days of inactivity.
Rewards

Primary reward distribution model.

  • Motivate delivery of above-average results.
  • Allow for adequate compensation according to each individual's contribution.
Perks and Benefits

Perks and other benefits are offered through reimbursements or periodical payments.

  • Subsidy for purchasing computer devices and parts.
    • Core developers must have access to the best hardware available on the market
  • Airfare and hotel for travel and related events.
  • Leisure allowance.
  • Idiom lessons.
    • Improve team communication
  • Retirement fund.
Access to a re-investment fund

Allow core developers to receive money to be spent within the Neo community.

  • Used to purchase tokens, NFTs, and other items.
    • Aim to connect core devs with the results of their work.
    • Stimulate the internal market.
    • Identify usability issues and bottlenecks in wallets, explorers, and other auxiliary services.
    • Increase the supply of nodes in testnet and other services.
Cover for Cloud Computing Expenses

Used to put developers close to their tech and increase service offerings (testnet nodes, etc.)

  • Allow core devs to maintain computational services without personal expenses.
  • Enable core devs to conduct experiments without additional costs.
Compensation from Community Contributors

If a core developer is part of a community, the compensation should be given to an address appointed by the community representative.

  • This is important to ensure communities stay united and under their governance and compensation model.
  • This allows communities to follow legal procedures in their residing countries.
Inclusion and Termination

Discussed privately by Core Developers. Managed by NGD.

  • Can't make decisions that are in disagreement with this policy.
Retirement

Core developers may become eligible for a permanent membership.

  • Minimum 10 years of relevant contributions.
  • Access to the retirement fund.

Technical Committee

?