Skip to content

Major version bump #1061

Closed
Closed
@chrisdickinson

Description

@chrisdickinson

By now we've gathered a sizeable number of PRs liable to require a major version bump. I've listed them below:

subsystem issue title issue links
process,lib fix process.send() sync i/o regression #760 #774
url significantly improve the performance of the url module #933
url re-add path in url.format #893
util fixed behavior of isObject() #822
os remove trailing slash from os.tmpdir() #747
freelist Remove Ryan's Freelist feature #569
deps Moving to V8 4.{1,2}, reverting floating V8 patch* #1026 #952

*: I might have noted this one incorrectly! Please let me know if this is in error.

I echo @domenic's sentiment here: I'd like to keep the number of breaking changes per major bump few in number, so this seems like a fairly good set of issues.


Our current setup for major bumps:

  • Cut a new branch – v2.x.
  • Bump the appropriate node_version.h version. Commit as "Starting work on v2.x".
  • Merge the PRs constituting the major bump to v2.x.
  • Switch the Github primary branch to v2.x.
  • We may have to update Jenkins? @rvagg would you know more about this?

As a side effect of this:

  • All existing PRs will be targeting the wrong branch (v1.x), including the PRs we would merge into the new v2.0.0 release.
  • We also will have to decide on a course of action for supporting v1.x – that is, do we go the joyent/node approach and land PRs in the "oldest applicable" branch and forward port, or land in the current development version and backport? (I am in favor of the latter, but want to present both options.)
  • Finally, the path we choose going forward with branch names & landing patches will influence our options for LTS support: if we keep vN.x branches, we are able to backport semver-minor changes to old versions, if we keep vN.N.x branches, we are only able to backport semver-patch changes.

A proposal:

Short-term: Do not cut major branches until we bump. Skip cutting the v1.x this one time, since it already exists. Develop current major version off of the master branch. Only cut vN.x branches at bump time. The downside is that all PRs will be mistargeted, but I don't think there's any avoiding that now. Land all changes in current development version, backporting them as necessary to older major lines. We keep vN.x, but commit to only backporting minor level patches sparingly; as an insurance policy for situations that warrant bringing a more secure API back to an old version. Generally only patches will be backported.

Long-term: I'd like to see the node_version.h fields templatized, so that the build system can grow a "release" job that can stamp the numbers in without having to affect git history. Currently that information is duplicated from the repository tags into the working tree, and I think it would ultimately be cleaner/easier to tool if it were purely repository metadata.

Thoughts on this, @iojs/tc, @iojs/build?

Metadata

Metadata

Assignees

No one assigned

    Labels

    discussIssues opened for discussions and feedbacks.metaIssues and PRs related to the general management of the project.

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions