Why GitHub won
blog.gitbutler.com
blog.gitbutler.com
It was simply trying to prevent SF from becoming a shitty monoculture that hurt everyone, which it was when Google Code launched. Google was 100% consistent on this from the day it launched to the day it folded. It was not trying to make money, or whatever
I was there, working on it, when it was 4 of us :)
So to write all these funny things about taste or what not, is totally besides the point.
We folded it up because we achieved the goal we sought at the time, and didn't see a reason to continue.
People could get a good experience with the competition that now existed, and we would have just ended up cannibalizing the market.
So we chose to exit, and worked with Github/bitbucket/others to provide migration tools.
All of this would have been easy to find out simply by asking, but it appears nobody bothers to actually ask other people things anymore, and I guess that doesn't make as good a story as "we totally destroyed them because they had no taste, so they up and folded".
code.google going away, without the excuse that google itself was going away, after I had started to rely on it and link to it in docs and scripts all over the place, is what taught me to never depend on google for anything.
If google had said "The purpose of this service is an academic goal of Googles, not to serve users needs. This service will be shut off as soon as Googles academic purpose is met." I would not have used it.
But Google did not say that. Google presented the service as a service whos purpose was to be useful to users. And only because of that, we used it.
Do you see the essential problem here? Effectively, Google harnessed users for it's own purposes without their consent by means of deception. The free-ness of the service that the users received doesn't even count as a fair trade in a transaction because the transaction was based on one party misinforming the other.
So thanks for all your work making the world a better place.
It didn't go away, though. It got archived and that archive is still up and running today. Those links you put all over the place should still be working.
> If google had said "The purpose of this service is an academic goal of Googles, not to serve users needs. This service will be shut off as soon as Googles academic purpose is met." I would not have used it.
That's not an accurate representation of what DannyBee said. Moreover, what DannyBee did say is in line with what Google itself said was its goal when the service launched: https://support.google.com/code/answer/56511
"One of our goals is to encourage healthy, productive open source communities. Developers can always benefit from more choices in project hosting."
> Effectively, Google harnessed users for it's own purposes without their consent by means of deception.
This does not appear to be a good faith argument.
None of what DannyBee said in their comment aligns with that interpretation. Neither does that interpretation line up with Google's publicly stated goals when they launched Google Code.
> Actually, Google Code was never trying to win.
> It was simply trying to prevent SF from becoming a shitty monoculture ... . Google was 100% consistent on this ...
And
> One of our goals is to encourage healthy, productive open source communities. Developers can always benefit from more choices in project hosting.
These are not the same. One of these makes it out to be the singular goal. The other does not.
I think this is misrepresenting what the commenter stated. He appears to have stated the project hosting service "went away". This fits with the context of the OP which is comparing project hosting services, e.g., Google Code, Sourceforge, Github.
If the context was software archives, e.g., software mirrors, instead of project hosting, then we could indeed claim "Google Code" still exists. However, the context is project hosting. And no one can upload new projects or revisions to Google Code anymore. Google Code project hosting did in fact "go away":
https://codesite-archive.appspot.com/archive/about
The old https://code.google.com/p/projectname URLs need to be redirected to https://code.google.com/p/archive/projectname
Google then redirects these /archive URLs to storage.googleapis.com
Too much indirection
https://code.google.com/p/projectname becomes
https://storage.googleapis.com/download/storage/v1/b/google-...
Downloads
https://storage.googleapis.com/download/storage/v1/b/google-...
"It got archived" means it went away for actual use. i.e. in not-just-read-only fashion
1. A well-known major company sees that people are relying on something broken and it's hindering progress.
2. The company decides to compete with that thing, but it's not part of their mission, so they make it free.
3. Because the new thing is free, and run by a major company, lots of people come to depend on it, even though it's intentionally not the best.
4. Another company builds more competition and works to actually be the best.
5. The major company sees that their original objective of replacing the bad version is fulfilled, so they sunset the thing.
6. People who came to depend on the thing feel betrayed.
This is why we should all be cautious about any non-core free service from major companies.Whats the solution? Is the future self hosted? Making it accessible for non-technical people?
Every profitable company on earth, ever.
Frankly, I’m just as shocked they didn’t go full throttle with it either, because talk about a data selling gold mine with all that traffic
While I’m on that subject, it could have been a real opportunity for them to push fiber + YouTube TV as a package. Google isn’t good at making original content but at some point they have made a software + services play that makes such a package more palatable and user friendly, imagine subscribing to a YouTube channel and it becomes a channel as part of the TV app for instance. A lot of people watch channels like this as it is.
DuckDuckGo is great for most purposes.
The best product Google has is Maps. That's about it.
Back then it felt like it was actually just possible that they just were that cool. Noughties Google was really something compared to the staid, implacable incumbents. 15GB (with a G!) of email storage that would grow forever! Google Earth! YouTube! Live long enough to see yourself become the villain indeed.
Google currently has a quarterly revenue of $70-80B.
Imagine an internal team launches a new product to collect $100M in quarterly revenue. An earth-shattering success for any entrepreneur.
For Google...it doesn't even move the needle. Does nothing for stock, it's not strategic, and may become a liability later on.
You would need to launch a multi-billion new sub business for it to be of any interest to Google, which is impossibly hard.
GMail isn't going anywhere either.
YouTube is a bit less clear: it doesn't really have any competitors, and is extremely popular and widespread, but it surely costs a fortune to keep running.
It'd be interesting to see the financials on these different business units to see which are the healthiest and which aren't.
If you expect you team to just go-go-go, you might something in the short term but you'll fail miserably in long-term.
More Google style would be shortly after shutting down Google Code starting up a new code hosting project, migrating several times to always slightly incompatible frontends requiring developer changes, shutting down the project, and shortly afterwards starting up a new code hosting project...
because of ordering by vote, we can't see how quickly it happened in this case. in godwin's law the likelihood increases by length of discussion, implying a slow/linear kind of probability, but for google product sunset i would argue that the likelihood ramps up very aggressively from the start.
i hereby dub this `jiveturkey's law`.
like godwin's law, the subthread becomes a distraction. unlike godwin's law, the sunset distraction is always a legitimate point. it's just that it has become tired.
All of this would have been easy to find out simply by asking
I'm not a journalist, but in an ideal scenario, how would somebody have known that you were one of the key members of the project?It's not like Google (or anybody else) makes this easy to know. And call me jaded, but something tells me official Google PR channels would not have been really helpful for this.
And also - are most engineers in your sort of position even free to remark on such projects w.r.t. NDAs, etc?
It's not about asking me, it's about not asserting things you don't know.
Instead of saying "people did x for y reason" when you have literally no data on x or y, you could say "I don't know why x happened, i only know about z". Or if it's super important you try to put something there, beforehand, you could say "hey does anyone know why x happened? I'm working on a blog post and want to get it right".
Then, someone like me who saw it could happily email you or whatever and say "hey, here's the real story on x".
Or not, in which case you can leave it at "i don't know".
The right answer is not to just assert random things you make up in your head and force people to correct you. I'm aware of the old adage of basically "just put wrong stuff out there and someone will correct you", but i generally think that's super poor form when it's about *other people or things and their motivations". I care less when it's about "why is the sky blue".
In this case, it also happens that there are plenty of on-record interviews and other things where what i said, was said back in the day.
So a little spleunking would have told them the answer anyway.
You can see how as the article develops, they go from being "uncertain what made GitHub succeed" to definitively being sure about why it succeeded. It doesn't surprise me that details were glossed over as the story rose to the ultimate crescendo of "GitHub dominates".
This is how a good tale is spun and the people lap it up. What's a good tale without a bit of embellishment? (said every bard since antiquity)
Putting out a general inquiry of "why did x happen?" also has a lot of stigma attached to it in RTFM, LMGTFY internet culture. The result will not be a cloud of other people interested in the answer upvoting the question to make it visible to folk who might actually know. Snide comebacks notwithstanding the question will languish forgotten in a dusty corner of whichever forum it was asked within.
But bold assertions based on plausible conjecture? That can earn upvotes, drive engagement, draw ad clicks, and sometimes even prompt corrections from actual experts.
Certainly not an ideal situation but this does appear to be where we're at.
No more than a movie critic has an obligation to speak with the director before printing their review. He is comparing/contrasting GitHub with Google Code, the product you released. That is all.
As for his claims, I don't even see how the linked article significantly contradicts what you yourself have said about the genesis and goals of Google Code.
You claim that the purpose of Google Code was mainly just to break the SourceForge monoculture. In other words, it wasn't a product intended to be a polished worldbeater. Not something great. Not the next Gmail. Just something functional. A monoculture-preventer.
Okay.
(I am a software engineer as well, so I understand that even this level of creation involves many thousands of engineer-hours of blood, sweat, and tears. Not a knock.)
So yeah, it doesn't sound like you created Google Code with "taste" which the linked article seems to be using as shorthand for "lots of product passion and UX polish."
While the tone of the linked article seems a little more aggressive than it needs to be it... seems correct, based on what you've said?
I'm not sure how it works now, cynically I would suggest that the writer asks an LLM to write the story, gets a rehash of Wikipedia and other sources, and they maybe makes some attempts at firsthand verification.
You are reading the personal diary of someone with personal connection to a topic and complaining that it is not up to the standards of professional journalism.
Rather, he is comparing the actual released products.
Specifically, he says that competitors to Github had no "taste", which he seems to be using as shorthand for "making a polished product and really focusing on developer/user experience."
You don't need to interview the folks who worked on Google Code to make that claim, any more than I need to interview Steven Spielberg before I comment on one of his movies.
(Based on my memories of Google Code, I'd say the linked article's observations about Google Code are also absolutely correct, although that's really beside the point)
Just flat out saying they had no taste in product development, however, is a bit of trash talking for no reason.
Understanding your (Google’s) motivations explains why Google Code didn’t improve as much. It doesn’t contradict that Github had better UI, or their explanation of their motivation to build a better UI.
If Google Code succeeded, it’s hard to imagine that Google would not have tried to monetize it someday.
This also reminds me of Google’s (also initial) position on Chrome vis-a-vis Firefox: create a product “not trying to make money, or whatever” but just to limit the market share of a competitor.
The less flattering term for this in the context of anticompetitive behavior is “dumping”: https://en.wikipedia.org/wiki/Dumping_(pricing_policy)
Google code did succeed in that sense. It had hundreds of thousands of 30-day active projects, and some insane market share of developers.
I don't honestly remember if it was even shrinking when we decided to stop taking in new projects.
I doubt we would have monetized it directly (IE sell an enterprise version) - the entire market for development tools is fairly small.
In 2022 it was ~5 billion dollars, and future estimates keep getting revised downwards :).
CAGR has been about 10-14% in practice, sometimes less.
I don't remember if it's still true, but most of that 5 billion dollars was going to Atlassian (80% at one point).
Now, if you project backwards to 2006, and compare it to other markets google could be competing in, you can imagine even if you got 100% of this segment it would not have actually made you a ton directly.
Indirectly, eh, my guess is you still make more off the goodwill than most other things.
It's actually fairly rare to make any significant money at development tools directly.
Nowadays, the main source even seems to be trying to sell AI and productivity, rather than tools.
It sounds like Google would have paid some amount of billions for Github, but not the amount that Microsoft paid
I personally don't think Google would have tried to monetize Google Code, even if it had 10x or even 50x the users that it eventually had. (And I say that having worked at Google, and on Google Code briefly!)
I think it made more sense as complementary to another product (which in some sense explains a big problem with developing products at Google)
---
https://www.cnbc.com/2018/07/24/google-cloud-ceo-diane-green...
CNBC previously reported that Google was looking at buying GitHub, but Greene wouldn’t confirm the report.
“I think the only thing I’ve said is that I wouldn’t have minded having them,” said Greene.
Wasn't Google reported among the bidders for GitHub?
https://www.cnbc.com/2018/06/05/github-interest-from-google-...
Maybe Google Code itself was never trying to win but tendering an significant offer to the auction suggests Google was trying to win something.
Herein lies the tragedy. Google could've offered, even sold, its internal development experience (code hosting, indexing and searching, code reviews, build farms, etc...) which is and was amazing, but it decided that it wasn't worth doing and let GitHub eat its lunch.
Instead what we got was higher degrees of selective attention, and very elaborate and obscure flip-cup tricks.
GitHub is great, but it's absolute ass for search. To the point where for any nontrivial question I have to pull down the repo and use command-line tooling on it.
i'm only remarking on this because of the context in the parent you are replying to, whom i agree with. local tooling is better than what github provides. as a standalone comment i would simply upvote you.
Or are you talking about the few repos that had semantic indexing via Kythe (chromium, android, etc)? We never got that working for generic random open repos, primarily because it requires so much integration with the build system. A series of three or four separate people on Kythe tried various experimentation for cheaply-enough hooking Kythe into arbitrary open repos, but we all failed.
I remember there were docs how to onboard a repo to that list.
> Actually, Google Code was never trying to win.
> It was simply trying to prevent SF from becoming a shitty monoculture that hurt everyone
Being an insider of Google might make one be completely out-of-touch of reality. Google Video was trying to prevent Youtube from becoming a shitty monoculture that hurt everyone, too? This one clearly failed then.This is perhaps true of all big companies, but Google also seem to adopt a more passive PR strategy and don't try too hard to explain things, and it's just that much more difficult to understand Google when everyone else is louder.
Though there probably is some deeper critique about how you have a pretty amazing service running with "just" 4 people and aren't able to turn that into something useful beyond that objective. Innovator's Dilemma I guess.
Like Google+ and all the other attempts:
Google is actually the good guy to prevent monopolies, we just don't understand them ;)
In 2018, MS bought Github for 7B.
Google Code started to be shutdown mid-2015. In 2015 it wasn't clear yet that it would be valuable for Google to host the world's code?
Initially I thought SF means San Francisco, and I thought "Wow, what kind of monoculture can be prevented by Google Code", and then I realized that SF meant Source Forge.
As a complete nobody, why can't I think that in every example of a product launch, if it wins it wins, and if it fails, I can claim it was never intended to win?
Aside from too many hit/bait/paid-for pieces, writers have simply gotten "lazy" as they're no longer incentivized to "get it right"--just "get it out".
Granted, this post is, essentially, meant to be a whitepaper for their product offering, but c'mon guys, you had the references to reach out, but were lazy for...reasons?!
AWS also has a history of some of these "buit-to-marketize" products (e.g. CodeCommit), but at least there's a "solid core" of a stack to re-build these niche services from-scratch.
What's Google "reliable core" anymore aside from Compute Engine and Search? Don't get me started on Cloud SQL.
Not saying Google tried and failed - they may just have realised that actually winning this was never an option.
Github beat basically every Code hosting platform out there. Probably dusins of Github-like startups tried and failed because Github did so well.
So whether Google Code "wanted to win" or not doesn't really take away anything from the posts argument that Github won due to timing and taste.
raises eyebrow
When there were 4 of you?
So about $800k a year for that time period?
Just out of interest?
First: That sounds completely not like Google
Second: Now you have GH as the "shitty monoculture" (owner is MS and erases your license for Co-pilot)
Third: >>We folded it up because we achieved the goal we sought at the time, and didn't see a reason to continue.
Yeah ok that sounds like Google, try's to enter another market just to hurt them then folds ;)
At that point, SF was serving malware and stuff. It was really not a great time.
Github became a monoculture years later when others folded. Google code was shut down in 2016. Github wasn't quite a monoculture then.
I also said, back in 2014, that it might be necessary to do something like google code again in 5-10 years: https://news.ycombinator.com/item?id=8605689
10 years later, here we are i guess :)
Though i think what i said then still holds - Github is not anywhere near as bad or unreliable as SF was.
If I recall correctly, SVN was also more popular than Git at the time, so migrating hosts was a lot more painful than now...
If you were never trying to win, that's a product failure
You should have been trying to win, you should have built a strong competitor to GitHub and you shouldn't have let it rot until it was shut down
The world would have been a better place if Google code tried to be as good as GitHub
It's literally not? We had a goal from the beginning - create enough competition to either force SF to become better (at that time it was infinite ads and malware), or that someone else wins.
> You should have been trying to win, you should have built a strong competitor to GitHub and you shouldn't have let it rot until it was shut down
That's your goal, not mine (or at the time, Google). Feel free to do it!
You don't like what we had as a goal - that's okay. It doesn't mean we either failed, or had the wrong goal. We just had one you don't happen to like.
> The world would have been a better place if Google code tried to be as good as GitHub
One of the things to ask before you either start something or keep doing something is "who actually wants you to win?" If the answer is "nobody", it might not make any sense to do.
It's not obvious in 2016 anyone would have wanted us to win. By then, Google had lived long enough to see itself become a villain. There was reasonable competition in the space.
I don't believe we would have really served people well to keep going.
what?
https://news.ycombinator.com/item?id=31110206
This articles about the open source distribution side but I will also point out that the number of developers who don’t realise your remote GitHub repo can be located on any machine with an ssh connection and nothing more is surprising. As in people use private GitHub repos thinking that’s THE way you work with git. If GitHub was just for open source hosting I suspect they’d have trouble monetising like sourceforge clearly did which led to scammy attempts to make money. But they always had this huge usage of private GitHub repos supporting the rest. This must have helped a lot imho.
They did indeed host quite a lot of stuff, and it was undeniably popular as a place to get your binaries hosted free of charge.
But at the same time, is it being used as a source code repository? A lot of those projects don't show the CVS/SVN features. And sourceforge never hosted the biggest and most established projects, Linux and Gnu and PHP and Java and Qt and Perl and Python were all doing their own thing. And pretty much every project visible on that page had its own separate website, very few projects hosted on sourceforge exclusively.
It made it harder to monetize, but it enabled Source Forge to use a huge amount of voluntarily-given bandwidth and saved them a fortune at a time bandwidth was crazy-expensive.
Bandwidth costs were one of the reasons something like GitHub didn't appear earlier, and suddenly popped-up a lot of times out of nowhere.
It's such a an easy mistake to say that you did it while explaining you don't need GitHub for git repos. :)
Technically true, but GitHub provides so many more tools that it's almost silly to do so. Aside from the "hub" in GitHub such that it is often the first and only way that some people will look for projects they're interested in, you also get the nice web interface for quick code browsing, issue queues, the ability to add and remove people with a simple GUI rather than SSH key management, wikis, email notifications, and so on and so on.
Some of this can be mitigated by using a self-hosted web-based Git tool like GitLab, Gitea, Phorge, etc. But you still lose the "everyone uses it because everyone uses it" factor of GitHub on top of whatever GitHub features the clones may lack.
This was after SourceForge hugely declined in popularity.
The correct sequence of events is:
1. SourceForge massively declined in popularity,
2. and then in a desperate attempt to extract cash they started bundling malware.
Not the other way around.
All of this had little to no effect on the migration away from SourceForge, which was already well underway in 2013 when the first controversy started. It may have expedited thing somewhat, but not even sure about that. See for example [1] from 2011, which shows GitHub is already beating SourceForge by quite a margin. I found that article because it's used as a citation for "In response to the DevShare adware, many users and projects migrated to GitHub" on Wikipedia, which is simple flat-out wrong – that DevShare incident didn't happen until 2013 (I have removed that from the Wikipedia page now).
It's baffles me how people keep getting the sequence of events wrong on HN.
The reason is simple that SourceForge is just not very good and never was very good. Part of that is because of the ad-driven business model, part of that is that many features were just not done very well. Who actually used the SourceForge issue tracker or VCS browser? Almost no one, because it's crap.
[1]: https://redmonk.com/sogrady/2011/06/02/blackduck-webinar/
Tangentially: it's a pretty sad state of affairs when the most popular OSS hosting service is not only proprietary, but owned by the company who was historically at opposite ends of the OSS movement. A cynic might say that they're at the extend phase of "embrace, extend, extinguish". Though "extinguish" might not be necessary if it can be replaced by "profit" instead.
I would also argue that MS is nothing like the company that it was 30 years ago when that philosophy was a thing. The truth today is the via GitHub, Microsoft hosts the vast majority of the world's open source software, entirely for free.
This is like saying that a cannibal has stopped eating people because there have been no disappearances in the last two days. Sure, technically correct, I'd still not eat their curry.
To be fair, though, y'all did 90% of the work before the acquisition. MS only hosts the vast majority of the world's open source because they backed up dump trucks full of cash at the houses of the people who actually built that capability.
> I would also argue that MS is nothing like the company that it was 30 years ago when that philosophy was a thing.
I don't think I can ever truly trust their motives, though. I will agree that it's a different company in many ways, but their history is still that of a company that, through anti-competitive practices, set personal computing back decades. And worked tirelessly to keep open source at bay where they could.
At this point MS realizes it's more profitable to work along side open source than against it. If at any point they no longer believe that's the case, you better believe we'll see a reversion to their former behavior.
Corporations like Microsoft don't do charity.
For the rest of the world, Github came along when blogs and rss feeds were also close to their zenith. IIRC Github used to employ a rather sweary chap that used to blog a lot, and he appeared in everyone's feeds that I knew of promoting github.
Whereas, Bitbucket, and FogCreek's kiln had little comparable publicity or comms.
Let me bite: why is this bad?
Though a core philosophy behind the OSS movement is creating software for the benefit of humanity, instead of driven by financial reasons. Not that developers shouldn't profit from their work, but it's ironic that a large corporation who was historically strongly opposed to the movement is now a leader in it. It's understandable to question their motives if you remember the history, regardless of their image today.
Git took the early lead and never looked back. And GitHub's competitors were too slow to embrace Git. So GitHub dominated developer mindshare.
It seems strange now but there was a period of time during the late 00s and early 10s when developers were pretty passionate about their choice of DVCS.
Something like git had to take over svn / cvs / rcs. It could be Perforce, it could be BitKeeper which apparently pioneered the approach. But it had to be open-source, or at least free. Git won not just because it was technically superior; it also won because it was at the same time free software.
I exported this a patch and then imported onto a clone of Marcelo's
tree, so it appears as a single cset where the changes that got un-done
never happened. I've done some sanity tests on it, and will test it
some more tomorrow. Take a look at it and let me know if I missed
anything. When Andy is happy with it I'll leave it to him to re-issue a
pull request from Marcelo.
https://lore.kernel.org/linux-acpi/BF1FE1855350A0479097B3A0D...I do not know to what extent Bitkeeper had browser-based workflows. Moving cross-repository merges away from the command line may actually have been innovative, but of course of little interest to kernel developers.
I actually just shot a video showing how BitKeeper was used. I'll post that and a blog post on our GitButler blog soon.
I love it so much, I hate how the other code review systems kinda suck in comparison but people prefer them.
I guess it's proof that features and shiny are more important than a good idea.
It's hard to remember but there was a time when git was resisted. When I first started to use it, a lot of people were saying you don't need it, you only want to use it because it's hipster and the kernel uses it, but you're not the kernel etc. It's exactly the same as k8s is all these years later (the tide seems finally turning on k8s, though).
Without GitHub (or something else), git would have remained a weird kernel thing. But, equally, without git GitHub would have had no raison d'être. It's a symbiotic relationship. GitHub completely the picture and together they won.
We switched to Git as a whole in early 2009 since it was already a better experience than SVN at the time. Could be off by a year or two, given how long ago this was and the fact that I was working with the group through the end of high school in 2007-2008.
We only added GitHub to our training later in 2011-2013 era, but we ran our own bare git repos on our department servers until then. And students/groups were responsible for setting up their own repos for their research projects (with assistance/guidance to ensure security on the server).
Last job also made use of our own internal bare repos, admittedly mirrors of our private GH projects, and our stack pulled from that mirror to ensure we always had an instance that was not dependent on an external vendor.
Current role also makes use of bare git repos for similar reasons.
I think the knowledge is there and plenty people do it, it's just not news/blog worthy anymore. It's not new or groundbreaking so it gets little attention.
And Mercurial spent an enormous amount of effort going after Windows users and basically got absolutely nothing for it.
In my opinion, this was what really hurt Mercurial. Nobody in Windows-land was going to use anything other than the official Microsoft garbage. Consequently, every ounce of effort spent on Windows was effort completely wasted that could have been spent competing with Git/Github.
Sorry, but Git won because Github won. Lots of people loved (and still use) Mercurial. It lacked the network effect because Github didn't support it.
> GitHub bet on Git. Bitbucket bet on Mercurial.
Bitbucket didn't lose because of Mercurial. They lost because Github had a better product (in terms of sharing code, etc). It also was neglected by Atlassian in 2010.
> It seems strange now but there was a period of time during the late 00s and early 10s when developers were pretty passionate about their choice of DVCS.
Sorry buddy, but there are still plenty of us Mercurial users. Maybe, just maybe, even dozens!
(Seriously, I use Mercurial for all my projects).
Regarding Mercurial, would you happen to have recommendations for a GitHub/Bitbucket-like service that still works with hg?
Use "jujutsu" (jj).
It's the goodness of Mercurial but works in the crappy world that Git has bestowed upon us.
I made the switch from Mercurial because it's just getting too hard to fight the git monoculture. :(
Unfortunately it's been so long since then I don't remember exactly what it was that confused me. Something around how they handle branches.
Isn't this supporting my point? That a barrier to use mercurial was that people preferred Github over Bitbucket?
> Kudos to you for sticking with it!
It's simple a lot easier to use it vs Git! Kudos to whoever suffers through the latter!
Have you ever checked out code directly from a colleague's machine? GitHub is very central-looking from where I'm standing, and the differences between Git and SVN are very academic and does not really apply in practice any more.
GitHub allowing forks of repo's to request PRs between one another is probably the only DVCS thing about all this. But this model does not apply to orgs hosting their proprietary code on GH, where the developers don't have their own forks of their employer's code repos. I'm pretty sure it would have been possible to replicate pull requests with SVN on GitHub in some alternative reality.
The key distinguishing characteristic is the fact that every git checkout contains the full repo history and metadata. This means a consistent network connection to the master server isn't necessary. In fact, it means that the concept of a "master server" itself isn't necessary. With Git, you only need to connect to other servers when you pull down changes or when you want to push them back up to the remote repository. You can happily commit, branch, revert, check out older revisions, etc. on just your local checkout without needing to care about what's going on with the remote server. Even if you treat your remote repo on GitHub as your "master", it's still a far cry from the way that centralized VCS works.
If you've never worked with true centralized VCS, it's easy to take this for granted. Working offline with a system like Perforce or SVN is technically possible but considerably more involved, and most people avoid doing it because it puts you far off of the beaten path of how those systems are typically used. It basically involves you having to run a local server for a while, and then later painfully merging/reconciling your changes with the master. It's far more tedious than doing the equivalent work in Git.
Now, it's important to note that Git's notion of "every checkout contains all the repo data" doesn't work well if the repo contents become too large. It's for that reason that things like sparse checkouts, git-lfs, and VFS for Git exist. These sorts of extensions do turn Git into something of a hybrid VCS system, in between a true centralized and a true decentralized system.
If you want to understand more, here's a great tech talk by Linus himself from 2007. It's of note because in 2007 DVCS was very new on the scene, and basically everyone at the time was using centralized VCS like SVN, CVS, Perforce, ClearCase, etc.
I think it would be possible to have a DVCS without the full repo history and metadata. Doubt that it would be worth the effort though.
I still maintain the differences are academic, because even though Git is a DVCS (and I agree it is), and it is possible to use it as a DVCS. But given that GitHub is the defacto standard, and everyone uses it for work and OSS, I posit we are actually using Git as a CVCS, and any argument about Git being better than SVN because it's a DCVS is moot because nobody is using Git's distributed features anyway.
In any case, the premise is still wrong because as mentioned elsewhere, the distribution of repository sizes and their compute requirements are not smooth or homogonous. The cost of hosting one popular mirror of the Linux kernel, or a project like Rails, for 1 year is equivalent to hosting 10,000 small projects for 100 years, in either SVN or Git. The whole comparison is flawed unless this dynamic is taken into account. GitHub in 2024 still has to carve out special restrictions and exemptions for certain repositories because of this (the Chromium mirror for example gets extended size limits other repos can't have.)
Git also lacked a lot of techniques to improve clones or repo sizes of big repos until fairly late in its life (shallow + partial clones) because 99% of the time their answer was "make more repositories", and the data model still just falls over fast once you start throwing nearly any raw binary data in a repository at any reasonable clip (not GiB, low hundreds of MiB, and it doesn't become totally unusable but degrades pretty badly). This is why "Git is really fast" is a bit of a loaded statement. It's very fast, at some specific things. It's rather slow and inefficient at several others.
Some years later Facebook did a lot of work to improve the speed of mercurial but the ship had sailed. Interesting idea though.
In 2007 I was teaching myself programming and had just started using my first version control tools with Mercurial/Hg after reading Joel Spolky's blog post/love letter to Mercurial. A year or two later I'd go to user group meetups and hear many echo my praise for Hg but lamenting that all the cool projects were in GitHub (and not bitbucket). One by one nearly everyone migrated their projects over to git almost entirely because of the activity at GitHub. I even taught myself git using Scott's website and book at that point!
"Product-market fit" is the MBA name for this now. As Scott elegantly states this is mostly knowing what problem you solve, for whom, and great timing, but it was the "flavor" of the site and community (combined with the clout of linux/android using git) that probably won the hearts and minds and really made it fit with this new market.
Edit: It didn't hurt that this was all happening at the convergence of the transition to cloud computing (particularly Heroku/AWS), "Web 2.0"/public APIs, and a millennial generational wave in college/first jobs-- but that kinda gets covered in the "Timing, plus SourceForge sucked" points
* After using hg which doesn't have the concept of an index, I realize I don't miss it and the user experience is better without it. Seriously, even thinking about it is unnecessary mental overhead.
* As someone who modifies history a whole lot, `hg evolve` has superior usability over anything in git. The mere fact that it understands that one commit is the result of amending another commit is powerful. Git doesn't remember it, and I've used way too much `git rebase --onto` (which is a poorer substitute) to be satisfied with this kind of workflow.
* Some people, including the author, say cheap branching is a great feature of git. But what's even better is to eliminate the need to create branches at all. I don't need to use bookmarks in hg and I like it that way.
I sometimes imagine an alternate universe where the founders of GitHub decided instead to found HgHub. I think overall there might be a productivity increase for everyone because hg commands are still more user friendly and people would be stuck less often.
I'm reading this as "HugHub" and audibly laughing!
... for some people. I know a substantial audience who believe $(git add -a) is The Way, and good for them, but if one has ever had the need to cherry-pick a commit, or even roll back a change, having surgical commits is The True Way. JetBrains tools now even offer a fantastic checkbox-in-the-sidebar way of staging individual hunks in a way that only git-gui used to offer me
I just had a look at $(hg add --help) and $(hg commit --help) from 6.8.1 and neither seem to even suggest that one may not want to commit the whole file. I'm glad that makes Mecurialistas happy
And if you accidentally committed something that should have been broken up, the user experience of `hg split` exceeds anything you can do with git commands. Quick tell me: if your git commit at HEAD contained a three-line change but each line should be its own commit, what do you recommend the user do? I guarantee `hg split` is so much easier than whatever you come up with.
$ hg help commit
hg commit [OPTION]... [FILE]...
[snip]
commit the specified files or all outstanding changes
[snip]
-i --interactive use interactive mode
Yup, it sure does explain that using interactive mode would select individual hunks, sorry for my "if you know you know" comprehension failure, especially in light of the absolutely orthogonal context of that word used further down the help page you allege I did not read: -y --noninteractive do not prompt, automatically pick the first choice for
all prompts
> the user experience of `hg split` exceeds anything you can do with git commandsAnd yet:
$ hg split --help
hg: unknown command 'split'
'split' is provided by the following extension:
split command to split a changeset into smaller ones
(EXPERIMENTAL)
without saying what makes it experimental - is that "lose work" kind of experimental?Just people/products that are temporarily on top.
SourceForge was probably "the winner" for some time.
The same will be for GitHub.
Someone just needs to build an actual superior product and provide a service that GitHub will not provide. Then build a sufficient audience.
One such service is an end to end encrypted Git repo service.
Some anarchists I know don't want everyone to know what they are working on.
The same goes for algorithmic trading. I need strong guarantees that my code will not be used to train an LLM that will leak my edge.
I am shocked a superior Git service to GitHub has not been built.
I really liked source hut. But the custodian is abit arrogant (crypto projects for instance are banned)
I doubt there is a big enough market of anarchists for Github to even bother worrying.
> One such service is an end to end encrypted Git repo service.
There are so few people that need this, that they can just use client side tools and store all data that gets to remote servers encrypted
A lot of people writing prorietory code bases would definitely use it.
I don't think a founder wants the startup's codebase to leak via an LLM?
But if you care, there is a whole gamut of on-prem solutions, from running bare cgit to fluff like Gitea and GitLab.
Lock up your central repo machine all you want, the code is still checked out to developers' laptops. For more security, don't allow that, and let your devs connect to a server with all necessary tools and access to the code, but without general internet access, for instance.
There is a reason why people use hosted Git services it's not practical for everyone to "self host".
We can run a self hosted Signal app for privacy. But it's neither convenient nor practical for everyone.
git remote add origin ssh://user@host/srv/git/example
Where the host is simply an ssh server you have access to. Encrypt the servers drive itself however you see fit. This is how git is traditionally used btw. GitHub is a third party to the git ecosystem and really there’s little reason to use it for private repos. Just use ssh for the remote connection.
Admin costs? I paid $7/month to github for years for private repos (atm private repos are free so i switched to not paying when the card i was using acted up and i couldn't be bothered to fix it). I'm sure the time I would have spent admining a ssh based server would have cost more, even at 1 hour/month.
Who trusts private repo off GitHub?
Simply store encrypted files somewhere like Dropbox or cloud storage solutions.(Encrypt before you upload)
I wish this was true for social media and instant messaging platforms, operating systems...
> I really liked source hut.
Sourcehut never has and likely never will be a serious competitor. Its UX and goals are entirely different, and it's directed towards a very niche audience unlike GH.
One of my biggest gripes was that switching back and forth between code view and editor mode would wipe whatever you had written. So you better had them in separate tabs. Also be sure not to press the backspace key outside a text window.
Svn gets a lot of hate for things it doesn't deserve, even this article talks about "checking out" and the difficulty of branching, but that doesn't track with subversion.
Branching in subversion was just as easy as in git, it had shallow branches. You could branch largely without overhead, although unlike git it was a server-side operation. ( Imagine it like git branch with auto-push to remote).
Most software also automatically checked out files as you modified them, and it was a local oepration, there wasn't any locking or contention on that. It was the older CVS/sourcesafe style version system that those.
I still maintain that most workplaces with less than, say, 10 devs, would be better off with subversion rather than git, if not for the fact that most the world now works on git.
Subversion solves problems with less mental overhead than git, but it's not worth doing anything non-standard, because everyone now knows git and has learned to put up with the worse developer user experience, to the point where people will argue that git doesn't have bad UX, because they've internalised the pain.
Before subversion there was CVS and Visual Source Safe. These are much older. These solved a problem of source control, but were based on the concept of locking and modifying files.
You'd "checkout" a file, which would lock the file for modification of all other users. It was a bit like using a global locking file repository but with a change history.
It was as painful as you might imagine. You'd need to know how to fix the issue where someone would go on holiday having checked out a critical file: https://support.microsoft.com/en-us/topic/5d5fa596-eb9c-d2b5...
Or more routinely, you'd get someone angrily asking who had such-and-such file checked out.
And even if I was using it wrong or SVN improved merging later the fact was that common practice at the time was to just commit everything to the main branch, which is a worse (IMO) workflow than the feature-branch workflow common in git.
But you're right, SVN was largely fine and it was better than what preceded it and better than many of its peers.
Edit: Forgot to mention - one of the biggest benefits to git, at least early on, was the ability to use it locally with no server. Prior to git all my personal projects did not use version control because setting up VC was painful. Once git came around it was trivial to use version control for everything.
And honestly, it was always a pain in the ass setting up "the server". Unlike with git you needed a server / service running 24/7 upon which to check your code into. Which was always a pain in the ass at home... needed to keep some stupid subversion service running somewhere. And you'd have to go back into that service and remember how to create new projects every time you got a wild hair up your ass and wanted to create a new thing.
Git you just do "git init" and boom, you have a whole complete version control system all to yourself with no external dependency whatsoever.
That being said, TortiseSVN was the best GUI for version control ever.
It was about merge and conflict resolution like SVN or Git.
VSS was oriented around locking. And also broke all the time. Oh, and also lost data... And oh, it was also the expensive one used by everybody that kept saying "you get what you pay".
The github's desktop app in particular is a mess, because it does not try to be a UI, it's simply a frontend for the CLI , having buttons for the CLI operations basically, and it does everything worse than CLI.
In hindsight, it's hard for me to take seriously a programmer who can't spend some time to learn git, it isn't hard.
The assumptions of SVN makes it feel like a dinosaur now.
It's tricky, because any serious Github competitor would implicitly have to compete by attracting the deep pockets of enterprise clients, who care little for "fun". Getting revenue from solo devs / small teams is an uphill battle, especially if you feel obliged to make your platform open source.
Still, I wish someone would make a Github competitor that's fun and social.
I feel the same way about tscircuit (my current startup), it's a weird bet to create circuit boards with web technologies, nobody really does it, but the ergonomics _feel better_, and I just have to trust my taste!
This bet worked, the mercurial ones didn't.
The "taste" thing is weird, making an analogy with Apple vs. Microsoft, who explicitly competed at many times
As DannyBee said, there was never any Google vs. Github competition, because Google's intention was never to build something like Github
In fact, one thing he didn't mention is that URL, as I recall, was
code.google.com/hosting/
not code.google.com/ # this was something ELSE, developer API docs for maps, etc.
SPECIFICALLY because management didn't want anyone to think it was a product. It was a place to put Google's own open source projects, and an alternative to SourceForge. (There was also this idea of discouraging odd or non-OSS licenses, which was maybe misguided)That is, the whole project didn't even deserve its own Google subdomain !!! (according to management)
(I worked on Google Code for around 18 months)
---
However if I try to "steel man" the argument, it's absolutely true that we didn't use it ourselves. The "normal" Google tools were used to build Google Code, and we did remark upon that at the time: we don't dogfood it, and dogfooding gives you a better product
But it was a non-starter for reasons that have to do with Google's developer and server infrastructure (and IMO are related to why Google had a hard time iterating on new products in general)
I think also think Github did a lot of hard work on the front end, and Google famously does not have a strong front end culture (IMO because complex front ends weren't necessary for the original breakout product of search, unlike say Facebook)
The first reason was why Git became interesting, the second one is why it won.
Prior to Github the way to contribute to OSS projects was a protracted process of engaging with very busy people via mailing lists, issue trackers, and what not and jumping through a lot of hoops to get your patches considered, scrutinized, and maybe merged. If you got good at this, you might eventually earn commit privileges against some remote, centralized repository. This actively discouraged committing stuff. OSS was somewhat elitist. Most programmers never contributed a single line of OSS code or even considered doing so.
Github changed all that. You could trivially fork any project and start tinkering with it. And then you could contribute your changes back with a simple button push: create pull request. It actively encouraged the notion. And lots of people did.
Github enabled a bunch of kids that were into Ruby to rapidly scale a huge OSS community that otherwise would not have existed. That success was later replicated by the Javascript community; which pretty much bootstrapped on Github as well. What did those two communities have in common: young people who were mostly not that sophisticated with their command line tooling. This crowd was never going to be exchanging patches via some mailing list, like the Linux crowd still does today. But they could fork and create pull requests. And they did. Both communities had a wild growth of projects. And some of them got big.
Github gave them a platform to share code so they all used it. And the rest is just exponential growth. Github rapidly became the one place to share code. Even projects with their own repositories got forked there. Because it was just easier. A lot of those projects eventually gave up on their own central infrastructure. Accepting contributions via Github was easier. In 2005 Git was new and obscure; very elitist. In 2008 Github popped up. By 2012 it hosted most of the OSS community. Game over by around 2010 I would guestimate. By 2015 even the most conservative shops were either using it or considering it at least.
Man, given how terrible GitHub's developer workflow is in 2024... there is still no first-class support for stacked diffs, something that Phabricator had a decade ago and mailing list workflows have been doing for a very long time.
I personally treat GH as a system that has to be hacked around with tools like spr [1], not a paragon of good developer workflows.
[1] my fork with Jujutsu support: https://github.com/sunshowers/spr
People in the field less than 20 years might not appreciate the magnitude of this change (though, adding my two cents to the author's article, branching in p4 was fine). People may have also dealt with ClearCase (vobs!) or Microsoft Visual SourceSafe.
Git did as much for software development velocity as any other development in recent history.
Git is not perfect. There are other products that did/do some things better, or at least more conveniently. But Git was miles ahead of anything else at the time that I could use for free, and after I tasted it, I never wanted to go back to anything else.
I always wonder what would have happened if we had a dedicated team to make something of it, but in the end git won over hg anyway so likely a moot point.
Edit: there's a low-quality video of the early interface we worked on - https://youtu.be/NARcsoPp4F8
Tridge never accepted the license terms of BitKeeper and re-implemented client libraries only by observing black box behaviour of the server, so at no point did he break the terms of the license. He also told Linus what he was doing and asked, "how do you think [Larry McVoy] will react?". Linus said he thought it would be okay.
The main reason I hear people say they use GitHub is due to network effect. "It's what everyone else is using", "You'll get more visibility and more contributions" or "My employer forces us to use it".
Essentially, the same reasons why Windows is a popular platform; not really technical reasons, mostly business and ecosystem factors driving people towards it.
Sure, GitHub was* better than the alternative in its initial days. But things have changed in the last decade. GH has continuously declined while alternatives have surfaced and improved dramatically.
Personally, it pisses me that GitHub presents itself as "an open source hub", when it is a proprietary, hosted, service.
Becoming a jewel for (one of) the worlds most profitable proprietary software and platform company.
And GitHub is still super popular, evolving more and more into a social network. where the users work for free to increase the value of platform and promote it for the chance at more GitHub stars.
With the common echo chamber: "" Windows is bad, eww proprietary bloated spy software and evil Office. Opensource and Linux is goood. "" and then
"I have 3000 stars on GitHub now, check out my repos."
Did Microsoft predict the value having trivial access to all those codebases for training software models?
The kind of insight they have with Microsoft GitHub and Microsoft LinkedIn is quite something.
¹ In stock
Github "won" because they were not CollabNet.
Reverse-engineering proprietary protocols is definitely one of his things.
This is my own opinion:
- GitHub looks nice but PR merge window between forks is still bad
- GitLab CI is so much more intuitive than GitHub CI and there is a lot of existing codes that you can copy/paste specially if you use Terraform, AWS, K8S
- I am biased, but AzDevops both looks most intuitive, and its pipeline system is the best
The hazard to "prebuilt workflows" is that one needs to know about them, and load their assumptions into your head before using them, which can be true of any sprawling namespace but tends to be less true within a single organization. That's not even getting into the risk of folks who do both things: copy-paste someone else's "uses:" statement eliding the version pinning because "what's the worst that can happen," amirite?!
As for the "for terraform, AWS, k8s" part, that is 110% why I am a GitLab fanboy because the platform natively speaks those technologies - I don't need to (deep sigh) set up an S3 bucket with a DynamoDB to have Terraform State - it ships with GL. I don't need to do crazy "uses:" with some rando shit to use AWS federated credentials, it ships with GL. I for sure don't need to do crazy "uses:" to have k8s rollouts, rollbacks, status checks, and review environments: they are built-in concepts in GLCI
Also, unless something has gravely changed in the past little bit, how in the universe can anyone use GHA with a straight face without "show me the expanded and linted version of this yaml" as with https://docs.gitlab.com/ee/ci/yaml/lint.html#simulate-a-pipe...
I'll fully admit that $(gitlab-runner exec) is a cruel joke, but every time I hear someone claim that Act (or its like 50 forks over in Gitea/Forjeho-land) are "local GHA" I throw up in my mouth, so I consider that pretty much a wash
---
ed: I realized this debate is also very similar to the Maven-vs-Gradle argument: do you want executable junk in your build process, or do you want declarative steps? I am firmly, 1000000000000000000% in the Maven camp, which also explains why the last thing I want is some minified .js files someone else wrote to be injected into my CICD process
Whenever I’ve asked for help using GitHub (usually because I’m getting back into coding) the dev helping me out stumbles, forgets, and is confused often. What’s surprising is that’s true no matter how senior they are.
GitHub did a ton to smooth out dev workflows, for sure, but there’s something almost intensely counter-intuitive about how it works and how easy it is to miss a step.
I’d assume good product taste is reasonably indexed to “intuitive to use” but GitHub doesn’t seem to achieve that bar.
What’s an example of GitHub’s good taste that I’m missing?
Compared to everything that came before, Github may as well have been Nirvana.
There are ancient threads about it on their issue tracker, that go nowhere for years and years. It's almost as if they were trying to sabotage themselves.
SEO was hugely important because when you searched for something Github projects actually came up in Google, gitlab.com did not. Even if there was an interesting project there, it wouldn't have been known.
So I'm not surprised Github became synonymous with Git forge online.
I introduced Subversion at my first job, we were sharing updates over FTP and heavily coordinating who worked on what before.
Subversion was definitely a step up, but branching/merging was very problematic and time consuming.
I still find Git confusing as hell sometimes, and would guess most developers use like 50% of the features tops; without GitHub or something similar it wouldn't have gone anywhere.
$ dig +short gitlab.com. AAAA
2606:4700:90:0:f22e:fbec:5bed:a9b9
and, just to pour more salt in that wound $ dig +short bitbucket.org. AAAA
2401:1d80:321c::bbc:1:df7c
2401:1d80:321c:2:0:bbc:1:df7c
2401:1d80:321c:1:0:bbc:1:df7c
$ dig +short git.sr.ht. AAAA
2a03:6000:1813:1337::155
and it's not like Microsoft doesn't know how to run IPv6, both microsoft.com and portal.azure.com are on V6are (along with too many other projects) from way before Nov 1993, where "The Total Growth of Open Source" graph starts from 0.
> "The database contains data from January 1990 until May 2007. Of this time horizon, we analyze the time frame from January 1995 to December 2006. We omit data before 1995 because it is too sparse to be useful"
> "Large distributions like Debian are counted as one project. Popular projects such as GNU Emacs are counted as projects of their own, little known or obsolete packages such as the Zoo archive utility are ignored"
So even though methodology is "very specific", it seems very incomplete/ inaccurate/ selective. Even Linux kernel, as per their source, started in 2005 (https://openhub.net/p/linux).
Source: https://www.researchgate.net/publication/45813632_The_Total_...
That left a market opportunity for something better. I think that _might_ have had something to do with it.
2012, https://a16z.com/announcement/github/
We just invested $100M in GitHub. In addition to the eye-popping number, the investment breaks ground on two fronts:
It’s the largest investment we’ve ever made.
It’s the only outside investment GitHub has ever taken.
2018, https://web.archive.org/web/20180604134945/https://a16z.com/... Six years ago we invested an “eye-popping” $100 million into GitHub. This was not only a Series A investment and the first institutional money ever raised by the company, but it was also the largest single check we had ever written.. At the time, it had over 3 million Git repositories — a nearly invincible position.. if I ever have to choose between a group of professional business managers or a talented group of passionate developers with amazing product-market fit like GitHub, I am investing in GitHub every time.Though fortunately was compatible and natively convertible to git and made the git takeover mostly smoothless.
At the time it felt that github and the rapid tooling and integrations developed in response cemented git's rise and downfall of everything else including darcs.
Since then I'm happy self hosting Gitea. GitHub is still a decent place to contribute to others projects.
They also provided a set of links to LWN articles from that era.
Also the interconnected pr references by #prnumber across many repos will make it very hard to keep track of future development in any foss github alternative the project moves to.
So until git-bug etc., mature enough to include everything in git itself, or people start using gerrit, email patches etc. which are all non-trivial compared to github prs, giving up github is harder than giving up google search.
So, a downfall of a potential alternative was also a factor IMO.
Edit: after I commented I realized that SF was already mentioned in other comment
Also SF was based on SVN. They failed to understand and capitalize on a better tech on the market i.e. git.
The fact that end users could peek at the folder structure of the source code was a novelty at best
Though I wonder if bit bucket would win if they had githubs name
For a counter-point (which I've made many times before) from 2005 to 2012 we used Subversion. The important thing about Subversion was that it was fun to use, and it was simple, so everyone in the organization enjoyed using it: the graphic designers, the product visionaries, the financial controllers, the operations people, the artists and musicians, the CEO, the CMO, etc. And we threw everything into Subversion: docs about marketing, rough drafts of advertising copy, new artwork, new design ideas, todo lists, software code, etc.
The whole company lived in Subversion and Subversion unified every part of the company. Indeed, many products that grew up later, after 2010 and especially after 2014, grew up because companies turned away from Subversion. Google Sheets became a common way to share spreadsheets, but Google Sheets wasn't necessary back when all spreadsheets lived in Subversion and everyone in the company used Subversion. Likewise, Google Docs. Likewise some design tools. Arguably stuff like Miro would now have a smaller market niche if companies still used Subversion.
At some point between 2008 and 2015 most companies switched over to git. The thing about git is that it is complex and therefore only software engineers can use it. Using git shattered the idea of having a central version control for everything in the company.
Software engineers made several arguments in favor of git.
A somewhat silly argument was that software developers, at corporations, needed the ability to do decentralized development. I'm sure this actually happens somewhere, but I have not seen it. At every company that I've worked, the code is as centralized as it was when we used Subversion.
A stronger argument in favor of git was that branches were expensive in Subversion but cheap in git. I believe this is the main reason that software developers preferred git over Subversion. For my part, during the years that we used Subversion, we almost never used branches, mostly we just developed separate code and then merged it back to main. Our devops guy typically ran 20 or 30 test servers for us, so we could test our changes on some machine that we "owned". For work that would take several weeks, before being merged back to main, we sometimes did setup a branch, and other times we created a new Subversion repo. Starting new repos was reasonably cheap and easy with Subversion, so that was one way to go when some work would take weeks or months of effort. But as ever, with any version control system, merge conflicts become more serious the longer you are away from the main branch, so we tried to avoid the kind of side projects that would take several weeks. Instead, we thought carefully about how to do such work in smaller batches, or how to spin off the work into a separate app, with its own repo.
A few times we had a side project that lasted several months and so we would save it (every day, once a day) to the main branch in Subversion, just to have it in Subversion, and then we would immediately save the "real" main branch as the next version, so it was as if the main branch was still the same main branch as before, unchanged, but in-between versions 984 and 986 there was a version 985 that had the other project that was being worked on. This also worked for us perfectly well.
The point is that the system worked reasonably well, and we built fairly complex software. We also deployed changes several times a day, something which is till rare now, in 2024, at most companies, despite extravagant investments in complex devops setups. I read a study last week that suggested only 18% of companies could deploy multiple times a day. But we were doing that back in 2009.
The non-technical people, the artists and product visionaries and CFOs and and CMOs, would often use folders, when they wanted to track variations of an idea. That was one of the advantages of having something as simple as Subversion: the whole team could work with idioms that they understood. Folders will always be popular with non-technical people.
But software developers preferred git, and they made the argument that they needed cheap branches, needed to run the software in whole, locally on their machines, with multiple variations and easy switching between branches, and needed a smooth path through the CI/CD tools towards deployment to production.
I've two criticisms with this argument:
1. software developers never took seriously how much they were damaging the companies they worked for when they ended the era of unified version control.
2. When using Subversion, we still had reasonably good systems for deployment. For awhile we used Capistrano scripts, and later (after 2010) I wrote some custom deployment code in Jenkins. The whole system could be made to work and it was much simpler than most CI/CD systems that I see now. Simplicity had benefits. In particular, it was possible to hire a junior level engineer and within 6 months have them understand the whole system. That is no longer possible, as devops has become complex, and has evolved into its own specialty. And while there are certainly a few large companies that need the complexity of modern devops, I've seen very few cases myself. I mostly see just the opposite: small startups that get overwhelmed with the cost of implementing modern devops "best practices", small startups that would benefit if they went back to the simplicity that we had 10 to 15 years ago.
> How GitHub _actually_ became the dominant force it is today, from one of it's cofounders.
> Being at the very center of phenomena like this can certainly leave you with blind spots, but unlike these youngsters, I was actually there. Hell, I wrote the book.
Downvote all you want for being “non-substantive” but for some reason I can’t voluntarily tolerate such a density of well-actually phrasing. It’s grating.
It also seems to be everywhere these days but maybe I’m too attuned to it.
It's not the first thing to be carried by hype instead of careful comparison.
There were lots of DVCS projects at the time, like arch, darcs, and dcvs. People were running all kinds of experiments to explore the Cambrian explosion of new ideas. Some of them did some things better than git, but git handled most of those things reasonably well and it was fast. We all mostly ended up on git because it was generally the better option. It earned the hype, but the hype followed the adoption, not vice versa.