Ratified by the JS Foundation Board of Directors on November 9, 2016
The Technical Advisory Committee operates transparently, openly, collaboratively, and ethically. Project proposals, timelines, and status must not merely be open, but also easily visible to outsiders.
Most large, complex open source communities have both a business and a technical governance model. JS Foundation's technical leadership contains a Technical Advisory Committee ("TAC"), Working Groups ("WG"s) and Projects which may represent a single or collection of code bases. JS Foundation's business leadership is instantiated in a Board of Directors (the "Board").
This Technical Advisory Committee Charter reflects a balanced role for the TAC and the Board in the governance of the JS Foundation. The charter amendment process is for the TAC to propose changes using simple majority of the full TAC, the proposed changes being subject to review and approval by the Board. The Board may additionally make amendments to the TAC charter at any time, though the Board does not interfere with day-to-day discussions, votes or meetings of the TAC.
The Board sets the overall TAC policy through Foundation mission and vision statements as well as within the Foundation bylaws. The policy describes the overarching scope of the JS Foundation initiatives , technical vision, and direction. The Board uses the TAC as a delegate body for governing high-level technical policy and procedures while remaining within the scope and direction of the policies set by the Board.
TAC memberships are time-limited to 1 year terms with no limit on the number of terms a member may serve. The TAC will be limited to 25 voting seats and membership of the TAC will consist of:
- One representative from each JS Foundation Platinum Member organization.
- One representative from the Node.js Foundation. See the [Ecosystem Mentorship][] section below for details concerning the relationship between the JS Foundation and the Node.js Foundation.
- Individuals from the greater JS community as appointed by the existing TAC and the Board. This includes JS Foundation Project representatives as nominated by Projects that have completed and graduated from the mentorship process.
There is no specific set of requirements or qualifications for TAC membership beyond these rules. The TAC and the Board may add additional members from the JS community to the TAC by following the election process as described in the Elections section of this charter. A TAC member, including those appointed by Projects and Member organizations may be removed from the TAC by voluntary resignation, or by a standard TAC motion and vote. If the removed member is a Project or Member organization representative, that Project or Member organization may appoint a new representative. The removed member may again be considered for addition to the TAC after a term of 1 year from their removal. At the end of a member's term, that term may be renewed for an additional term by a standard TAC motion and vote.
Changes to TAC membership should be posted in the TAC meeting agenda, and may be suggested as any other agenda item.
No more than one-fourth of the TAC members may be affiliated with the same employer. If removal or resignation of a TAC member, or a change of employment by a TAC member, creates a situation where more than one-fourth of the TAC membership shares an employer, then the situation must be immediately remedied by the resignation or removal of one or more TAC members affiliated with the over-represented employer(s) or the addition of a new representative not affiliated with the over-represented employer(s).
The TAC shall meet regularly using tools that enable participation by the community (e.g. quarterly on a Google Hangout On Air, or through any other appropriate means selected by the TAC). The meeting shall be directed by the TAC Chairperson. Minutes or an appropriate recording shall be taken and made available to the community through accessible public postings.
Subject to such policies as may be set by the Board, the TAC is responsible for ensuring collaboration is the driving principle within a Project, between JS Foundation Projects, and between JS Foundation Projects and the broader community. The TAC is also responsible for admitting new projects to the mentorship program as well as graduating projects from the mentorship program. The TAC is also responsible for mediating technical conflicts between JS Foundation Projects when attempts to resolve those conflicts within the Project and were unsuccessful. The TAC serves as the JS Foundation's primary technical liaison body with external open source projects, consortiums and groups and is also responsible for technical participation in standards bodies. Members of the TAC, or committees consisting of subsets of the TAC membership will be expected to meet on a regular basis to discuss topics such as new project acceptance into the mentorship program, project graduation from the mentorship program, Project issues and conflicts, opportunities for collaboration between Projects, opportunities for the Foundation in the greater JavaScript community, etc.
The JS Foundation administers a mentorship program through which projects may enter the Foundation and through this program, it will support these projects in their efforts to implement policies and instill values that foster contribution and collaboration from a larger and more diverse set of individuals and organizations. The goal of this mentorship program is to ensure that projects are well maintained and supported for the long term and are welcoming environments that encourage participation. In order to best serve the entire JavaScript ecosystem, the JS Foundation will formally partner with the Node.js Foundation to guide the mentorship program. In order to facilitate this partnership, the Node.js Foundation will have representation on the TAC as described in the Establishment of the TAC section above and will provide project mentors as they become available
Maintainers of Projects that have graduated from the mentorship program act in a similar role, have similar expectations and provide the same types of policy guidance and reviews as the TAC but with a focus on a specific Projects. Projects will ensure that they follow the lifecycle process as described in the Project Lifecycle document. Projects will occasionally review and make changes to the lifecycle of a Project, which will include consideration of the following criteria:
- Cleanliness of the code base;
- Ample and diverse Contributors and Collaborators to assure vitality of the project;
- Stability (e.g. presence of test suites, stable APIs and use of an appropriate source-code control system);
- Predictability of releases;
- Alignment with the JS Foundation's goals and priorities.
JS Foundation Projects are self-governing entities. All policies and procedures for interacting with, contributing to and making decisions within a Project are defined, implemented, and documented by that Project’s maintainers and community during the mentorship process. Specific technical decisions within a Project will be the responsibility of the Project and establishment and implementation of the decision making process will be done within the guidelines as defined by TAC charter. Those Project decisions and responsibilities include but are not limited to:
- Setting release dates.
- Release quality standards.
- Technical direction.
- Project governance and process.
- GitHub repository hosting.
- Conduct guidelines.
- Maintaining the list of additional Collaborators.
- Development process and any coding standards.
- Mediating technical conflicts between Collaborators.
The Projects and the entire technical community will follow any processes as may be specified by the Board relating to the intake and license compliance review of contributions, including the JS Foundation CLA and IP Policy.
For internal Project decisions, Collaborators shall operate under Lazy Consensus. The TAC follows a Consensus Seeking decision making model. When an agenda item has appeared to reach a consensus the moderator will ask "Does anyone object?" as a final call for dissent from the consensus.
If an agenda item cannot reach a consensus a TAC member can call for either a closing vote or a vote to table the issue to the next meeting. Votes shall follow the procedure described in the Voting section of this charter.
Voting should only be used when consensus cannot be reached through usual collaborative processes or in the case of elections as described in the Elections section of this charter. The call for a vote must be seconded by 2 members of the TAC or else the discussion and attempt to reach consensus will continue. Simple majority wins a vote, with the following exceptions, which will require the affirmative vote of two-thirds of the members of the TAC to pass:
- Adding or removing members of the TAC
- Changes to the TAC charter which also requires Board approval
Leadership roles in the JS Foundation's technical organization will be peer elected representatives of the community.
For election of persons (TAC members, TAC Chairperson, Maintainers, etc.) a multiple-candidate method should be used, e.g.:
Multiple-candidate methods may be reduced to simple election by plurality when there are only two candidates for one position to be filled. No election is required if there is only one candidate and no objections to the candidate's election.
Each Project that has graduated from the mentorship program may nominate a representative to be appointed to the TAC. Elections shall be done within the Projects by the Collaborators active in the Project.
Foundation supporting Member organizations may elect representatives to the TAC and may use whatever means they deem fit to determine the individuals who will fill those roles in accordance with the limits set forth in the Establishment of the TAC section above.
The TAC will elect from amongst voting TAC members a TAC Chairperson to work on building an agenda for TAC meetings and represent the TAC to the Board of Directors for a term of one year according to the JS Foundation's By-laws. The TAC shall hold annual elections to select a TAC Chairperson; there are no limits on the number of terms a TAC Chairperson may serve.
The JS Foundation Project repositories are maintained by the Projects and additional Collaborators who are added by the Project on an ongoing basis.
Individuals making significant and valuable contributions, “Contributor(s)”, are made Collaborators and given commit-access to the Project. These individuals are identified by the existing Collaborators for the Project and their addition as Collaborators is discussed during Project meetings. Modifications of the contents of the git repository are made on a collaborative basis as defined in the development process.
Collaborators may opt to elevate significant or controversial modifications, or
modifications that have not found consensus to the TAC for discussion by
assigning the TAC-agenda
tag to a pull request or issue. The TAC should serve
as the final arbiter where required. The Project will maintain and publish a
list of current Collaborators, as well as a development process guide, within
the guidelines set forth in the Project's governance policies, for Collaborators
and Contributors looking to participate in the development effort.
Project: a technical collaboration effort that is organized through the project mentorship process and approved by the TAC.
Contributors: contribute code or other artifacts, but do not have the right to commit to the code base. Contributors work with the Project's Collaborators to have code committed to the code base. A Contributor may be promoted to a Collaborator by the Project's Maintainers. Contributors should rarely be encumbered by the TAC or Board.
Collaborator: a Contributor within a Project that has made significant and valuable contributions and has been given commit-access to that Project repository.
Maintainer: a Collaborator within a Project elected to represent the Project in an official decision making role as defined in the Project's governance policies.