node-convergence-archive icon indicating copy to clipboard operation
node-convergence-archive copied to clipboard

docs: Add deprecation policy

Open geek opened this issue 9 years ago • 19 comments

Closes https://github.com/nodejs/io.js/issues/1704

geek avatar May 18 '15 16:05 geek

-1 on this. Breaking end-user code at the end of a pre-determined 3-month cycle without any idea of the downstream impact is not acceptable.

chrisdickinson avatar May 18 '15 16:05 chrisdickinson

@chrisdickinson how long of a period do you need, 5 months, a year?

geek avatar May 18 '15 18:05 geek

"Until we've determined breakage is below a given threshold, on a per-feature basis" would be my preference.

chrisdickinson avatar May 18 '15 18:05 chrisdickinson

@chrisdickinson I think that has a solid spirit and goal to it. You are, however, tying yourself to legacy code and future code that chooses to use the API you want to delete.

Instead, lets have a hard and fast policy and do our best to keep people on board with changes. We can build a much cleaner framework if we are allowed to clean it :)

geek avatar May 18 '15 19:05 geek

Why are we putting a 5th document into the root of the project that's not used by any of the tools? It's getting a bit crowded there.

rlidwka avatar May 19 '15 00:05 rlidwka

@rlidwka you can put it wherever you want... the point is to establish a policy.

geek avatar May 19 '15 01:05 geek

This will likely need to come up on the tsc-agenda. /cc @nodejs/tsc

jasnell avatar May 19 '15 15:05 jasnell

This still need more discussion. Also, it should probably be PR'd to the io.js repo for now.

Fishrock123 avatar May 19 '15 15:05 Fishrock123

If deprecated APIs are never deleted, people come to ignore the deprecation warnings, because they are effectively meaningless, leading to a situation where you can never delete them because nobody stopped using them, and deleting them is high-impact.

But 3 months seems pretty arbitrary to me, too.

Introducing a deprecation in a semver-major release, and then deleting in the next semver-major release might be more predictable. Depending on how predictable semver-major releases are.

sam-github avatar May 19 '15 16:05 sam-github

@sam-github 3 months is entirely arbitrary... I am more trying to get the conversation started and provide a basic set of ideas. I think your suggestion makes more sense, let the major version dictate the deletion.

geek avatar May 19 '15 18:05 geek

@geek its a good conversation to start having, thanks for kicking it forward.

sam-github avatar May 19 '15 19:05 sam-github

Why are we putting a 5th document into the root of the project that's not used by any of the tools? It's getting a bit crowded there.

Because every time we add one someone says "why another file in the root?" and then nobody creates a directory and we end up putting it in the root anyway :)

Someone should send a PR moving all but LICENSE and CONTRIBUTING to a directory.

mikeal avatar May 19 '15 19:05 mikeal

Or move those to a separate repo entirely. We do have dev-policy available for use. The deprecation policy document really ought to live there.

jasnell avatar May 19 '15 19:05 jasnell

Imo dev-policy should eventually live in-tree, because then people will actually see it and it seems more official.

Fishrock123 avatar May 19 '15 19:05 Fishrock123

Ya, also the dev policy is specific to nodejs/io.js and nodejs/node. Once we are down to just nodejs/node it would be a little strange for the policy to live in a separate repo. We should keep the repo around indefinitely though just to reference all the conversations we had there.

mikeal avatar May 19 '15 20:05 mikeal

Ideally these docs would live in doc/internal – I've been collecting documents in that direction, but I have yet to make the requisite internal doc sprint.

chrisdickinson avatar May 19 '15 20:05 chrisdickinson

doc/internal may not be visible enough though.

Fishrock123 avatar May 19 '15 20:05 Fishrock123

There are ways we can mitigate that – huge-big links on the README to appropriate docs, making sure there are decent "landing page" indexes for internal docs, hosting on the main site.

chrisdickinson avatar May 19 '15 20:05 chrisdickinson

Another thing I just thought about: we're doing RC builds for major releases now and have pulled breaking changes from those once we realized their impact was larger than originally estimated. We may want to standardize a timeframe that we hold majors in RC when there are deprecations so we can continue to understand their impact.

mikeal avatar May 20 '15 11:05 mikeal