Note: The current governance model is being revised as part of the InvenioRDM project.
Invenio is governed by CERN for the benefit of the community. CERN strives to
make Invenio a collaborative, open and transparent project to ensure that
everyone can contribute and have their say on the directions of the project.
Invenio governance is in general informal and we try to strike a balance between processes and agreed upon standards vs. the wild west where everyone do as they see fit. The governance model is intended to allow that people progressively take larger and larger responsibilities with support from the existing leadership.
These following sections define the different roles and responsibilities in the project, define how decisions are taken and how people are appointed to different roles. Overall, we expect every person who participates in the project to adhere to our Code of Conduct.
Roles and responsibilities
The product manager, coordinators, architects and maintainers (as
defined below) make up the leadership of Invenio. The leaders of Invenio are
service people who:
- take an active role in driving the project forward
- help newcomers as well as long-time contributors have a great experience contributing to Invenio
- help train members to progressively take larger responsibility in the project
- are role models for the remaining community
- Members: Anyone using Invenio.
- Contributors: Anyone contributing to Invenio (in it widest possible interpretation, i.e. not only programmers).
- Maintainers: Anyone maintaining at least one repository. Maintainers are responsible for managing the issues and/or the code base of a repository according to Invenio's standards.
- Architects: Anyone maintaining 20+ repositories (though max 10 people). Architects are responsible for the overall Invenio technical architecture as well as managing and training maintainers on their respective repositories.
- Coordinators: Representatives of Invenio based services that would like to coordinate their Invenio development efforts with other services and provide input on the product road map.
- Product manager: Overall responsible for Invenio's vision, strategy and day-to-day management. Responsible for managing and training architects and coordinators.
Commit access on repositories are given to contributors, maintainers and architects. Contributors can commit/merge to feature branches while only maintainers and architects can commit/merge to master/maintenance branches (meaning also only they can release packages to PyPI and NPM).
We strive to take decisions openly and by consensus, though ultimately CERN represented by the Invenio product manager has the final say on all decisions in the project. In particular this means that there is no formal voting procedure for Invenio.
Leaders drive decision making
The Invenio product manager, architects, coordinators and maintainers as the leaders of the project are responsible for driving decision making in their respective domains.
Driving decision making means:
- facilitating an open constructive discussion around a decision that matches the level of importance and impact of a decision,
- striving for reaching consensus on a decision and ensuring relevant other members are aware and included on the decision,
- ensuring decisions are in alignment with the overall Invenio vision, strategy, architecture and standards,
- coordinating the decision with the Invenio leadership (product manager, architects and coordinators),
- taking the decision.
Leaders implement decisions
Leaders are responsible for following up decisions they take by actual implementation. Decision should not be considered final unless it is actually implemented or documented publicly.
Leaders of the project should always strive for consensus. If that is not
possible the leader taking a decision should alert the Invenio product manager
prior to taking the decision.
Members who are disagreeing with a decision may ask the product manager to review a specific decision and possible change it.
Members who are disagreeing with the Invenio product manager may escalate the product manager's decision to their hierarchy at CERN.
The Invenio product manager is appointed by CERN. Architects, coordinators and
maintainers are appointed by the Invenio product manager in collaboration with
existing architects and coordinators.
Maintainers are appointed by the architects (e.g. a new Invenio module) or coordinators (e.g. a new special interest group).
In general, appointments are made in an informal way, and usually anyone volunteering that have been showing commitment to the project will get appointed. Any member can volunteer or suggest other members for roles.
Revoking of appointed roles
The product manager may revoke appointed roles of a member for reasons such as (but not limitied to):
- lack of activity
- violations of the code of conduct
- repeated infringements of the contribution, style or maintainer guides.
Working/interest groups may be set up by the product manager on request of any group of members who wish to address a particular area of Invenio (say MARC21 support or research data management). Working/interest groups help coordinate the overall vision, strategy and architecture of a specific area of Invenio. Each working/interest group must have chair that reports to the product manager.
Code of Conduct
We endorse the Python Community Code of Conduct: The Invenio community is made up of members from around the globe with a diverse set of skills, personalities, and experiences. It is through these differences that our community experiences great successes and continued growth. When you're working with members of the community, we encourage you to follow these guidelines which help steer our interactions and strive to keep Invenio a positive, successful, and growing community. A member of the Invenio community is:
- Open. Members of the community are open to collaboration, whether it's on RFCs, patches, problems, or otherwise. We're receptive to constructive comment and criticism, as the experiences and skill sets of other members contribute to the whole of our efforts. We're accepting of all who wish to take part in our activities, fostering an environment where anyone can participate and everyone can make a difference.
- Considerate. Members of the community are considerate of their peers -- other Invenio users. We're thoughtful when addressing the efforts of others, keeping in mind that often times the labor was completed simply for the good of the community. We're attentive in our communications, whether in person or online, and we're tactful when approaching differing views.
- Respectful. Members of the community are respectful. We're respectful of others, their positions, their skills, their commitments, and their efforts. We're respectful of the volunteer efforts that permeate the Invenio community. We're respectful of the processes set forth in the community, and we work within them. When we disagree, we are courteous in raising our issues.
Overall, we're good to each other. We contribute to this community not because we have to, but because we want to. If we remember that, these guidelines will come naturally.