Skip to content
This repository has been archived by the owner on May 7, 2020. It is now read-only.

Define a lifecycle for projects #50

Open
6 tasks
martinwoodward opened this issue Sep 1, 2016 · 7 comments
Open
6 tasks

Define a lifecycle for projects #50

martinwoodward opened this issue Sep 1, 2016 · 7 comments
Assignees

Comments

@martinwoodward
Copy link
Contributor

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?

@DaveNoderer59
Copy link

DaveNoderer59 commented Sep 1, 2016

Something like:

Active
Abandoned
Archived
Experimental

@martinwoodward
Copy link
Contributor Author

Yeah, in the "Active" category I was wondering if we need to differentiate between platform components which we want to have a higher bar for governance vs regular active (i.e. something like WiX) where we want to support the project as part of the foundation but want to let the project have lots of autonomy.

So:

  • Active
  • Core (or Platform?)
  • Archived (or Shelved / Superseded)
  • Experimental (or Incubation)
  • Abandoned (Is that just a category of archived / shelved)?

@leastprivilege
Copy link
Contributor

Not more cores please ;) the term is overload enough already

  • Active
  • Platform (which is suppose also means active?)
  • Archived
  • Incubation

@DaveNoderer59
Copy link

A lot of archive categories.. I was thinking of something that is not really working (abandoned) vs something that is done but no longer active. Just archive is fine and focus on active items.

If platform and incubation i wonder if there is a better word than active to indicate.. operational, production, Or just active and a secondary Level to indicate the governance bar.

Incubation may still be good indicating it is not ready for prime time and not fully active yet. Many projects might go from incubation to archive??

@BillWagner
Copy link
Collaborator

After reading the other comments, how about:

  • Incubation
  • Active/Platform
  • Active/Community
  • Archived/Superseded
  • Archived/Ended

That gives us three "states": Incubation, Active, Archived. The Active and Archived each have sub-categories that provide some additional information for community members.

@martinwoodward
Copy link
Contributor Author

How about the word "Done" rather than "Archived" and just make "Platform" the only special sub-status. Superseded can just be noted in the project ReadMe as part of declaring Done.

  • Incubation
  • Active
    • Platform
  • Done

If folks like that, next thing would be to pull together a sentence describing each state and then we can work on what the criteria / gates are for the states.

@richlander
Copy link
Contributor

@jongalloway please decide what you'd like to do with this proposal.

@jongalloway jongalloway self-assigned this Mar 12, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants