Skip to content

doc: first cut at documentation for support level - #139

Merged
mhdawson merged 30 commits into
nodejs:masterfrom
mhdawson:support
Mar 19, 2019
Merged

mhdawson merged 30 commits into
nodejs:masterfrom
mhdawson:support

Conversation

@mhdawson

Copy link
Copy Markdown
Member

No description provided.

file for a package which documents the maintainers expectations. For example:

```json
{ "support": {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

i do not think we should be encouraging this unless we also provide a tool that can validate its contents.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

What do you mean when you say "tools"? Something supported outside of this WG (like an npm/yarn cli feature)? Or like a separate cli tool we have to audit your installed dependencies?

I think ideally we would also work to get this kind of information displayed on the npm page and maybe readme badges, but other than that I am not sure what tooling would be most effective here.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

A separate CLI tool would be fine; for example, the SPDX in a license field can be checked with a CLI tool, as well as with npm. The "browser" field, however, has a defacto spec that all tools implicitly validate when accessing it.

Encouraging unchecked usage of a package.json field imo is a really difficult bell to unring.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

IMO the tools I have used with bespoke package.json additions have all been fine.

I understand your concern, but of all the source for recommending an addition to the file, a node WG is a good place to do it. We should obviously vet it with a larger audience first, but if that all goes well I am not sure why this would be a bad recommendation.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

If any form of schema validation exists that can be used in CI, and we can recommend that as well, then I'd be very happy with this.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

A simple node program that loaded package.json and validated the support section should be pretty easy do write I think. We could land this as "draft" (which is the directory it is targetted to) and look to get a volunteer to write that tool before we move it of draft to the directory for recommended practices.

anyone creating an application using an LTS version of Node.js and using the latest major version of LTS
adopting modules will will not have to accept semver-major level (ie. breaking) changes into that
application in order to receive essential fixes.
* NODE-SUPERSET - The package is maintained for versions of Node.js including both LTS and non-LTS releases, however, it

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

NODE-SUPERSET and NODE-SUPERSET-LTS seem the same except that perhaps the latter is saying "no breaking changes", which is so unrealistic that i don't think any package ever does it. I'm not sure there needs to be a difference here.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Ok, was not sure if anybody would try to achieve that or not. I'll remove.

@Emuentes Emuentes left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Mostly minor stuff observed, let me know if there is some other way you'd prefer to receive this feedback.

For example,
I could make a branch from your PR with the notes I made implemented into it.

That way you could keep what you want by merging it into your branch instead of having to make the changes yourself.

@Eomm Eomm left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

typo

@@ -0,0 +1,118 @@
# Baseline practice - Document support support levels

With the larger number of packages within the JavaScript ecosystem the level of

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I would rewrite this sentences using "Maintaners" as the subject and first word.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@mcollina need a bit more to follow the suggestion. Can you provide your suggested sentence?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

How about:

Package maintainers provide different level of support in the large npm ecosystem.

My main point here is that we should not start this document with “With”.

adopting modules will will not have to accept semver-major level (ie. breaking) changes into that
application in order to receive essential fixes.
* NODE-SUPERSET - The package is maintained for versions of Node.js including both LTS and non-LTS releases, however, it
may be necessary to accept semver-major level (ie. breaking) changes into that application in order to receive essential fixes.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I would prefer these levels to be organized inside a table with examples on Node LTS releases.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@mcollina I don't quite understand 'with examples on Node LTS releases'?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

At this point in time, we are supporting Node 6, 8, 10, 11. We need a simple table that states which Node.js version my package should support to be in each level.

{ "support": {
"target" : "NODE_LTS",
"response": "BEST_EFFORT",
"backing": "INDIVIDUAL"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

INDIVIDUAL is not listed as an option below.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Fixed.

ljharb and others added 9 commits January 25, 2019 10:38
Co-Authored-By: mhdawson <michael_dawson@ca.ibm.com>
Co-Authored-By: mhdawson <michael_dawson@ca.ibm.com>
Co-Authored-By: mhdawson <michael_dawson@ca.ibm.com>
Co-Authored-By: mhdawson <michael_dawson@ca.ibm.com>
Co-Authored-By: mhdawson <michael_dawson@ca.ibm.com>
Co-Authored-By: mhdawson <michael_dawson@ca.ibm.com>
Co-Authored-By: mhdawson <michael_dawson@ca.ibm.com>

Support response quantifies how quickly the maintainer targets/is able to respond to issues:

* ABANDONED - Don't expect a response, the package is not being actively maintained

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Does this somewhat duplicate a similar "target" (i.e. would it make sense to skip the rest of the fields once a project gets retired)?

That said, would NONE work better (even if just to avoid saying "abandoned")? NONE can then also be used for cases when the maintainer has no intention to provide even "best effort" support (i.e. when the package is not necessarily "abandoned").

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

an alternative is "finished" - as many packages are considered to be "done" and need no further attention or updates.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Maybe rather than "finished" it could be "feature complete"? Bugs and security issues often happen on "finished" modules, and we wouldn't want to say these would never be updated. Just not to expect it for new features.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

It's almost a different dimension indicating new features functionality is being actively added to the module. What I had in mind was the response to issues with problems/questions. "finished" or "feature complete" does not really fit into that except that you know that some classes of questions (requests for features) are unlikely to get a positive response.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I've updated it to be NONE as suggested.


* ABANDONED - Not recommened for use. The package is depercated or not longer maintained.
* NONE - use at your own risk, no active support may or may not work for a given Node.js version.
* NODE-LATEST - The package is maintained only for the Latest Node.js versions. You will be required to update

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I would prefer we drop the NODE- prefix here (and in all other cases) since it doesn't really add value. Additionally, it prevents community expansion on using this context for the broader system.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

done

file for a package which documents the maintainers expectations. For example:

```json
{ "support": {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

What do you mean when you say "tools"? Something supported outside of this WG (like an npm/yarn cli feature)? Or like a separate cli tool we have to audit your installed dependencies?

I think ideally we would also work to get this kind of information displayed on the npm page and maybe readme badges, but other than that I am not sure what tooling would be most effective here.


Support response quantifies how quickly the maintainer targets/is able to respond to issues:

* ABANDONED - Don't expect a response, the package is not being actively maintained

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Maybe rather than "finished" it could be "feature complete"? Bugs and security issues often happen on "finished" modules, and we wouldn't want to say these would never be updated. Just not to expect it for new features.

Emuentes and others added 2 commits February 1, 2019 16:34
Co-Authored-By: mhdawson <michael_dawson@ca.ibm.com>
Co-Authored-By: mhdawson <michael_dawson@ca.ibm.com>
dominykas and others added 3 commits February 22, 2019 12:10
@mhdawson

Copy link
Copy Markdown
Member Author

@wesleytodd you show as requesting changes. I think you comments have been addressed. Can you take another look?

@mcollina I think I have also addressed your comments or at least commented on questions. Can you take another look as well.

@mhdawson

mhdawson commented Mar 1, 2019

Copy link
Copy Markdown
Member Author

Sorry to nag but @mcollina @wesleytodd can you take a look?

@@ -0,0 +1,118 @@
# Baseline practice - Document support support levels

With the larger number of packages within the JavaScript ecosystem the level of

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

How about:

Package maintainers provide different level of support in the large npm ecosystem.

My main point here is that we should not start this document with “With”.

adopting modules will will not have to accept semver-major level (ie. breaking) changes into that
application in order to receive essential fixes.
* NODE-SUPERSET - The package is maintained for versions of Node.js including both LTS and non-LTS releases, however, it
may be necessary to accept semver-major level (ie. breaking) changes into that application in order to receive essential fixes.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

At this point in time, we are supporting Node 6, 8, 10, 11. We need a simple table that states which Node.js version my package should support to be in each level.

maintain the package. Consider supporting this sponsorship through patreon etc.
* BOUNTY - The package is maintained through the use of a bounty service
* PROJECT - The package is maintained under the auspices of a larger project (ex Node.js project).
* FOUNDATION - The package is maintained and supported under the auspices of a Foundation.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

A project that has:

  • most developers working on it has an HOBBY.
  • some developers supported by their COMPANY

how would be categorized? How that would change if it is part of a Foundation or not?

@mhdawson

mhdawson commented Mar 5, 2019

Copy link
Copy Markdown
Member Author

@mcollina addressed your comments please take another loo.

@we any chance you'll get to take a look soon?

@mcollina mcollina left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I have one last

maintain the package. Consider supporting this sponsorship through patreon etc.
* BOUNTY - The package is maintained through the use of a bounty service
* PROJECT - The package is maintained under the auspices of a larger project (ex Node.js project).
* FOUNDATION - The package is maintained and supported under the auspices of a Foundation.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

In the case of a FOUNDATION it's harder to choose as it depends on the level of COMPANY support and at what level the package is a member of a foundation (for example IMPACT versus Sandbox). I think the package owner should choose based on which they believe reflects where the larger portion of backing for the module comes from.

I think we should not have this type of ambiguity in this format.

@Emuentes

Emuentes commented Mar 8, 2019 •

Copy link
Copy Markdown
Contributor

@Eomm has created a tool to validate the "support level" object in the package.json file.

Can some of the folks reviewing this spec review the code and provide any feedback if needed?

Issue "ticket" for creating the tool
#161

Code for the tool:
https://github.com/Eomm/package-compliant

to the latest LTS Node.js version in order to ensure you can use new versions/get security fixes.
* LTS - The package is maintained for the Node.js LTS releases (both in Active and Maintenence mode).
Anyone creating an application using an LTS version of Node.js and using the latest major version of
LTS adopting modules will will not have to accept semver-major level (ie. breaking) changes into that

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

will will - duplication of word

identify your package with an option which is not yet listed, please PR your
option into the lists in the sections which follow. In the package.json the values
can be any string, those which are not documented in the lists within this
document considered "custom" and may irgnored for flagged by any tooling that

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

typo ignored

@mhdawson

Copy link
Copy Markdown
Member Author

@ghinks , @mcollina , @Eomm comments addressed (the filename is fixed if you checkout the repo, Github UI does not seem to show it though)

@mhdawson

Copy link
Copy Markdown
Member Author

@wesleytodd see I got your mention wrong last time so tagging again.

@wesleytodd

Copy link
Copy Markdown
Member

Sorry, I have been attempting to disconnect and focus on my family for a bit. I will be sure to check back in when my parental leave it finished, but for now I am going to continue my small hiatus. I will approve so I don't hold anything up unnecessarily, and if I find any input I have when I check back in I will be sure to post it. Keep up the good work team!

@mhdawson

Copy link
Copy Markdown
Member Author

I think I've addressed all the comments so far and since it's landing as a draft I think it's ok if it lands. I'll plan to do that on Monday March 18th unless somebody comments/objects before then.

@mhdawson
mhdawson merged commit d07016d into nodejs:master Mar 19, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.