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

RFC: MnemOS Technical Readiness Levels #229

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open

Conversation

jamesmunns
Copy link
Contributor

This RFC proposes a set of readiness levels that can be applied to components and features
of the MnemOS project.

@jamesmunns jamesmunns added the kind: RFC Requests for Comments as design proposals label Aug 14, 2023
@jamesmunns
Copy link
Contributor Author

jamesmunns commented Aug 14, 2023

Open design question(s):

  • Where and how do we enumerate features/components and their MTRLs?

@jamesmunns
Copy link
Contributor Author

Also, for anyone who hasn't seen NASA's TRLs, that was a vague inspiration, but not mapped 1:1 due to the differences in context + expectations.

Comment on lines +9 to +18
* A: Production Level - paid support available
* B: Ready for general usage
* C: In wide usage
* D: In Implementation
* E: In Design/RFC/Experiment
* F: Early proposal
* G-W: Reserved
* X: Deprecated
* Y: Retired
* Z: Declined
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i'm not convinced that letters are the best naming scheme here. they do indicate an ordering of states, which is valuable, and give the states a very short name, which is also potentially valuable. however, it's not super obvious what they mean if documentation just states that something has TRL "A" --- the reader has to then go look at the docs to see what TRL "A" means. it might be better to indicate that the names of the TRLs should be used in documentation, rather than the letters, and the lettering/numbering scheme should be used primarily internally to this document?

so, for example, the docs for a component maybe should generally say:

Technical Readiness Level: Production-Ready (A)

rather than

Technical Readiness Level: A

what do you think?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I think there's something to be said about abbreviations being convenient for those in the know, and confusing for those that aren't.

We could also ditch the letters and give each level a punchy one word name to keep things easy to include and repeat.

Comment on lines +52 to +72
* Strictly follow semver and have a version >= 1.0.0
* Have basic documentation
* Have some testing
* Are used across the MnemOS project and platforms

### C: In Wide Usage

This level is considered general mature, though it may have "rough edges" or may not be mature when used outside
of the way it is currently employed.

This level is intended for components that are already used and seem to be working fine, but have not yet been
thoroughly documented or tested for robustness. They are likely in use in one or more places in the MnemOS
repository, and likely have been mostly stable for a reasonable amount of time.

Developers should expect that components with a "C" MTRL are likely to work, but may require additional care
and verification, particularly when integrating into a new application or platform. It is likely possible to
sponsor efforts to move a component from MTRL "C" to "B" or "A".

Components with a "C" MTRL:

* May not strictly follow semver, and may have a version < 1.0.0
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it occurs to me that we have a TRL that's like, "follows semver, and is >1.0" and "doesn't follow strict semver, and is < 1.0". it might be worth having something for "follows semver strictly but is pre-1.0"?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's maybe worth noting that an MTRL C could be pre-1.0 and strictly follow semver.

Basically: if there is a meaningful stratefication you can think of here, happy to insert a C+/C- category, but I'd rather have a specific reason for stratefying them that way, rather than just to fill the 2x2 matrix of "follows semver" and "is >= 1.0".

1.0 and not-1.0 could also maybe be better described as "actually cares about version number and/or is published" and "lol whatever's at the tip of main goes".

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that "follows semver" vs "may break at any time" and "follows semver, with frequent semver changes" vs "follows semver, is 1.0 and won't churn versions frequently" are maybe two different level distinctions, but honestly, 🤷‍♀️

@hawkw
Copy link
Contributor

hawkw commented Oct 5, 2023

do we wanna go ahead and merge this? i'm happy to adopt the TRL scheme, at least provisionally, and we can go back and change the TRL system later if we want to.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind: RFC Requests for Comments as design proposals
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants