Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Define what lifecycle stages are, and how we want to use them #6

Open
jdhoffa opened this issue Jan 25, 2024 · 3 comments
Open

Define what lifecycle stages are, and how we want to use them #6

jdhoffa opened this issue Jan 25, 2024 · 3 comments
Assignees
Labels
lifecycle Practices pertaining to the lifecycle of code.

Comments

@jdhoffa
Copy link
Collaborator

jdhoffa commented Jan 25, 2024

Summary of a discussion had between myself and @Antoine-Lalechere @cjyetman @MonikaFu @jacobvjk

Lifecycle Stages

Maintainers need to understand and flag the lifecycle stage of a repository (experimental, stable, superseded, deprecated) and manage changes accordingly.

Stability and Change Management:

Repositories should have clear indications of their stability status. Maintainers must communicate significant changes, especially when those changes may impact the stability or expected behavior of the repository (and especially if it is known that that repository has many downstream dependencies/ is in production).

Retroactive Implementation:

There's a recognition that implementing lifecycle stages and maintainer roles is retroactive for many existing repositories, which requires careful consideration to avoid disrupting established workflows. e.g. Some of our code we may want to call "experimental" even though it is currently very much used in production.

Impact on Other Projects:

⁠Any changes in one repository should be made with an awareness of how they impact other related projects or repositories. Lifecycle states may help mitigate this, as we can aim to not have strong dependencies on code marked experimental.

Experimental Features in Stable Repositories

It's acceptable to have experimental functions within a stable repository as long as it's communicated in the documentation.

Input and Output Stability:

For repositories in production, it's especially important to maintain stable inputs and outputs, as changes could break downstream dependencies.

@jdhoffa jdhoffa changed the title Define lifecycle stages Define what lifecycle stages are, and how we want to use them Jan 25, 2024
@jdhoffa jdhoffa added the lifecycle Practices pertaining to the lifecycle of code. label Jan 25, 2024
@jdhoffa
Copy link
Collaborator Author

jdhoffa commented Jan 25, 2024

Thanks @cjyetman:

R pkg {lifecycle} has pretty good descriptions of lifecycle stages/states:
https://lifecycle.r-lib.org/articles/stages.html

@AlexAxthelm
Copy link

Adding to the lifecycle discussion, I'm also a fan of the repostatus.org badges, which communicate something different than R's lifecycle badges.

The R lifecycle paradigm is useful for talking about the API of an R package (including being able to communicate the lifecycle status of functions and arguments), but seems limiting when talking about a whole repo.

In particular the Concept, WIP, and Active/Inactive repo labels seem useful to indicate an overall status of where we are with a repo, beyond "Stable/not stable"

https://www.repostatus.org/lifecycle

@jdhoffa
Copy link
Collaborator Author

jdhoffa commented Feb 5, 2024

Adding my two cents as well, I wonder if the above may be overly complicated.

e.g. What is the actionable difference between "Concept" and "WIP"? Could "Active" and "Inactive" not just be indicated by if the repository is archived or not?

Let us discuss it in a future DevHangout, but my personal preference is to limit any tags/ badges to those that crucially convey some bit of "actionable" insight while stripping away any unnecessary flourishes.

But perhaps that is "too lean" :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
lifecycle Practices pertaining to the lifecycle of code.
Projects
None yet
Development

No branches or pull requests

2 participants