-
Notifications
You must be signed in to change notification settings - Fork 146
Description
Hey!
For a project, I was trying to implement the node namespace values. I took some notes as I was exploring it, which you can find raw here. However, I'd like to refine them and share my issues/concerns with the node namespace values:
- Currently, there is inconsistency in how the values are named.
ltsis equivalent tolts_allif we're looking at the naming of bothallandlts_latest/lts_active. We have two naming schemes side by side - effectively, we've implemented both a flat structure and a tiered structure, and the intersection of those two is messy.
activeis particularly problematic since it co-opts existing terminology.Activeis terminology already adopted by the release working group for LTS releases.activein the context of this includes both (Release WG terminology)currentandactive LTS, which does not help clarify the already confusing state that we exist within.
- Certain matrix combinations are missing.
- Example: there's not a way for someone to say they only support maintenance LTS.
- Example: there's not a way for someone to say they only support EOL versions.
- While these examples may not be something we'd immediately consider as valid options, there are potentially scenarios where they'd be useful. For example, imagine a polyfill library that backfills all possible new Node.js features to maintenance mode LTS, or a package that intentionally logs a message on EOL verisons.
Rather than building out an incomplete structure (especially when we've collectively consistently struggled with naming release concepts in the past!) as a matrix, I'd like to propose that we simply take the elements of the matrix and directly support those as an array rather than a string.
- current
- lts/latest (alternate:
lts-latest) - lts/active (alternate:
lts-active) - lts/maintenance ((alternate:
lts-maintenance) - eol
any combination of these achieves every option in the existing namespace:
- all:
current, lts/active, lts/maintenance, eol - lts:
lts/active, lts/maintenance - lts_latest:
lts/latest - supported:
current, lts/active, lts/maintenance - current:
current
additionally, some combinations not currently covered by the existing namespace are covered:
- ones people might actually use:
- lts/maintenance
- eol
- handful of others, but I can't imagine people using them.
the only variation from the Release WG definition of release lines is lts/latest which is a subset that's independent of categories, rather than a combination of multiple categories.