Skip to content

Project Structure and Governance

Michael Joyce edited this page Jan 25, 2021 · 2 revisions

The AMMOS Instrument Toolkit community is comprised of users, contributors, committers, and PMC members from a number of private organizations, universities, government organizations, and FFRDCs. Our governance model ensure that we can all come together to build, extend, and improve the toolkit as a team.

Project Structure

Project Manager

The Project Manager is the person responsible for the project at NASA and are the official communication channel between the formal structures of the agency and the governance structures of the software project itself. They are a regular member of the Project Management Committee, with the same power and responsibilities as all other members.

Project Management Committee

The Project Management Committee (PMC) is the governing body of the project. It is composed of the Project Manager and other members of the project community.

The responsibilities of the PMC are to: ensure the project is meeting all of its legal requirements and that the defined procedures are followed. manage and protect the community surrounding the project. Most importantly, this means ensuring that there is balanced peer review and collaboration within the project that includes all members of the project community.

With the exception of the Project Manager, all other roles may be filled by community members that have shown their commitment to the project through their contributions, and it is the PMC that extends these invitations. As all members of the PMC are also active members of the larger community, it is part of their responsibility to identify and support individuals whose work improves the project.

The PMC Team shows the current Project Management Committee members.

Committers

Committers are responsible for reviewing submitted code contributions to make certain that they meet all of the Code Review procedures established for the project. They accept pull requests and incorporate them into the main trunk. This role may be filled by more than one person, and is even a position that an individual from inside the community may be elevated to by the PMC. A member of the PMC must propose the new member, which is then approved by a majority of the PMC members. No-one has the ability to veto a vote.

Contributors

Contributors include anyone that provides an input for the project. This includes code, documentation, graphics, designs, or anything else that tangibly improves the project.

Users

Users use the software and provide feedback in the form of bug reports and feature requests.

Communication and Policy Setting

All project communication happens on the project mailing lists. This ensures that people from various organizations and timezones can contribute to the discussion.

Public Development: [email protected]

This is the official communication channel for activities related to the development of this project. If you want to get involved, the first step is to join this list (and introduce yourself)! This is where everyone shares information, discusses proposals, solves problems, and determines the future direction of the project. It is also the official location for decision making.

Decision Making Process

The PMC is responsible for making decisions and setting the direction of the project, primarily in consultation with the community. In those rare situations where the PMC is forced to make a decision that is unpopular with the community, they will provide justification and explanation for it.

Any member of the project community may make a proposal for consideration. There is no restriction on the subject of these proposals, including the future direction of the software, the way in which the project is governed, and the allocation of available development resources.

A proposal should be submitted on the public email list for the project, where discussion can then follow. It is the PMC’s responsibility to ensure that all member’s ideas are heard and respected and that the discourse is civil. Anyone agreeing or disagreeing with the proposal can “vote” for it by responding to the list with their vote. The votes may or may not include discussion items, but if they are intended as a vote they should specify that with something obvious like “agree” or “yes” or “+1” (or their opposites). This voting is all unofficial but makes it easy to discern community opinion for everyone involved.

When an official vote needs to be made an email will be sent to the list indicating the topic being voted on and the time period during which the vote will be open (minimum of 3 days). All members of the community may vote but only members of the PMC will have "binding" votes and that is generally indicated in the email when their vote is cast. After the voting period is complete a notification email will be sent to the appropriate list summarizing the result.

Examples of topics for official votes:

  • Admission of new committer and/or PMC member. Discussions and voting will occur on the private PMC mailing list. If the PMC agrees an invitation will then be extended to the person to join the respective group.
  • Release approval. Release Candidates should be presented to the user/dev mailing list for the community to vet prior to official release.