Define a lifecycle for projects #50
Description
In our Governance section we should define a lifecycle for projects, specifically:
- What states we consider a project to be in
- What those states mean for the people running the project but also people thinking about taking a dependency on it
- Any gates or approval process before a project is allowed to be in a certain state
The best way to think about this is to take some examples.
.NET Core (or the coreclr, corefx & rosyln projects) are very active. They have shipped a V1 and we want to consider them as part of the core platform. The CLA must be enabled for .NET Core repos and the .NET Core teams consult regularly with the Technical Steering Group to help with co-ordination.
MEF v2 is now System.Composition in the corefx project. It is very much alive an active as a technology - but the old MEF v2 project and MEF v1 is essentially shelved or in an archive state. How do we explain that to consumers?
Wix, Orchard & Umbraco are very active, stable projects with many releases under their belts - but equally we want to make sure they have complete autonomy and freedom to work well (provided the projects adhere to our code of conduct).
Projects like LLILC are more on the experimental / incubation side of the house. They are cool, innovative technologies that are actively getting worked on but we wouldn't consider them completely mainstream yet. Definitely something you can use if it fits the bill for what you need, but beware that the project is still in the early stages.
We want to support innovation in .NET - we don't want to limit projects in the .NET Foundation to ones that have already proven themselves broadly useful. However we also want to make sure people know what to expect from a project, but also what we should do if we declare that a project is no longer being actively worked on. Their should also be a process in place is someone wants to pick up a project that is no-longer active and try to get it going again.
I was thinking we could:
- Agree on a initial list of states that we can define projects to be in
- Flesh out what each of those states mean
- Define how a projects gets to declare it is in one of the states
- Define the process to move to a different state
- Write all this up in a file in the Guidance folder and submit it as a PR for review
- Start rolling it out across the .NET Foundation projects.
Thoughts?