The Flux framework is a family of projects used to build site-customized resource management systems for High Performance Computing (HPC) data centers. This document specifies licensing and collaboration guidelines for Flux projects.
-
Name: github.com/flux-framework/rfc/spec_2.adoc
-
Editor: Jim Garlick <garlick@llnl.gov>
-
State: raw
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.
A Flux project is defined as software which implements a resource manager function, or is otherwise tightly coupled to the resource manager or its communications framework. Flux projects are expected to have contributors spanning academic institutions, government laboratories, companies, and individuals. Our licensing and collaboration guidelines have the following goals:
-
Encourage participation in the Flux community by all interested parties.
-
Ensure that the Flux community remains healthy and active by welcoming contributions, vetting changes in the open, collectivizing ownership, and distributing responsibility.
-
Allow Flux projects to leverage a large body of open source, including from the HPC ecosystem.
-
Ensure that end users have full source code to their particular Flux system to maximize their ability to self-support and obtain help from the Flux community.
-
Ensure that successful Flux systems are fully replicatable and redistributable across platforms and sites.
-
Promote design and documentation that allows any Flux component to be replaced with minimal impact on other components.
-
Provide Flux user interfaces that can be directly linked by applications, application runtimes, and tools distributed under proprietary or incompatible licenses.
-
Flux projects SHALL adopt the Collective Code Construction Contract (C4.1) described in Flux RFC 1.
-
It is RECOMMENDED that Flux projects be hosted under the Github flux-framework organization, including use of the Github tracker as outlined in C4.1.
-
It is RECOMMENDED that Flux projects be discussed on the Flux discussion list <flux-discuss@lists.llnl.gov>.
-
Interfaces exported by Flux projects to the Flux framework SHOULD be documented as a Flux RFC.
-
Flux projects SHALL be licensed under the GNU General Public License (GPL).
-
Flux projects are RECOMMENDED to be licensed under GPL version 3 or later.
-
Flux projects SHALL permit redistribution and/or modification under the project’s base GPL version, or any later version per Free Software Foundation recommendations.
-
Flux projects SHALL NOT require a legal document such as a contributor license agreement or copyright assignment document to be signed by contributors.
-
Copyright for a particular Flux project SHALL be held jointly by the contributors to that project.
-
Selected Flux programming interfaces, such as those used by applications, application runtimes, and tools, MAY be designated as Flux user interfaces.
-
Flux user interfaces SHALL be documented as such in a Flux RFC.
-
Flux user interfaces SHALL be licensed under the Lesser GNU General Public License (LGPL).
-
Flux user interfaces are RECOMMENDED to be licensed under LGPL version 3 or later.
-
Flux user interfaces SHALL permit redistribution and/or modification under the interface’s base LGPL version, or any later version per Free Software Foundation recommendations.