The single most important criteria when replacing GitHub
joeyh.name
joeyh.name
As others are alluding to in the comments, I’m highly skeptical of coupling the issue tracker and other non-VCS features with git. A far better solution would be to keep them decoupled, but easily pluggable and extendable.
In fact, this is basically the status quo with any issue tracker that has git integration (ability to tag issues in commits, etc.) If this was the only problem GitHub solved, then it would be competing with pivotal and the like.
But issue tracking is not the only problem GitHub solves. The reason GitHub grew so large is because it created a community within a single space. It gave devs a place to collaborate on, and discover projects within an environment highly integrated with VCS and issue tracking.
People don’t publish to GitHub for the issue tracker or repo hosting. Those are solved problems and many companies even use separate software for them. People publish to GitHub for the visibility, discoverability, and community.
There is no technical solution that can usurp the advantages of GitHub as a social network, just like creating mastodon is not enough to kill twitter.
The technology features of GitHub are easily substitutable. The community is not. Network effects are real, and they are the reason Microsoft felt confident paying $7.5bn for a platform that has no major technical differentiation from its competitors, but does have a huge and defensible moat around mindshare, due to its main value-add being rooted in network effects.
But isn't it nice that you can say "issue X has been solved in commit Y"?
This is the luxury of first-mover advantage. GitHub only had to implement “good enough” features to attract a community. Any competitor that usurps GitHub will not only need to implement the right features, but also figure out how to move the community from GitHub to the new platform.
The linked article argues that GitHub locks in users by not storing everything in git, which what the post you're replying to is skeptical of. (I am, too.)
Being able to say "issue X has been solved in commit Y" is coupling the issue tracker and source control at a user experience level. The back end solutions are immaterial; they just need to be talking to one another, whether it's through plugins, or through proprietary features like GitHub already has (in which commits can be automatically linked to issues and vice-versa, merging PRs can automatically close issues, etc.).
There are HUGE network-effect benefits to having a single dominant provider. Right now, if I am looking for a code library, I pretty much only use the ones I find on github, even if the google search shows me projects hosted on other places.
I want to be able to fork, clone, and contribute back without having to create accounts on other VCS sites. I don't want to learn another interface, or have to remember which site had which project. I want to be able to have a single list of 'starred' projects that I am following. I want to only have to learn one system and check in one place.
No matter what, that is just easier as a user. I know there are costs, but those really have to outweigh the benefits to make it worthwhile having multiple providers. I have yet to see a federated system that solves these problems, and the fact that no federated system is as popular as the centralized systems lead me to believe it might be an unsolvable problem.
(Sorry to put it harshly, but it's felt like we're all getting a bit spoiled. Especially compared to the old days.)
For better or worse, you are the product if you use a centralized, free service. And the only thing keeping those dominant players dominant is the blind loyalty we seem to give freely.
It's all about that convenience! I get that. But morals have their place, and in the coming months the world will show whether they care at all about centralization.
It's probably important to stay nervous about centralization. If we let our guards down, we could find ourselves on the short end of an upsetting stick. History has shown time and again that when companies have no incentive to compete, they tend not to try. The reason Facebook can be so free with your data is that there is no way to compete with them. With github, at least there's a way.
Honestly, the biggest thing holding back Github competitors is that they won't just make their service look identical to Github. Gitlab looks strange every time I run across a repo. Instead everyone wants to be different, and usually it's not better.
I have infinite work that needs to be done, and a finite amount of time. I have found in my experience that only looking at github works for maximizing my productivity; I can get almost everything there, and the returns for learning another system does not make up for the time it takes. This isn't about laziness, it is about choosing to put effort where I get the most value for it.
> For better or worse, you are the product if you use a centralized, free service
I pay for github (7 bucks a month for a personal account, and my company pays $100k+ for github enterprise).
I think the thing we should be nervous about is not centralization, but vendor lock-in. As long as we can switch, we are ok. Making sure we use abstractions in our interaction with github API helps with this.
However, as long as they keep providing the best service, I will keep using them.
and your attitude is "well.. if you don't make 50 accounts you don't deserve it!". Really? And also that's why we have package repositories... npm, nuget, PECL, composer, should i also register on 500 websites just so i can build a website or two?
Also, github is free for open-source projects, but it's paid for teams and enterprises. it's a win-win situation where they do social good and get paid for private service.
Alternatives & competition is good, but too much competition is not that great either in this case.
Maybe, but maybe I disagree with how they treat their female employees, or maybe I don't like that they financially support some political thing or whatever.
Capitalism doesn't work without real competition. I shouldn't be obliged to do business with this one particular company if I want to develop Free Software. My point isn't that GitHub is evil; it's that each person should be free to decide that individually.
Why would contributions be low? Presumably we'd have a common way to contribute from your own federated instance.
There are thousands of websites (maybe even more!) and it's possible to discover them and comment/upload/whatever. Would it be better if they all moved to Medium, Wordpress.com and Facebook?
First you spoke of 50, then 500 (web sites), now thousands (yet you only managed to name 6).. this is starting to resemble reductio ad absurdum.
You haven't really made a convincing argument for why we might have excessive variety, such as an unusually low barrier to entry compared with other open source tools.
Moreover, I'm pretty sure your arguments could also be used in favor of federation, rather than centralization.
Not really, you just get less people using, contributing, and testing your project - software should try and stay in the known, not scattered around sourceforge, google code ... etc
Linus is that you?
[1] in case you don’t get the reference.
But in all seriousness this is a terrible attitude to have. One of the things I enjoy about being a developer is the community and collaboration and this type of thinking is the antithesis of that.
I’d much rather have centralised tools and a distributed/diverse development community than decentralised tools and isolationist community.
[1] https://github.com/torvalds/linux/pull/17#issuecomment-56546...
If I just need a git repository, I store it locally. Git is a DVCS for a reason -- most single person projects don't need a remote anyway. This makes GitHub the home for my more permanent projects, with local git for everything else.
I realize not everyone feels this way, but I do.
If the attention comes, no worry. If it doesn't, perfect.
I use a remote as an easier-to-maintain-and-test backup than trying to maintain a mirrored local repository on another drive.
You should really consider getting a good backup solution, like Tarsnap or Backblaze, to follow from the "two is one and one is none" principle of backups. That is, if you haven't already.
All of that aside, it's still easier to maintain-and-test a remote repository than to maintain-and-test local repositories.
A dominant siloed service is precisely what stops a federated network from emerging. This is why I'm very pleased that Microsoft has bought GitHub, because it's apparently jolted a lot of people into realising that GitHub is a single dominant provider.
I think GitHub became dominant the same way Twitter and Gmail did. Techy early adopters ignored the fact that it was proprietary, because it was a nice service among many options; but this growth and the network effect led to an effective monopoly:
1. Neat tech demo, siloed but harmlessly tiny
2. Techy early adopters start to rely on it because it's genuinely useful
3. Network effect brings in the masses
4. Scalability problems: interoperability is still desired, but less urgent than fail whales
5. Investors invest; money pays for scaling up and fixing fail whales
6. Investors get itchy at loss-making, want a return on their investment
Now you have the masses using your service, and any competitors are ghost towns. Investors want money and your most valuable asset is your user base. Interoperability would make it easier to lose your users, so lock-in becomes essential to your business strategy.
If enough people jump into the silo before federation works, federation will never be added. Avoid supporting proprietary networks.
In this case, providing a free "let's pretend we're doing open source" play area to millions of people who can't code their way out of a wet paper bag,
There was no lack of competent, original code on GitHub last time I checked... What are you referring to?
I don't know what ecosystem you're working with, but I typically find code libraries for my projects using the Python Package Index (PyPI). A lot of packages on PyPI are located at GitHub but by no means all. pip can install packages from other sources that PyPI or GitHub. It's not that difficult.
Regarding creating accounts, yes it's a speedbump to have to create multiple accounts but using a good password manager with autologin features can take away a lot of that pain.
No. Two weeks ago if you took the temperature of the crowd it would seem dead set on singing the praises of github centralization, encourage others to put all their eggs in that basket, and pretending like open source doesn't exist unless on github.
The popular conversations here have shifted. It probably indicates some shift in what the audience really thinks, but mostly just shows whats popular to bikeshed this week.
I wouldn't be surprised if companies like Atlassian, Slack, Jetbrains, Docker or Hashicorp are next.
And I know most other developers can also contribute to my projects in a familiar way.
If a GitLab or Gitea-backed community surfaces managed by a foundation, GitHub will be vulnerable.
Right now there isn't much of a point in moving to GitLab.com because they could be acquired as well.
Disclaimer: This is my app and btw I'm running a WWDC promotion and you can download it for free till Friday: https://itunes.apple.com/us/app/easygit/id1228242832?mt=12
Agreed, but coupling has extreme benefits. No matter how stringent you are on your commit message requirements, you'll never capture the scope of a code change as well as the originating issue.
They may be separate products, but the need for a cross-vendor common interface/implementation persists. Also, the ability to take your ball and play elsewhere is required too. If a git-like approach were taken towards issue management and all of these platforms could implement/use it, nobody would ask to piggy back on git. Then again, you can apply this same discussion to any form of structured, persisted digital content...nobody wants to be locked in. Just so happens that the code part happens to have an unencumbered implementation that others have embraced.
What do you mean by coupling? Are you talking about what Gitlab Omnibus does by bundling an issue tracker and other web services along with its core git functionality?
If so, you're wrong-- Gitlab's approach helps a busy maintainer get their work done without being hemmed in to a service like Github. The issue tracker's defaults are sane, non-technical users can easily sign up using the other bundled services and communicate using it, and it gets upgraded as a side-effect of upgrading Gitlab itself.
If I had instead used one of your claimed "far better solutions," I'd have spent hours researching issue trackers and installing/configuring one of them. That's time taken away from developing the software I'm housing in Gitlab.
Or, even worse, I'd have asked on the dev list, "what's a good, solied open source issue tracker?" And we'd have bike-shedded for 10x the time.
Anyone who has version control and bug tracking under one roof in one company has them "in one place". Plenty of organizations have them integrated with some sort of common "dashboard", and multi-way navigation between tickets, commits and reviews.
Why ?
The price for one migration in a few years is not a big deal compare to self hosting, which is a human resource hog for small entities.
I have more important things to do than to deal with deploy, configure, maintain, document, secure, and test my own instance. I really don't want to admin one more server just for that. I don't want to play cat and mouse with spiders, brute forcers or DDOS events.
And I do want a huge visibility and community around the tool I use. And my users may not want to create yet another account to open a bug ticket.
The availability guarantees are much easier to keep for a small team than for thousands, so you don't really have to worry about that either.
Buying the server, reading the docs, setting it up, buying an URL domain, binding it to the server, getting the backup server, setting it up, testing that everything works, training the team on the new UI, documenting the whole things for when you are not available or it's not your job anymore, blocking one team of 5 devs from working for 2 hours (or a man day of work) because something went wrong just once...
It's not just resources you spend on useless things. It's resources you take __from__ useful things.
Or worst, you are in a company. Now you have to REQUEST a server, ask a sysadmin to set it up, the security team to approve your software, the budget to validate the payment and the blessing of your network authorities.
Then, you change job/client/whatever. What do you do ? Do it again ?
I think it's getting 10 minutes years old to this day.
What’s your server’s uptime? Is it highly available? How often do you patch? Do you test them first? How do you keep up with security updates from other software on the machine(s).
How is your security team in general? Do they monitor for stolen credentials? Do pen-tests? Watch for network scans and attacks? Look for weird traffic patterns?
Do you have redundant network links? Backup generators? Do you test them? Sure your datacenter SAYS they have them, but remember when Intuit went down for 2 days a few years ago? I bet they had told their bosses they had generator backups.
Is someone always on call? What are they experts in? How do you get support?
GitHub provides a TON of stuff above a cheap VPS or EC2 instance. And that’s not including the network effects of having so many projects in the same site.
My non self hosted blog ? Maybe a few hours a year, and I don't have to do anything to restore it.
Who cares about uptime, when you use a server alone or with a small team? It can be down for 10 hours and you would not even notice.
You don't understand what you need.
> How often do you patch?
I patch the machine multiple times a week with some "apt update && apt upgrade" which takes literally less then a couple of minutes a week.
> Do you test them first?
I don't need to because I'm using ZFS and make a snapshot before upgrades, so in case of a disaster (which already happened multiple times) I can roll back within minutes, which happened multiple times, once when the machine didn't even booted.
> How is your security team in general? Do they monitor for stolen credentials? Do pen-tests? Watch for network scans and attacks? Look for weird traffic patterns?
You don't need any of that. If you think you do, you think you are far more important than you really are. Maybe framework authors or super-popular library writers would need to worry about that, but self-hosting makes you an order of magnitude lower chance of being a target.
> Is someone always on call? What are they experts in? How do you get support?
We might not talk about the same thing...
> And that’s not including the network effects of having so many projects in the same site.
This is the only valid point you came up with.
Maybe the ineconomy of scale? Except it's not really about scale but about customization, so maybe the "economy of customization".
> You don't understand what you need.
Unfortunately, I think this statement is more often true than not, and it's much easier to go with what's popular right now than to form that understanding.
Of course, there's some merit to that strategy if one is new, but I can't believe that many people are that new.
The thing to consider (if portability is your primary concern) isn't the underlying storage format, it's whether or not you have a straightforward way to move it between providers.
One is storage of data that can be downloaded whenever, the other is basically a comment field.
That's exactly what Fossil does, and the creator has urged Git to do the same.
It wouldn't make so much sense for issues, pull requests, etc. If they were backed that way, they'd very likely be rather slow to query (as GitHub doesn't keep the latest data in a "checked out" state).
Not to mention the fact that you can just ask them for a data export and they'll provide it all to you happily in JSON format.
This post doesn't really have much reality backing its criticisms.
There may be valid criticisms about MS GitHub, but this isn't one of them.
A further bit of trivia: Fossil and Git were developed at the same time. You could argue that Linus should have used Fossil rather than rolling his own. Fossil was built for the workflow of the sqlite developers, who do not believe Git is a good fit, and they make it available to others.
You know, crazy things like forwarding calendar invites as calendar invites instead of emails, deleting emails older than X days, etc.
/s
As the author noted himself, GitHub keeps, source code, user pages/wikis and gists in Git. Other objects like issues, repo relationships, accounts, project details in their own database[2]. To me, that's a fairly standard way of storing data if I were to develop a GitHub system. Even rate limits for APIs are common way of protecting them from API abuse.
Why is all of sudden Joey has criticism?
The anti Microsoft panic about GitHub feels childish and pedantic.
Perhaps if there was some evidence post acquisition of Microsoft trying to do unpalatable things then there might be room to complain.
But just to knee jerk advocate leaving GitHub because you are a Microsoft hater lacks credibility and comes across as whining and silly.
Maybe some git-like interface on top of a database is more what you want...
It've used git as a database very productively, at well beyond that scale. https://joeyh.name/blog/entry/databranches/
which is an important limitation.
You can just change your remotes and push to a different server. The protocol was designed to be distributed and prevent a single point of failure.
Also, Microsoft and people who develop on Microsoft tools realise that there are network effects of being able to share code. This was just a side benefit and not altruism. What they were after was Electron, since that's a very popular way of writing desktop applications currently.
Would you mind explaining that? Microsoft doesn't need to purchase Electron for $7.5B of stock in order to write an Electron app. They already write Electron apps, one of which is used by many people who read HN.
But not sure if they had control over Electron's future direction which they seem to clearly have atleast now.
V8 can also be replaced with Chakra in Electron i think.
In that light, GP might be right.
If this is a $7.5B purchase of Electron, my gut tells me that it isn't an arm's length transaction. I doubt that would happen in the US for Microsoft today, so I can't help but think there are other reasons than Electron for the purchase.
The announcement from MS didn't really spell out the reasons for the prospective purchase other than to support developers. When I see the filing for the purchase, there may be additional reasons listed in that.
It's just a place where you store your git repo.
And as for discoverability: I wouldn't want to give a single party control over that, actually. I'd say let people discover projects through other means, such as HN.
But Github is so much more than that. It's a public forum to discuss and prioritize issues, a social network to start projects with friends, an automatic portfolio of sorts for your resume, and a really well managed, nicely integrated, reliable service.
This is all, I think, a function of its scale and the traction it's gotten.
The rest have no real business being in git. There are other interfaces for getting your data out if you really need it.
So much of this argument is just “this one format is better than X” without any tradeoffs being mentioned.
Also, as some have pointed out here, storing highly relational data like issues and connected profiles, etc, could be an exercise in frustration if you tried to store all that in git. At the very least, it would be limiting.
This reminds me of people in the healthcare space who advocate for blockchain as some magical way of resolving integration issues.
The absence of a robust, well adopted and supported format, is the greater reason for integration issues.
Changing the storage and distribution format might bring certain benefits, but it doesn’t solve the core problem.
It's written by https://news.ycombinator.com/user?id=yrashk
For example, Github issues are underpowered for many people. But at least you can ignore them and use your own service.
Many source control systems tried to offer all-in-one platforms but it’s never worked so far. In fact, we don’t even do PRs the way the authors of git intended.
For integrations, it might be better to settle on a configuration file format and maybe some conventions. Maybe that could be checked into your repo.
But then you need fine-grained control over who can modify that, and encryption to keep passwords secret, and those aren’t standard features of source control either.
Maybe we could come up with conventions that were great for hobbyists and the enterprise. But open source communities and standards committees are really bad at that, compared to just leaving it the marketplace.
Astonishing that this was the response to a comment which offered-up le mot juste.
To put that in context, I lived through MS's various attempts to kill off competitors (Yes, I paid for netscape.)
I've worked with LDAP/kerberos and cursed the weird schema changes that are AD.
But that was > 15 years ago. I'd gladly pay for AD, even more if its a linux based infra. (Hmmmmm kerberos)
Github was loosing cash, had a toxic culture (Abuse of power, side effects of sexism, and then hiring people for being agitators instead of coders.) Microsoft has the money, time and power to improve the product, fire the arseholes and make sure that github is in some sort of shape in the long run.
Just look at the alternatives: atlassian, or worse still oracle/IBM.
So sure, migrate to gitlab, Its a good product, when its working. Github has many faults, but reliability isn't one of them.
This problem keeps returning onto HN again, and again. I think this simply wouldn't work for mentioned reason, and few others that come to my mind.
And i know a bit about building a source code management platform because I built RhodeCode.
https://gitlab.com/monnier/bugit/
This one is by Stefan Monnier (former emacs lead developer)
https://ec.europa.eu/info/law/law-topic/data-protection/refo...
Of course Fossil has exactly what you're suggesting.
The opening paragraph is also very on point about the negative effects of Github on the Git ecosystem.
There is a reason why every single product uses a separate database for those.
https://keybase.io/blog/keybase-chat
Encrypted github support!