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.
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.
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.
- 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.
This governance model should embrace both responsibilities and compensations. This relates, but it's not the same as the development process #2955.
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
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
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.
Offer a combination of:
- Base Salary
- Rewards
- Perks and Benefits
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.
Primary reward distribution model.
- Motivate delivery of above-average results.
- Allow for adequate compensation according to each individual's contribution.
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.
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.
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.
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.
Discussed privately by Core Developers. Managed by NGD.
- Can't make decisions that are in disagreement with this policy.
Core developers may become eligible for a permanent membership.
- Minimum 10 years of relevant contributions.
- Access to the retirement fund.
?