Mission & Scope
NRE Labs grew out of the experiences of working network engineers who were quick to see the value of embracing infrastructure automation for the purpose of network reliability, but were challenged by the learning curve of doing so.
Many automation tools were initially designed for compute and storage automation; in addition much of the work in this area has been done in open source projects, with varying degrees of commercialization. In parallel, the “SDN revolution” initially produced a widely held belief that network engineers would need to become coders or become obsolete.
The group of engineers who started NRE Labs believes strongly that expecting an entire profession to start over and learn programming from first principles is most likely to result in a general failure to adopt network automation at all, even as networking itself becomes ever more important in the basic functioning of distributed, multicloud operations.
NRE Labs has been an open source project from its inception--both the platform itself and all the lessons. The NRE Labs community seeks to ensure that anyone anywhere can quickly learn key automation concepts using whatever network equipment and tools they have available. Thus we encourage contributions from as broad a swath of the networking and automation communities as possible. Anyone can contribute to any aspect of the project, according to the rules laid out in this governance document.
We resolve to provide a platform for education in infrastructure automation tools and techniques for network engineers that can immediately be applied to real-world daily tasks.
We encourage lessons of all types relating to network reliability engineering and infrastructure automation. All lessons should be concise and practical, focused on the mastery of a specific automation task.
The scope of the Project includes software development under an OSI-approved open source licence supporting the mission, including documentation, testing, integration and the creation of other artifacts that aid the development, deployment, operation or adoption of NRE Labs.
NRE Labs has two main components: the Platform (“Antidote”), and the Lessons. The Platform can serve a wide variety of purposes as a lesson delivery platform, and similarly, Lessons may be written for a wide variety of subjects which do not directly pertain to the Mission of the project.
NRE Labs fully welcomes and encourages experimentation with both components, regardless of direct relevance to the documented Mission. However, in order to ensure that sufficient resources are consistently dedicated to fulfilling the Mission of the project, and to maintain brand consistency for Users, the Technical Community will document and maintain a core roadmap for the Platform as well as criteria for Lessons that will be hosted on labs.networkreliability.engineering. Committers will determine if Platform contributions are “Core” or “Experimental” in relation to the Community-approved roadmap and prioritize commits accordingly. Committers will also determine if Lessons meet hosting criteria. See “How to Contribute” guides for more detail.
The Technical Community will be responsible for all aspects of oversight relating to coordinating the technical direction of the Project, including the architecture and projects needed to achieve the Mission and Scope of the Project; for approving project or system proposals (including, but not limited to, incubation, deprecation, and changes to a sub-project’s scope) in accordance with the Contribution Process and Inbound Code Review Policy to be developed, approved and maintained by the TC; coordinating Technical Community engagement with the end-user community with respect to requirements, high level architecture, implementation experiences, use cases, etc; working with other open source or open standards communities as needed; and establishing and enforcing community norms, workflows, issuing releases, and security issue reporting policies.
Technical participation in the Project is open to anyone so long as they abide by the terms of this document and documents referenced herein. Technical Community meetings are conducted in English and are open to the public and documented for subsequent review. The Technical Community generally will involve Contributors and Committers. Contributors include anyone in the Technical Community who contributes code, documentation, lessons or other artifacts to the Project. Committers are Contributors who have earned the ability to modify (“commit”) source code, documentation or other artifacts in a project’s repository. Each Project will ideally have at least 2 Committers.
A Contributor may become a Committer by a majority approval of existing Committers, and at need may be removed by majority approval of the other existing Committers. Project contributors may request the removal of a Committer by notifying the Steering Committee, or the Committer can resign for their own reasons. The Technical Community may add, refine and/or eliminate the roles of Contributors, and Committers, and create new Technical Community roles, as it sees fit.
The Technical Community will require a Leader to drive the development of the Project, including facilitation of Technical Community contributions to Project milestones and of resolution of any Community disagreements of a technical nature, eg relating to the architecture or achievement of technical milestones. The Leader will also represent the overall Technical Community within the Steering Committee. In brief, the Leader should be an excellent project manager and diplomat in addition to possessing technical vision and skills.
Initially, the Project’s technical founder will be the Technical Community Leader for a term of 1 year from the Community adoption of this Governance document. This term is intended to provide for a broad transfer of knowledge and socialization of Project goals and technical norms to the Technical Community as a whole.
Thereafter, Technical Community Leaders (TCLs) will be nominated or can self-nominate from among the existing Committers. The TCL will be elected by a simple majority or greatest plurality for a term of 1 year by a private electronic vote of community members with documented contributions accepted in the previous 12 months (“Voters”).
The Technical Community will also select a Curriculum Lead according to the same process as Project Leads. The Curriculum Lead is responsible for recruiting and doing the technical onboarding and support of new content developers, in accordance with the Contribution Process and Inbound Code Review Policy. The Curriculum Lead will also maintain a list of curriculum in progress, prioritized by relevance to Scope and Curriculum criteria, and help ensure regular and relevant curriculum releases.
While the Project aims to operate as a consensus-based community, if any Technical Community decision requires a vote to move the Project forward, the eligible voters in the Technical Community will do so by simple majority. Votes may be timebound and held either during meetings or electronically, with the voters’ choices publicly recorded, but at least 50% of eligible Community voters must participate within the specified period of time in order for a vote to take effect. With the exception of changes to Governance or Policy, votes will be decided by a simple majority or greatest plurality (in the case of multiple options). Governance or Policy changes will require approval of ⅔ of the voting quorum.
The Steering Committee is responsible for setting the strategic direction of the Project in accordance with its Mission. It provides approval and oversight of the Project’s budget and disbursements, Policy documents and other legal matters, marketing, and other non-technical activities of the Project. Committee business will be conducted in English and will be documented for later review.
As a community-led open source project, the majority of work performed to develop and advance NRE Labs and its adoption is expected to be done by community members. This work may take the form of technical contributions as described in the Technical Community section, as well as non-technical forms of contribution, including feedback from Users, marketing, design, legal review and other activities. Where necessary expertise is not available in the community, the Project may contract with commercial entities, including consultants, for incremental support.
The Steering Committee will be composed minimally of a Director, Treasurer, and the Technical Community Leader, and preferably also include a Curriculum Lead and a Marketing Lead, each as a Voter. The Committee may choose to admit additional members, such as a User Community representative, on either a voting or non-voting basis, under the Voting procedures described below.
The Technical Community Voters will elect a Director by private vote (greatest plurality) according to the Voting procedures listed below. The Director need not have made technical contributions, but is expected to have demonstrated consistent support for the Project in either a technical or non-technical capacity. The Director will have the following responsibilities:
- Organize and lead regular Steering Committee meetings, on a cadence to be agreed by the Committee.
- Work with the Committee to develop an annual operating plan and budget and report regularly on execution to plan.
- Authorize payments to third-party vendors in accordance with the Committee-approved budget or for expenses approved by majority vote by the Committee.
- Lead Sponsor recruitment, with the assistance of other Committee and Technical Community members.
- Regularly attend Technical Community meetings and work closely with the Technical Community Leader to ensure ongoing alignment between the Steering Committee and Technical Community.
The Treasurer will be elected according to the same criteria and process as the Director. The Treasurer will have the following responsibilities.
- Advise on and validate operating plan’s budget.
- Review payments authorized by the Director each month, and report regularly on revenues and expenditures in relation to budget.
The Marketing Lead will be elected according to the same criteria and process as the Director. The Marketing Lead will have the following responsibilities.
- Develop the Marketing portion, including metrics, of the annual operating plan in consultation with the Technical Community. Report regularly to the Steering Committee on progress against plan.
- Work with the Technical Community and other contributors to develop and execute launch plans for major releases and any major events.
- Work with the Community Manager and other contributors as needed to support ongoing marketing activities.
The Technical Community Leader and Curriculum Lead’s roles and selection process are described in the Technical Community section above.
The Committee may choose to define and formalize additional roles to assist the Director or lead particular initiatives under the Voting procedures described below.
- 1 vote per Steering Committee Voter
- Other voting members may be admitted by majority vote of existing Voters.
- If a Steering Committee Voter misses 3 meetings in a row without designating a proxy, their voting capacity will be suspended until they have attended 2 meetings in succession.
- If a Steering Committee Voter misses 4 or more meetings in a row, with or without a proxy, the Steering Committee may remove that individual and replace them with someone with greater availability.
Elections and any other voting decisions require a quorum of 50% of voting members. Voting can be held during Committee meetings, or by electronic means within a specified time period.
Amendments to this or Policy documents require a majority vote of the Steering Committee.
Community Assets and Intellectual Property
The Platform is licensed under the Apache v2.0 license. Lessons contributed to the Project are published under CC BY 2.0. Project documentation, web and marketing content shall be published under Creative Commons license. The Project shall develop and own all Project repositories and social media accounts, and domain name registrations created by the Project.
Title to all trade or service marks used by the Project (“Project Trademarks”) is currently held by Juniper Networks. In the likely event that the Project joins an open source foundation or fiscal conservancy, Project Trademarks shall be transferred and assigned to that entity to hold on behalf of the Project. Any use of any Project Trademarks by participants in the Project or others shall be in accordance with the Trademark and Branding Policy.
The Project may seek to integrate and contribute back to other open source projects (“Upstream Projects”). In such cases, the Project will conform to all license requirements of the Upstream Projects, including dependencies, leveraged by the Project. Upstream Project code contributions not stored within the Project’s main code repositories shall comply with the contribution process and license terms for the applicable Upstream Project.
Compliance with Policies and Licenses
Contributors will comply with the policies adopted by the Steering Committee of NRE Labs. These policies may include: