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

Moving repos / convergence #2327

Closed
rvagg opened this issue Aug 7, 2015 · 50 comments
Closed

Moving repos / convergence #2327

rvagg opened this issue Aug 7, 2015 · 50 comments
Labels
meta Issues and PRs related to the general management of the project.

Comments

@rvagg
Copy link
Member

rvagg commented Aug 7, 2015

At this stage, the v3.x branch should be assumed to be the last release branch for io.js, what's on master will become Node.js v4.x and beyond along with convergence work which is largely contained within pull requests to nodejs/node—there are some additional changes but they are already coming over to this repo as pull requests, such as #2302.

With regard to releases & CI we have near-convergence but it's not complete:

  • You can now test pull requests with the single Jenkins across io.js and joyent/node (and nodejs/node if we need it). Landing pull requests via Jenkins is still a work in progress. @orangemocha may want to fill in details of the exact status of this since he's done most of the work.
  • Releases are completely separate processes for io.js and joyent/node. @misterdjules has documented the joyent/node process here, I have similar documentation here, but we haven't made progress on convergence of this because it also depends on nodejs.org being the release target and we're probably going to cherry-pick the best of both worlds for a convergence release process. We also need new signing keys, I've started that process but it turns out that getting money out of the Foundation is a non-trivial process! We'll be discussing release processes in @nodejs/build to make progress ASAP.

So, how do we handle this? How do we deal with the multiple repositories and how do we get towards a Node.js v4 alpha ASAP?

Proposed plan

I propose that we do the following as soon as we get consensus, it can go on tc-agenda if necessary.

Rename nodejs/io.js to nodejs/node

I've had discussions with many people about the merits of renaming vs just jumping over to nodejs/node. One of the interesting benefits of not renaming is that it resets the expectations of the entire contributor base (tsc, collaborators and beyond) that this is a new thing we are doing, not just io.js.

However, the current nodejs/node doesn't contain much that we can't afford to lose even if we were to delete it. There are pull requests in there that bring us to the convergence but the codebase is just io.js. So we could easily bring those pull reuqests into this repo and rename it and we keep the history and existing issues and pull requests that are more relevant to the converged codebase than those in joyent/node.

Already, pull requests and issues that are not directly relevant to 0.10 and 0.12 are being prompted to file against io.js, that can continue but with people being pointed to nodejs/node.

Create all future releases from nodejs/node

Not only for v4 but also v3 and even 0.10 and 0.12. This means the release tooling just needs to work in one way with the only difference being that v3 releases go to iojs.org but that'll end soon enough. I'm suggesting we have v0.10.x and v0.12.x branches for this to match the v3.x branch we now have.

Leave joyent/node in place for now

It'd be great if it could be moved to nodejs/node-legacy or similar but there's no reason that this should be a priority and existing tooling that points to joyent/node—not just official stuff but community tooling too, and while the GitHub web interface redirects, the GitHub API doesn't.

We should encourage all new issues against joyent/node to be filed in nodejs/node instead. We should encourage people who filed the existing pull requests over there to file them against nodejs/node and then work (slowly) to close all of them out completely.

Document the branch strategy for casual contributors

While the core group of contributors might be starting to get their heads around the new model that we've been discussing, it's vitally important that we communicate a simplified version of this that we can put at the top of CONTRIBUTING.md and (?) the top of README.md. Something simple enough that people are likely to read it but informational enough that it tells people which branch any pull requests should go against. Something like:


Issues should state clearly which version of Node.js or io.js they are reporting against

Pull requests should be made against master except where they are addressing bugs in older versions where the bugs either don't exist in master or do exist in master but the changes are significantly different and will therefore require a fresh pull request.

Stable releases are made from their own branches, with changes in master being cherry-picked from there into those branches where appropriate. Generally it should be left for the collaborator team to decide whether changes should be cherry-picked at all and to which branches.


The process for cherry-picking from master to stable branches will be interesting and we're going to learn best practices over time, I suspect that we'll see a lot of compounding pull requests where a cherry-pick isn't clean and requires some editing.

/cc @nodejs/tsc

@orangemocha
Copy link
Contributor

Landing pull requests via Jenkins is still a work in progress. @orangemocha may want to fill in details of the exact status of this since he's done most of the work.

Right, we have a unified workflow for testing pull requests but two different workflows for landing pull requests between v0.12/v0.10 and io.js. The work to bring the landining-via-jenkins to io.js & converged repo is very close to completion. However, it doesn't need to block us from moving to the converged repo. Both the testing and the landing pr jobs take the repo as a parameter.

We should ensure that the node-release job that is currently used for v0.x releases is not hardcoded to use joyent/node. If it is, it should trivial to fix that.

@orangemocha
Copy link
Contributor

+1 for renaming nodejs/io.js to nodejs/node.

The pull requests at https://github.com/nodejs/node/pulls will need to be re-applied, and note that a few have already landed.

It looks like the commits that should be ported from joyent/node have been listed in issues but the work to cherry-pick, solve merge conflicts and pass tests hasn't been done yet. That's gonna take some time. Perhaps it will be good to do it in a separate branch so that multiple people can work on it while we stabilize it.

Of course we should rename nodejs/node to something else (e.g. converged-node-temp) before renaming nodejs/io.js to nodejs/node.

@sindresorhus
Copy link

and while the GitHub web interface redirects, the GitHub API doesn't.

It does now: https://developer.github.com/changes/2015-07-21-automatic-redirects-for-renamed-repositories/

@mscdex mscdex added the meta Issues and PRs related to the general management of the project. label Aug 8, 2015
@rvagg
Copy link
Member Author

rvagg commented Aug 8, 2015

These are the only two commits (by name and PR-URL) on nodejs/node that aren't on io.js master:

@bnoordhuis
Copy link
Member

Leave joyent/node in place for now

I'd move it over, otherwise people will keep filing issues against it.

@thefourtheye
Copy link
Contributor

@bnoordhuis You mean move the commits and rename the iojs repo to node?

@bnoordhuis
Copy link
Member

Sorry, I mean move joyent/node to nodejs/node-legacy. And yes, rename nodejs/io.js to nodejs/node.

Maybe replace the contents of nodejs/node-legacy with a README pointing people to nodejs/node and close the issue tracker (maybe - not sure if that's a good idea.)

It won't block people from filing pull requests against the old repo, you can't disable those on GH, but that's probably less noise than the issue tracker.

@thefourtheye
Copy link
Contributor

Hmmm I think I'll miss the io.js name :(

@yosuke-furukawa
Copy link
Member

+1!!

@srl295
Copy link
Member

srl295 commented Aug 8, 2015 via email

@ChALkeR
Copy link
Member

ChALkeR commented Aug 9, 2015

+1

It's good to know that current nodejs/io.js issues and pull requests would not be lost or forgotten.

@orangemocha
Copy link
Contributor

@Fishrock123 mentioned that some things (issues?) link to issues in the current converged repo. We might want to edit them after the fact.

@bnoordhuis
Copy link
Member

Some of the Fixes: links in commit logs do too, but I'd designate that acceptable fallout. I wouldn't advocate rewriting the commit history.

@Fishrock123
Copy link
Member

Some of the Fixes: links in commit logs do too, but I'd designate that acceptable fallout. I wouldn't advocate rewriting the commit history.

Just need to make sure the related PRs and Commits have updated cross-links. I'll try to take care of this today-ish.

@jasnell
Copy link
Member

jasnell commented Aug 10, 2015

+1. On this. As soon as we can get this consolidated, the better. I'm neutral on bringing joyent/node over but we need to get primary development moved to the converged repo as quickly as possible.

@Fishrock123
Copy link
Member

Can we already rename nodejs/node to something else but wait just a bit to move io.js overtop of it? It'l make it easier to update any links then and there rather than trying to make a list.

@mikeal
Copy link
Contributor

mikeal commented Aug 10, 2015

Can we already rename nodejs/node to something else but wait just a bit to move io.js overtop of it? It'l make it easier to update any links then and there rather than trying to make a list.

Just so that we have a nice TODO list, what is holding up moving the io.js repo to node other than there being a repo there already?

@Fishrock123
Copy link
Member

Just so that we have a nice TODO list, what is holding up moving the io.js repo to node other than there being a repo there already?

Finding anything important that linked to the current nodejs/node repo. But since no-one seems to think anything is and I haven't been able to look much yet, go right ahead I guess. ¯\_(ツ)_/¯

@mikeal
Copy link
Contributor

mikeal commented Aug 10, 2015

go right ahead I guess

I'm going to guess that this might break some of the build stuff we have setup??? @nodejs/build

@orangemocha
Copy link
Contributor

I'm going to guess that this might break some of the build stuff we have setup??? @nodejs/build

Most likely the job that trigger nightly builds might have to be updated to build the new repo, if that's not handled automatically by the redirect.

One more thing to check: if git access nodejs/io.js is setup to redirect to nodejs/node, and if nodejs/node is setup to redirect to nodejs/converged-repo-archive, will this cause a redirect of nodejs/io.js to nodejs/converged-repo-archive? Not sure how these redirect are setup, if explicitly or implicitly when renaming, but it would be easy to test that with some temp repos.

@mikeal
Copy link
Contributor

mikeal commented Aug 10, 2015

One more thing to check: if git access nodejs/io.js is setup to redirect to nodejs/node, and if nodejs/node is setup to redirect to nodejs/converged-repo-archive, will this cause a redirect of nodejs/io.js to nodejs/converged-repo-archive? Not sure how these redirect are setup, if explicitly or implicitly when renaming, but it would be easy to test that with some temp repos.

  • nodejs/io.js will redirect to nodejs/node
  • old nodejs/node will break as it will point at the new nodejs/node (unless that's what the person wants)

@orangemocha
Copy link
Contributor

Just tested the way GitHub handles the two redirects and it's not going to break us. I created two temp repos to simulate what we are trying to do. Based on this test, I expect that after renaming nodejs/node to nodejs/node-convergence-archive and nodejs/io.js to nodejs/node:

... as explained by this warning on the GitHub help page:

Warning: If you create a new repository under your account with the same name as the transferred repository, existing redirects to the transferred repository will break. Instead, use a different name for the new repository.

@orangemocha
Copy link
Contributor

Based on consensus here, I renamed nodejs/node to nodejs/node-convergence-archive: https://github.com/nodejs/node-convergence-archive

@orangemocha
Copy link
Contributor

@rvagg and @nodejs/build , does anything need to be changed in the nightly build configs to point to nodejs/node? Once that's cleared, I think we can go ahead with renaming io.js.

@srl295
Copy link
Member

srl295 commented Aug 11, 2015

@orangemocha 👍 — should the node-convergence-archive repo have an updated description or other text to describe it?

@orangemocha
Copy link
Contributor

@srl295 : agreed. Now I have a plane to catch, so I will get to it after I resurface on the other side of the ocean... or feel free to make the change 👍

@Fishrock123
Copy link
Member

Updated repo descriptions for both node-convergence-archive and io.js.

@rvagg
Copy link
Member Author

rvagg commented Aug 11, 2015

Sounds like we have consensus on the important issues here, no need to push to tsc-agenda. The only outstanding one is the move of joyent/node but that's a non-blocker for everything else.

I'm going to rename io.js to node right now and fix up the nightly build stuff for that. Hold onto your seats.

@rvagg
Copy link
Member Author

rvagg commented Aug 11, 2015

Renamed, https://github.com/nodejs/io.js -> https://github.com/nodejs/node

nightlies are now set to come off nodejs/node#v3.x and next-nightlies are set to come off nodejs/node#master

@fengmk2
Copy link
Contributor

fengmk2 commented Aug 12, 2015

iojs and node has been merged now! :)

@Suixinlei
Copy link
Contributor

All Future will be from the nodejs/nodejs.README.md just has not been updated.

@Pana
Copy link

Pana commented Aug 12, 2015

Good news

@netgusto
Copy link

Nice to see convergence at last :) Bravo !

@kitajchuk
Copy link

👍

@silverwind
Copy link
Contributor

Could someone update the default target repo for the CI to use nodejs/node instead of nodejs/io.js?

@orangemocha
Copy link
Contributor

Could someone update the default target repo for the CI to use nodejs/node instead of nodejs/io.js?

done

@srl295
Copy link
Member

srl295 commented Aug 14, 2015

Q: what about the joyent/node wiki? Should it be merged in? I assume the content needs to be replaced with some combination of doc/website things?

@misterdjules
Copy link

@srl295 Since nodejs/node will also be used to host the v0.10 and v0.12 branches, some of the content from joyent/node's Wiki will need to be merged. These are some of the Wiki pages that I want to keep after the merge process:

These pages have some overlap with existing documents in the nodejs/node Wiki, but we need to keep what is specific to the v0.10 and v0.12 branches.

There might be other pages we want to keep.

@srl295
Copy link
Member

srl295 commented Aug 14, 2015

@misterdjules #440 (comment) notes that the wikis are a git repo (!), so could be merged via git.

@misterdjules
Copy link

@nodejs/tsc @nodejs/build v0.10 and v0.12 branches from joyent/node need to be pushed to nodejs/node, and development on these branches need to happen in nodejs/node as soon as possible.

joyent/node should also move to the nodejs org asap.

@jasnell
Copy link
Member

jasnell commented Aug 14, 2015

+1. I am working to get the open PRs organized too as all of those are
going to break once we shift the branches. We don't want to lose that work.
On Aug 14, 2015 9:27 AM, "Julien Gilli" notifications@github.com wrote:

@nodejs/tsc https://github.com/orgs/nodejs/teams/tsc @nodejs/build
https://github.com/orgs/nodejs/teams/build v0.10 and v0.12 branches
from joyent/node need to be pushed to nodejs/node, and development on these
branches need to happen in nodejs/node as soon as possible.

joyent/node should also move to the nodejs org asap.


Reply to this email directly or view it on GitHub
#2327 (comment).

@orangemocha
Copy link
Contributor

We could stop accepting new PRs in joyent/node, but keep the existing ones and land them by porting the commits to the new repo.

@jasnell
Copy link
Member

jasnell commented Aug 14, 2015

In the process of doing so now. New PRs should definitely only happen in
nodejs/node.
On Aug 14, 2015 10:39 AM, "Alexis Campailla" notifications@github.com
wrote:

We could stop accepting new PRs in joyent/node, but keep the existing ones
and land them by porting the commits to the new repo.


Reply to this email directly or view it on GitHub
#2327 (comment).

@orangemocha
Copy link
Contributor

So what prevents us from pushing the v0.10 and v0.12 branches to nodejs/node and continue development there?

@jasnell
Copy link
Member

jasnell commented Aug 14, 2015

Just caution... making sure nothing breaks :-) If you feel we're good to
go, then +1

On Fri, Aug 14, 2015 at 10:46 AM, Alexis Campailla <notifications@github.com

wrote:

So what prevents us from pushing the v0.10 and v0.12 branches to
nodejs/node and continue development there?


Reply to this email directly or view it on GitHub
#2327 (comment).

@misterdjules
Copy link

@orangemocha @jasnell On joyent/node's side, as long as nothing is deleted/removed there, I don't see a risk of breaking anything. Moving joyent/node to the nodejs GitHub org might break a few things, but we can give a heads up to all dependents about that.

@orangemocha
Copy link
Contributor

Right @misterdjules , moving the repo should be harmless. Anything needs to change in the release process?

Regarding pushing the branches, perhaps we should at least clearly document the procedure for landing those existing PRs. I think it would involve pushing a temp branch on the new repo, landing it with node-accept-commit, then finally pushing the updated branch back to the joyent\node repo. I can write something up next week, perhaps even automate some of it within the existing CI.

@misterdjules
Copy link

@orangemocha Releases of v0.10.x and v0.12.x still need to be done from jenkins.nodejs.org because signing keys for binaries/installers are still on a Windows agent connected to that CI platform. There's also the setup of the Linux agent used to build Linux binaries that uses a compiler that is old enough to support older C++ runtimes that can be found on e.g CentOS 5.7.

If we have enough bandwidth, it would be ideal to fix those issues and move the release jobs to nodesource's Jenkins platform (actually, I believe the issue with older C++ runtimes is already solved in a better way on jenkins-iojs.nodesource.com). If not, we can still use the jenkins.nodejs.org CI platform for a while.

The release guide can be used as is even after moving the joyent/node repository.

@orangemocha
Copy link
Contributor

Please take a look at nodejs/node-v0.x-archive#25876

@Fishrock123
Copy link
Member

This is now more or less done. See #2522 for updated info about 4.x.

We may still need to document the release cycle somewhere more.

yous added a commit to yous/nodejs.org that referenced this issue Oct 7, 2015
See nodejs/node#2327.

- `github.com/iojs/io.js` to `github.com/nodejs/node`
- `github.comnodejs/io.js` to `github.com/nodejs/node`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
meta Issues and PRs related to the general management of the project.
Projects
None yet
Development

No branches or pull requests