+1 0 -1 |
The Tungsten Fabric technical project has been established as TF Project a Series of LF Projects, LLC (“TF” or, alternatively, the “Project”). LF Projects, LLC is a Delaware series limited liability company. Governance for the Project is detailed within the Project Technical Charter available at Tungsten.io (“Charter”). This Technical Community Document is intended to provide additional operational guidelines for the Project, and is subject to the Technical Charter.
The Tungsten Fabric Project a Series of LF Projects, LLC (“TF”) will operate transparently, openly, collaboratively, and ethically. Project proposals, timelines, and status must not merely be open, but also easily visible to outsiders.
The Technical Community consists of multiple projects and a Technical Steering Committee that spans across all projects.
A Contributor is someone who contributes to a project. Contributions could take the form of code, code reviews, or other artifacts. Contributors work with a project’s Committer and the project’s sub-community. A Contributor may be promoted to a Committer by the project’s Committers after demonstrating a history of meritocratic contribution to that project.
For each project there is a set of Contributors approved for the right to commit code to the source code management system (the “Committers”) for that project.
In order to preserve meritocracy in selection of Committers while ensuring diversity of Committers, each initial project are encouraged to taking on at least three Committers from different companies (subject to meritocracy).
A project is required to elect a Project Technical Leader (“PTL”). The PTL acts as the de facto spokesperson for the project.
Candidates for the project’s Project Technical Leader will be derived from the Committers of the Project.
Candidates must self nominate.
Only Committers for a project are eligible to vote for a project’s Project Technical Lead.
An election for Project Technical Leader occurs when any of the following are true:
Technical and release decisions for a project should be made by consensus of that project’s Committers. If consensus cannot be reached, decisions are taken by a majority vote of a project’s Committers. Committers may, by majority vote, delegate (or revoke delegation) of any portion of such decisions to an alternate open, documented, and traceable decision-making process.
In the event that a project has no active committers (e.g., due to resignations, etc.), the TSC may appoint an interim Committer from a project’s active Contributors. This term shall last until the next release date, after which time the Committer must stand for election from amongst other Committers on the project to maintain his or her status. In this special case, approval requires a majority of committers who respond within two weeks. If no one responds by the deadline, then the committer status is approved. This provision allows a project to continue development following an unexpected change in personnel.
The method by which the TSC appoints an interim committee is first by request to the TSC email list indicating the request to appoint an interim Committer for a project. After the reception of such an email, the normal TSC decision process applies.
A Committer may voluntarily resign from a project by making a public request to the PTL to resign (via the project and TSC email lists).
A Committer for a project who is disruptive, or has been inactive on that project for an extended period (e.g., six or more months) may have his or her Committer status revoked by the project’s Project Technical Leader or by 2/3 super-majority vote of the project’s committers.
The Project Technical Leader is responsible for informing the Technical Steering Committee (TSC) of any committers who are removed or resign via the TSC email list.
Former committers removed for reasons other than being disruptive may be listed as ‘Emeritus Committers’. That title expresses gratitude for their service but conveys none of the privileges of being a Committer.
The TSC may create umbrella projects (“Umbrella Projects”) that in turn support multiple sub-projects. Umbrella Projects will be led by an Umbrella Committee made up of the PTL and one or more committers, who are the committers of each of the subprojects. Each subproject will have its own set of committers with responsibility only for the subproject repository.
With the approval of the TSC, Umbrella Projects may establish and modify additional technical roles for sub-project participants.
The activities of the TF community are articulated around projects and releases. The scope of each project is aligned with the TF architecture and the scope of each release is defined with the objective to fulfill a particular use case(s).
A project is a long term endeavor setup to deliver features across multiple releases, which have a shorter lifespan.
The project and release lifecycle are simple and provide sufficient visibility to allow teams to coordinate with one another and flock naturally.
The key point of the project and release lifecycle process is to provide adequate visibility to all stakeholders, provide synchronization, and support to all contributors.
This document covers the TF project lifecycle. The Release Lifecycle is documented in a separate document (include link when ready).
The project lifecycle provides the freedom for each team to conduct its project according to their needs, culture and work habits. Thus, the project lifecycle is not prescriptive on how each project operates.
An TF release can be composed of 1 to N projects. As such the number of contributing projects to a particular release may vary overtime.
A release is initiated to deliver a set of project deliverables.
The project lifecycle process does not impose a duration for the project nor for the release. There is an independent Release Plan document for each release to specify release timelines.
TF project lifecycle defines five states that each project goes through. The project lifecycle may extend across multiple releases.
The procedure of moving from one state to the next one is independent from the release and the pace depends on each individual project.
In order to effectively review project progress, four reviews are build-in within the project lifecycle.
The lifecycle of a project is depicted on the following diagram:
Project State | Description |
Proposal | Project doesn’t really exist yet, may not have real resources, but is proposed and is expected to be created due to business needs. |
Incubation | Project has resources, but is recognized to be in the early stages of development. The outcome is a minimum viable product (MVP) that demonstrates the value of the project and is a useful vehicle for collecting feedback, but is not expected to be used in production environments. |
Mature | Project is fully functioning and stable, has achieved successful releases. |
Core | Project provides value to and receives interest from a broad audience. |
Archived | Project can reach Archived state for multiple reasons. Either project has successfully been completed and its artifacts provide business values, or project has been cancelled for unforeseen reasons (no value anymore, technical, etc.). Project in any state can be Archived through a Termination Review. |
To move from one state to the next state, the Project Team has to formulate a Kick-Off release review to the TSC, by specifying its goal to move up the Project Lifecycle ladder.
From State | To State | Review Description |
Null | Proposal | |
Proposal | Incubation | Incubation review |
Incubation | Mature | Maturity review |
Mature | Core | Core review |
Core | Archived | Termination review |
Note 1: Project proposals are posted in the “Proposed Projects” section of the TF wiki. Approved projects are posted to the “Approved Projects” section of the TF wiki.
Note 2: The proposal submitter can decide to remove projects in “proposal” state that do not progress to incubation state.
A project’s release cycle may be tailored by allowing some exceptions to the normal release process. Tailoring may be initiated in two ways:
Tailoring practices will be documented as we progress through our releases. The TSC should respond to requests in a timely manner.
Project promotion across states can only be done by TSC review and voting. During the reviews the candidate projects are evaluated based on predefined metrics and KPIs. The target numbers may vary for each project and state.
For each and every review the following steps are required:
Reviews for multiple projects can occur at the same time.
During Release Kick-Off, the project team may request that the TSC conduct a review to move up the ladder.
The goal of the Incubation Review is to officially launch the project and to support its needs until project Termination Review.
Once a project has passed the Incubation Review, the project is in Incubation State and may span over multiple releases.
Proposal template is available at Proposal Template.
The following artifacts are expected:
The goal of the Maturity Review is to ensure:
Once a project has passed the Maturity Review, the project is in Mature State and may span over multiple releases.
Review metrics for Maturity review:
The goal of the Core Review is to ensure:
Once a project has passed the Core Review, the project is in Core State and may span over multiple releases.
Review metrics for Core review include the metrics for maturity review plus the following:
The goal of the Termination Review is to ensure that:
A Project’s Committers make all decisions about Releases of that Project. However, to be eligible to be considered ‘Mature’, the project must demonstrate a history of following the Mature Release Process. The purpose of the Mature Release Process is to insure openness and maximum opportunity for participation. The idea is to have a simple, clear, public declaration of what a project intends to do and when, and what was actually done in a release cycle. Towards that end, a project following the ‘Mature Release Process’ should have a Release Plan published at the beginning of its release cycle by its committers, and a Release Review just prior to the project release.
Both Release Plan and Release Review documents are intended to be relatively short, simple, and posted publicly on the wiki to assist the project in coordinating the amount themselves and the general world in gaining visibility.
These should contain roughly the following sections:
The TSC may make amendments to this Technical Community Document at any time. The charter amendment process is for a TSC voting member to propose changes that will be decided by simple majority of the full TSC. The proposed changes are subject to review and approval by the Series Manager of TF.
For purposes of avoiding dominance from a particular company, also define any given company as a Represented Group with no seats (and thus no need to define voters):
for company_var in <the set of all companies>:
Represented Group company_var * Min Seats: 0 * Max Seats: 20% (cap of 1 per group)
Candidates: Works for company_var
The TSC will elect from amongst voting TSC members a chairperson for a term of one year according to the Tungsten Fabric Technical Charter. The TSC shall hold elections to elect a TSC Chair annually; there are no limits on the number of terms a TSC Chair may serve.
The primary responsibility of the TSC Chair is to represent the technical community in communications with the LF Networking Fund of The Linux Foundation and to be responsible for:
The TSC has multiple coordinator roles. Each coordinator role comes with its own set of responsibilities to discharge in serving the community via coordinating among various parties.
A coordinator is an internal role, so while a coordinator may coordinate among various external liaisons in some instances, being a coordinator does not imply being the liaison to any particular external organization or group of organizations.
Coordinators support the TSC Chair in the execution of TSC responsibilities (Section 5.3) and the delivery of TF releases. They are responsible for fostering collaboration among the many parties that need to work together to identify, characterize, and solve problems, they do not direct solutions.
The Technical Steering committee may elect coordinators from the Technical Steering Committee or from community participants. The TSC will solicit nominations for the role. Nominees should have subject matter experience in the relevant coordination area. In the event that multiple candidates self-nominate, the TSC will hold an election.
Elections are held annually. There are no limits to the number of terms an individual can serve.
The coordinator will regularly report status and issues to the TSC via the TSC email list.
There is a lifecycle for the coordinator responsibility (coordination area) and the coordinator appointment.
Coordination Area Creation
A coordination area is created by sending a request to the TSC via the TSC email list. The email shall have:
- Email Subject: Creation Request for coordination area: <coordination area name>
- Coordination Area responsibility description: <Description of the coordination area responsibilities>
- Reporting Cadence: <description of when reporting is expected to be delivered to the TSC>
- Area Coordinator: <Name of the area coordinator> (Can be blank)
The decision to create the coordination area is created by a TSC decision (per the TSC voting rules). A decision can be made with modification, with the modifications captured in the TSC minutes. Once a coordination area is created, it will be documented in the TF Wiki.
For the Area coordinator, see section: 4.2.2.2.
Coordination Area Update
- A coordination area can be updated by sending a request to the TSC via the TSC email list. The email shall have the following: Email subject: Update Request for coordination area: <coordination area name>
- Proposed Update: <Clearly described update of the coordination area. This could be the Area Responsibility Description; Reporting Cadence; Area Coordinator>.
The decision to update the coordination area is created by a TSC decision (according to the TSC voting rules). An update decision can be made with modification, with the modifications captured in the TSC minutes. Once a coordination area is updated, the updates will be documented in the TF Wiki.
Coordination Area Termination.
A coordination area can be terminated by sending an email to the TSC via the TSC email list. The email shall have the following.
- Email Subject: Close Request for coordination area: <coordination area name>
- Motivation: <Motivation for closing the coordination area>.
The decision to close the coordination area is created by a TSC decision (according to the TSC voting rules). Once a coordination area is updated, the coordination area will be removed from the TF Wiki.
Decisions of the TSC should be made by majority vote of TSC Members.
The TSC Chair/Coordinators shall be elected separately. There is no prohibition against a person holding multiple roles.
Candidates for TSC Chair must be TSC Members as defined in Section 4.1.1.
Candidates must self nominate.
Any community member (regardless of TSC membership) is eligible to serve as a coordinator. Nominees should have subject matter experience in the relevant coordination area.
Candidates must self nominate.
Only TSC Members (Section 4.1.1) are eligible to vote for TSC Chair/Coordinator.
Election of a TSC Chair/Coordinator shall use a multiple-candidate method, e.g.:
Condorcet: http://en.wikipedia.org/wiki/Condorcet_method; or Single Transferable Vote: http://en.wikipedia.org/wiki/Single_transferable_vote
Subject to the Technical Charter, the TSC is responsible for:
The TSC, at its discretion, may establish subcommittees to assist the TSC with its responsibilities and provide expert guidance in technical subject areas (e.g., architecture or security).
Each subcommittee shall determine its own membership eligibility, in consultation with the TSC. It is expected that subcommittee membership shall be open to all TF Contributors; however, subcommittees may impose restrictions such as the number of participants from a single company. While the desire may be to keep its size and scope limited, each subcommittee shall be open to the TF membership. Also, all elected TSC members are eligible to join a subcommittee
Each subcommittee may elect a Chair and optionally a Vice-Chair who is responsible for leading meetings and representing the subcommittee to the TSC.
The Chair or Vice-Chair will be elected by members of the subcommittee as of the date the nomination process starts for the election.
Voting for a Chair or Vice-Chair is not limited to Tungsten Fabric member companies. However only 1 Subcommittee member from each company, or group of related companies may vote in the election.
For the purpose of this document, “Related Company” shall mean any entity (Company-A) which controls or is controlled by another entity (Company-B) or which, together, is under the common control of a third party (Company-C), in each case where such control results from ownership, either directly or indirectly, of more than fifty percent of the voting securities or membership interests of the entity in question; and “Related Companies” are entities that are each a Related Company as described above.
The elected Chair (and/or Vice-Chair) is submitted to the TSC for confirmation. The TSC decides to accept the outcome or requests a new voting.
Subcommittees are advisory in nature, and not authoritative. They provide advice to projects and to the TSC.
Subcommittees operate on a rough consensus basis. If the subcommittee is unable to reach consensus on what advice to offer, the subcommittee Chair shall raise the issue with the TSC, where a formal vote can be taken, or advise the project that the subcommittee cannot reach consensus.
The TSC decides the creation of a subcommittee in accordance with TSC decision procedure.
In order to create a TSC subcommittee, a TSC member shall make a proposal to the TSC (via TSC email list) that that shall cover at least the following:
The TSC can modify a TSC subcommittee via a TSC decision. To request such a modification, a request is made to the TSC email list.
The TSC decides the termination of the TSC subcommittee in accordance with the TSC decision procedure. The submission of a request to terminate the TSC subcommittee should cover:
As a guideline, a subcommittee is most appropriate when the task to be addressed involves a relatively stable group of people with a high level of intersection of common involvement. A coordinator is more appropriate when there is a more dynamic group of people and issues may change frequently. A coordinator is also more appropriate for smaller efforts or topics requiring infrequent meetings.