CPython migration to GitHub scheduled for today(mail.python.org)
mail.python.org
CPython migration to GitHub scheduled for today
https://mail.python.org/pipermail/python-dev/2017-February/147341.html
47 comments
I really dislike the trend of open-source software centralising around GitHub. It's slowly becoming a single point of failure in the ecosystem, and it's closed and corporate software. One day it's going to fail. And we'll be left with a plethora of people who don't know how to patch a file or attach a diff to an email. Sad. Is it really that hard to set up Trac or sth.?
But git itself is decentralized. Even if software projects are centralized around GitHub, many people (including myself) prefer the command line where possible, which is essentially universal and not hard to pick up at all. In a worst case scenario the entire project could be preserved with history and exported.
And you really think people might not be able to attach a diff to an email? I just don't see this dystopian future. For what it's worth I use GitHub but have essentially no brand loyalty to it.
And you really think people might not be able to attach a diff to an email? I just don't see this dystopian future. For what it's worth I use GitHub but have essentially no brand loyalty to it.
> But git itself is decentralized.
To me that sort of makes things worse. I have nothing against using GitHub as such, but I also think it's important that projects like this should lead by example. If you centralize things that are inherently decentralized it's hard to make a case that decentralization is important.
> many people (including myself) prefer the command line where possible, which is essentially universal and not hard to pick up at all.
As someone who, at least thinks they, understands how DVCS works I find the git command line quite unintuitive. It's a mix between more low level commands and added shortcuts. The solution becomes "just run these three commands you know and use Github".
> In a worst case scenario the entire project could be preserved with history and exported.
That's not really realistic, unless something really drastic happens. People often use Github for more than git itself, it becomes an integral part of the workflow. If it's was easy to switch people would run something else in parallel (which some projects do).
All in all I think the pragmatic solution is to have your own system and then interface Github as one channel. If you can't set up your own system that is competitive as a completment to Github, well then you are effectively dependent on Github.
To me that sort of makes things worse. I have nothing against using GitHub as such, but I also think it's important that projects like this should lead by example. If you centralize things that are inherently decentralized it's hard to make a case that decentralization is important.
> many people (including myself) prefer the command line where possible, which is essentially universal and not hard to pick up at all.
As someone who, at least thinks they, understands how DVCS works I find the git command line quite unintuitive. It's a mix between more low level commands and added shortcuts. The solution becomes "just run these three commands you know and use Github".
> In a worst case scenario the entire project could be preserved with history and exported.
That's not really realistic, unless something really drastic happens. People often use Github for more than git itself, it becomes an integral part of the workflow. If it's was easy to switch people would run something else in parallel (which some projects do).
All in all I think the pragmatic solution is to have your own system and then interface Github as one channel. If you can't set up your own system that is competitive as a completment to Github, well then you are effectively dependent on Github.
Yeah that's exactly how I feel. I've used all three (gitlab, bitbucket, and github).
If the OP is that worried about github going down, just add a pushurl in .git/config to another host and that solves the problem.
If the OP is that worried about github going down, just add a pushurl in .git/config to another host and that solves the problem.
It doesn't solve the problem. I still can't see the PRs and comments stored in github.
There are plenty of devs who don't know about patches and have never used `git format-patch` or `git apply`.
But then again, learning how to do it probably takes 5 minutes...
But then again, learning how to do it probably takes 5 minutes...
Sounds to me like you don't understand how git works. If GitHub shuts down, people will just use a different server to host their repository, such as gitlab.
The guy in charge of making the decision weighed the fact that it's closed source, and it still won.
> But to me, the development process is more important than worrying whether a cloud-based service publishes its source code... This is especially not a worry as GitHub is not a walled garden; its extensive SDK allows for downloading any and all data that goes into the platform.
In summary, his reasons were: github has become a social network of open source devs; gitlab has no killer features github doesn't; and Guido prefers github
https://snarky.ca/the-history-behind-the-decision-to-move-py...
The guy in charge of making the decision weighed the fact that it's closed source, and it still won.
> But to me, the development process is more important than worrying whether a cloud-based service publishes its source code... This is especially not a worry as GitHub is not a walled garden; its extensive SDK allows for downloading any and all data that goes into the platform.
In summary, his reasons were: github has become a social network of open source devs; gitlab has no killer features github doesn't; and Guido prefers github
https://snarky.ca/the-history-behind-the-decision-to-move-py...
So did twitter.
>I really dislike the trend of open-source software centralising around GitHub. It's slowly becoming a single point of failure in the ecosystem, and it's closed and corporate software. One day it's going to fail.
If your criteria is only depending on things that are not gonna fail someday, you'll be severely limited in your options.
Any decentralized solution would require money and people to host it (per project), would not provide a uniform interface to developers and users of code, and would not be as mature as GitHub is (at least initially).
Besides, git is decentralized -- so people will have copies of the repo anyway, which they can backup fully anywhere they like. As for issues, etc, they could get them from GitHub for future-proofing and store them somewhere -- if GitHub fails them for some reason, they could then make some importers and load the same issues, notes etc on another host.
>Is it really that hard to set up Trac or sth.?
Given that GitHub hosts 10,000s of projects, it would mean several collective man-years lost for no reason. And in the end you'll have Trac to face (which is something to avoid in itself).
If your criteria is only depending on things that are not gonna fail someday, you'll be severely limited in your options.
Any decentralized solution would require money and people to host it (per project), would not provide a uniform interface to developers and users of code, and would not be as mature as GitHub is (at least initially).
Besides, git is decentralized -- so people will have copies of the repo anyway, which they can backup fully anywhere they like. As for issues, etc, they could get them from GitHub for future-proofing and store them somewhere -- if GitHub fails them for some reason, they could then make some importers and load the same issues, notes etc on another host.
>Is it really that hard to set up Trac or sth.?
Given that GitHub hosts 10,000s of projects, it would mean several collective man-years lost for no reason. And in the end you'll have Trac to face (which is something to avoid in itself).
Re issue backups, there's: https://github.com/joeyh/github-backup
I'm not quite happy with it, but it's better than nothing.
I'm not quite happy with it, but it's better than nothing.
>"Any decentralized solution would require money and people to host it"
Unless home servers were used, in which case you're already paying for the bandwidth for your home internet connection.
All you'd really want to add on top of that is a decentralised identity layer, for managing permissions across all repositories.
Unless home servers were used, in which case you're already paying for the bandwidth for your home internet connection.
All you'd really want to add on top of that is a decentralised identity layer, for managing permissions across all repositories.
> you'll have Trac to face (which is something to avoid in itself).
Serious question: What's so bad about Trac?
Serious question: What's so bad about Trac?
Before github there was sourceforge. It's pretty dead now but open source development continues.
So while I agree that an open and distributed system that does what github is currently doing would be better, I don't think that github's popularity and eventual demise is as terrible as you claim.
So while I agree that an open and distributed system that does what github is currently doing would be better, I don't think that github's popularity and eventual demise is as terrible as you claim.
It's a company. How long can it live? Will it live 50 years later? 20? 10? This is an important question because projects like Python will live that long.
>This is an important question because projects like Python will live that long.
Planning in the 20 or 50 years range is counter-productive.
Heck, whole countries might not exist by that time (the same way ex-USSR and Eastern European countries split into different ones).
Planning in the 20 or 50 years range is counter-productive.
Heck, whole countries might not exist by that time (the same way ex-USSR and Eastern European countries split into different ones).
Languages/libraries evolve and bitrot is a fact of life, yes.
Now you have me thinking about how to plan that long! You would need an architecture easy to port and good documentation...
https://mcnp.lanl.gov/
Or become so important that old platforms are maintained for your sake!
Now you have me thinking about how to plan that long! You would need an architecture easy to port and good documentation...
https://mcnp.lanl.gov/
Or become so important that old platforms are maintained for your sake!
Look for a job programming planes or trains or other infrastructure. Typical service time is ~30 years, some systems live much longer.
It's a significant possibility that Github the company will die, but github the site will not, at least not immediately. For example, github could be bought, in which case there would be no immediate reason to think the site would cease to exist immediately. On the other hand, I find it hard to imagine that github the company could fail (i.e. die off) without github the site becoming extraordinarily less popular, in which case we shouldn't really care if github the site is still around. Of course there's also the option that code hosting becomes an inherently unprofitable business, in which case we're sort of screwed all around.
Trying to figure out which of these scenarios (or a different one!) is going to happen sure looks like optimizing prematurely to me, in particular so long as there does exist some fashion of a backup repository.
Trying to figure out which of these scenarios (or a different one!) is going to happen sure looks like optimizing prematurely to me, in particular so long as there does exist some fashion of a backup repository.
It's not impossible to move to a different platform.
There underlying git is decentralized. I have a cronjob set up to keep a local copy of all of my repositories. If github were to disappear tomorrow, I would still have the code.
Granted, I wish that the issues were stored within a branch, so that they would be copied along with the repository.
Granted, I wish that the issues were stored within a branch, so that they would be copied along with the repository.
Not a branch, but maybe git-notes would be a good place for them...
What we really need (instead of everyone using Trac) is a truly distributed P2P way of doing what Github is doing, forming a community around open source code and a platform for developing it.
Sounds like you could build such a tool on top of Git itself, just using, say, an orphan branch to store discussion histories, submitted patches, etc.
I really dislike the trend of carriages centralizing around gasoline engine. It's slowly becoming a single point of failure in the ecosystem, and it's dead and mechanical. One day it's going to fail. And we'll be left with a plethora of people who don't know how to brush down a horse or feed them. Sad. Is it really that hard to hitch up a horse?
[deleted]
> don't know how to patch a file or attach a diff to an email
How many minutes does it take to learn those skills?
How many minutes does it take to learn those skills?
I would wager a solid 3 minutes.
Background info:
https://snarky.ca/the-history-behind-the-decision-to-move-py...
https://snarky.ca/the-history-behind-the-decision-to-move-py...
Thank you for posting.
(The link is a very detailed blog post about why this migration is happening, and what alternatives to GitHub were considered).
(The link is a very detailed blog post about why this migration is happening, and what alternatives to GitHub were considered).
It's a shame they didn't pick a solution like RhodeCode(which is written in Python) at that point.
Afair it was because at the time decision was beeing made it wasn't open source, as it is now.
Afair it was because at the time decision was beeing made it wasn't open source, as it is now.
Brett Cannon's blog post (https://snarky.ca/the-history-behind-the-decision-to-move-py...) has been linked a bit and covers the general areas like the social aspects but your remark about open-source hit what I think is a fairly important point in the section about volunteer time:
“The second lesson I learned was about the dedication of volunteers. When the decision was made to switch to JIRA, one of the key attractions of that platform was that Atlassian was going to be hosting our instance and providing direct support (they were very involved in their proposal). But when the community started to protest over the idea of a closed-source, Java application I publicly said if we could get enough volunteers to manage our own Roundup instance then I would relent to using Roundup. There was actually a decent number of people who stepped forward, so we switched (the FSF offered to help put the call out for volunteers but in the end I didn't take them up on the offer as my own personal call seemed to bring enough volunteers forward). But what ended up happening is nearly none of those volunteers stuck around. At this point we have Ezio Melotti and R. David Murray to thank -- both core developers -- for keeping our issue tracker up an running and Upfront Systems for hosting it. This experience taught me that the people you can really count on are those that put the effort into the proposals themselves and those with a proven track record. While people who come out of nowhere have good intentions, that doesn't guarantee they will actually follow through (which I honestly should have known based on my experience from the Python core sprints at PyCon where people used to regularly come to tackle a big problem, get part way to a solution, swear they will finish when they get home, and then never be heard from again).”
That's not a slight on anyone but just an acknowledgement that there's no shortcut for ops. Moving the core Python repo to GitHub outsources that to a fairly large company's primary business and is staffed accordingly. For a project without major corporate support not having to manage a complex service is a big selling point.
“The second lesson I learned was about the dedication of volunteers. When the decision was made to switch to JIRA, one of the key attractions of that platform was that Atlassian was going to be hosting our instance and providing direct support (they were very involved in their proposal). But when the community started to protest over the idea of a closed-source, Java application I publicly said if we could get enough volunteers to manage our own Roundup instance then I would relent to using Roundup. There was actually a decent number of people who stepped forward, so we switched (the FSF offered to help put the call out for volunteers but in the end I didn't take them up on the offer as my own personal call seemed to bring enough volunteers forward). But what ended up happening is nearly none of those volunteers stuck around. At this point we have Ezio Melotti and R. David Murray to thank -- both core developers -- for keeping our issue tracker up an running and Upfront Systems for hosting it. This experience taught me that the people you can really count on are those that put the effort into the proposals themselves and those with a proven track record. While people who come out of nowhere have good intentions, that doesn't guarantee they will actually follow through (which I honestly should have known based on my experience from the Python core sprints at PyCon where people used to regularly come to tackle a big problem, get part way to a solution, swear they will finish when they get home, and then never be heard from again).”
That's not a slight on anyone but just an acknowledgement that there's no shortcut for ops. Moving the core Python repo to GitHub outsources that to a fairly large company's primary business and is staffed accordingly. For a project without major corporate support not having to manage a complex service is a big selling point.
> For a project without major corporate support not having to manage a complex service is a big selling point.
This was the best part of your post, which finally convinced me this was a good idea.
This was the best part of your post, which finally convinced me this was a good idea.
It may also interest you that Kallithea, an open source fork of the GPLv3 release of RhodeCode and member project of the Software Freedom Conservancy, was in the running at some point. From the same blog post:
"... PEP 474 ... Nick proposed moving to Kallithea ... Nick Coghlan subsequently saying he would rather back GitLab over Kallithea (due to maturity issues of the projects) ..."
https://kallithea-scm.org/
"... PEP 474 ... Nick proposed moving to Kallithea ... Nick Coghlan subsequently saying he would rather back GitLab over Kallithea (due to maturity issues of the projects) ..."
https://kallithea-scm.org/
I wish Ruby would do this. And Mozilla/Firefox.
I think it would yield a lot of community contributions and developer engagement.
I think it would yield a lot of community contributions and developer engagement.
Are the migrating only the code, or the issue tracker as well?
Just the code and pull requests. Not the issue tracker.
How come? The pull requests are handled as issues in Github, AFAIK.
They can be used independently.
Migration PEP:
https://www.python.org/dev/peps/pep-0512/
https://www.python.org/dev/peps/pep-0512/
The PEP mentions that they'll be using a linear git history (no merges), but doesn't explain any of the reasons or perceived advantages of doing so. I found this pretty curious because (1) PEPs tend to explain why a decision is made, much like an RFC would (2) it's the really odd choice to make.
The important part is not for it to be linear, it's to have each PR squashed. Linearity is just a consequence:
> People preferred having a single commit representing a single change instead of having a set of unrelated commits lead to a merge commit that represented a single change.
> People preferred having a single commit representing a single change instead of having a set of unrelated commits lead to a merge commit that represented a single change.
That justifies squashing inside a PR, but not making it linear. Commits might be coherently separated, eg:
Commit 1: Add a user model Commit 2: Add migrations for user model Commit 3: Implement endpoints for users
Squashing them is pointless, and mixing them into a linear history really adds no value.
I do agree with squashing commits than cancel each other out inside a branch.
Commit 1: Add a user model Commit 2: Add migrations for user model Commit 3: Implement endpoints for users
Squashing them is pointless, and mixing them into a linear history really adds no value.
I do agree with squashing commits than cancel each other out inside a branch.
So much top level metadata now... .git / .github, .bzrignore, 4 mercurial files and travis.yml.