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.
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) ..."
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.
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.
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.
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.
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.
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.
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
>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).
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.
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?
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.
47 comments
[ 3.3 ms ] story [ 129 ms ] threadhttps://snarky.ca/the-history-behind-the-decision-to-move-py...
(The link is a very detailed blog post about why this migration is happening, and what alternatives to GitHub were considered).
Afair it was because at the time decision was beeing made it wasn't open source, as it is now.
“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.
This was the best part of your post, which finally convinced me this was a good idea.
"... 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/
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 then again, learning how to do it probably takes 5 minutes...
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.
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.
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.
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.
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).
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!
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...
How many minutes does it take to learn those skills?
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).
I'm not quite happy with it, but it's better than nothing.
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.
Serious question: What's so bad about Trac?
Granted, I wish that the issues were stored within a branch, so that they would be copied along with the repository.
https://www.python.org/dev/peps/pep-0512/
> 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.
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.
I think it would yield a lot of community contributions and developer engagement.