Comment by nyxtom
8 years ago
It's interesting that the HN community continues to make reference to the prospect of a decentralized internet when Git was built to be decentralized in the first place. In spite of this, we all have congregated around GitHub for the community and are shocked when the centralized source we've been using gets acquired by a company we don't trust. That's sort of the whole point of centralization, you can't trust it. Maybe this event will finally shift things back into a decentralized direction.
Centralization has an undeniable fundamental attraction. Everything, really, seems to naturally trend towards centralization, and then major scandals reverse the trend. We will probably swing back and forth between the two in perpetuity.
The whole darn internet was built to be decentralized. And yet we all use GMail, the same handful of DNS servers, the same short list of major trunk hubs, the same shrinking list of bitcoin mining pools, etc.
I've always found it too difficult to choose the "decentralized" option for many services. It's just not convenient enough to spin up my own gitlab server, or own email. I tried to do both of those things a while ago when I was still new to Linux, and gave up due to the number of steps involved which I inevitably fucked up.
The solution for me would be packages which hold my hand through the install process to make installing such software as easy as possible. Obviously, packaging software in this way would take way more work, and people qualified to do this would rather package more software rather than hold some noob's hand.
That being said, hopefully in the future when software gets even more mature, repackaging will become less necessary, and this type of packages might become more common, allowing decentralized systems to be easy enough to set up that they become common.
I saw someone post on Twitter saying they were tired of being their own sysadmin.
It's true - I could set up my own mail server, my own Git hosting etc etc, but why would I? I'd rather just pay Fastmail for email and GitHub for some private repos.
16 replies →
Decentralized doesn't mean you have to host everything yourself, there are many other companies to pay to host things outside your server. You don't want everything hanging centralized on your hardware anyway, if your server dies, everything is down.
1 reply →
We package GitLab with Omnibus - it makes the installation experience a breeze. See https://docs.gitlab.com/omnibus/ for more info.
We also offer a hosted service (GitLab.com), if that's more convenient.
Eh? It’s literally three shell commands to install GitLab. One to add their GPG key, one to add the upstream repo, and one to apt-get install the package. I bet there’s a curl | bash script to do all three as “one step”.
If you’re going to complain about something, at least pick something legit like managing backups or server uptime. The install itself couldn’t be simpler.
10 replies →
I got tired of managing all that software so I just moved to containers. The Docker Hub has pretty much all I need, and if it doesn't, it's much easier to get it working than spinning a new VM or trying to install it together with a bunch of other software and keep them all up to date.
Have you tried Gitea [0]? It's incredibly easy to setup, and if you run it on Debian you can setup Unattended Upgrades [1] once then you pretty much never have to worry about it again.
[0] https://docs.gitea.io/en-US/
[1] https://wiki.debian.org/UnattendedUpgrades
Ben Thompson at Stratechery has been banging the centralization drum for a while. His take is the sheer scale of the internet imbues tremendous value to any centralized service that can organize it (e.g. what Google does for web pages or Facebook does for your friends).
If this is the case then the internet may end up more centralized than previous forms of media and communication. I hope that's wrong, but it seems to be happening right in front of us.
So that's how Stratechery is spelled! I have been listening to Exponent for a while and failed to find the site on Google.
4 replies →
I think the big problem is not so much centralisation as it is that people are locked into platforms.
There's nothing wrong with using Gmail for email hosting if you have your own domain name, it's easy to then switch over. But if you use an @gmail.com email address and Google decides to ban you, you're screwed.
Same story with Facebook, there are quite a few people that I would possibly never be able to contact again if Facebook banned me or them. This isn't a new problem caused by Facebook though, in previous years there was the same problem with email, and before that, if someone changed their address or phone number you'd lose contact. There are actually people who I lost contact with who I regained contact through Facebook.
Anyway, my point is that centralisation isn't bad if it's painless to decentralise again. Git and Github are fine, at work we could switch to a self hosted solution or Bitbucket in a fairly trivial amount of time. Same for our work emails, we could switch form Gmail to another host with fairly minimal disruption. Centralisation with locked ecosystems, like Facebook, are not good.
Yeah, I wanted to say exactly this. There's a different between specialisation in a market that still provides competition and consumer liquidity, and monopolistic centralisation (even when the monopolist is effectively benign).
It's like there's a middle-ground between everyone building their own automobile, and there being only a single car manufacturer on the planet. So long as have you have a few players who are genuinely competing, and you have the option to switch between them without paying an excessive penalty, then it's a good thing that a certain subset of people are working hard on building better cars than you ever could tinkering away in your garage (although you should still be allowed to do that, if you so desire).
What this requires is for governments to provide a framework of standardisation, access-to-data, data-transferability, and antitrust enforcement that allows a healthy competitive environment to emerge and persist, without either allowing a monopoly (or a cartel) to evolve, or overburdening everyone with regulation.
It's a difficult balancing act, even in more traditional industries, and anyone who presents a too simplistic "more regulation!" or "less regulation!" answer to it isn't being honest. Tech presents additional challenges because it's newer, and because it's evolving rapidly. I think it will take many more decades for the necessary level of technical understanding to metastasise through policy-making and civil administration realms until you get effective control of tech markets, although laws like GDPR are an interesting start.
> But if you use an @gmail.com email address and Google decides to ban you, you're screwed.
You can loose control of your domain too. And if someone else snatches it up they could even read your newly incoming email. I'm willing to bet when gmail bans an account, they don't recycle it.
I'd love to see GitHub (and GitLab) offer a custom domain name option which would proxy HTTPS and SSH clones via a company's custom domain (e.g. code.example.com) to GitHub's hosting. That way, if a company needs to move away from GitHub (or GitHub goes away), developer's references to some company's code is not stuck pointing to some stale github.com domain.
Hosting such a proxy (and the repos) takes infrastructure, time, and experience to secure and make available, so from a user's perspective it's great if a company does this as a service as long as you provide the domain.
2 replies →
Maybe we can eventually achieve something like decentralized ownership of centralized web resources.
While not quite decentralized ownership, Wikipedia is at least a non-profit that everyone contributes donations to. Where's the Wikipedia for code? Where's the non-profit donation-based social network?
> Everything, really, seems to naturally trend towards centralization,
It's economics 101, really: division of labour and economies of scale. A company like Github can build and sustain capabilities that are flatly uneconomical for their customers to build themselves.
In terms of strategy, Github's lockin doesn't come from git. It comes from everything around it: issues, pull requests etc. This functionality can be replicated, but data has inertia. The more you have, the less you want to move it.
For an instructive parallel, consider how easy it is to use AWS Lambda with all of AWS's data-centric services.
Hmm, of those, if I could specify "pick one of these 20 DNS resolvers at random for each query" I might...
Sorry, tangential thought, I agree with your main point, and the others are much tougher.
> Centralization has an undeniable fundamental attraction. Everything, really, seems to naturally trend towards centralization
How so? Centralization is merely enforced by the government and incentivized by the system it exists in.
If centralisation only occurs due to government enforcement, then how did government itself come into existence? It's the purest example of centralisation, after all. There must be something that incentivised centralisation even in the absence of government.
Many humans are social creatures and like to congregate.
> The whole darn internet was built to be decentralized. And yet we all use GMail, the same handful of DNS servers, the same short list of major trunk hubs, the same shrinking list of bitcoin mining pools, etc.
Eh, I have Gmail, but I barely use it.
Regarding DNS, that's only because the DNS provided by ISPs is being tampered with or runs downright awful.
What happens is people copy each other's behavior. X (friend of Y) starts using Facebook. Friend of X starts using Facebook as well. But X never looked into the alternatives (who has the time for that plus everyone is using Facebook); its only because of other people that they started using it. It is called the network effect [1] though we can thank the early adopters for feeding that hype. I see it as a sign of capitalism/optimization.
[1] https://en.wikipedia.org/wiki/Network_effect
You can easily migrate your repo to a different service, so having lots of developers rely on GitHub isn't really a big deal. Many large projects have GitHub mirrors.
I'd say the biggest issue is that Git doesn't include better built-in support for issues, wikis, PRs / code reviews, and releases. Compare that to Fossil [0], which lets you bundle up everything into a single file. If there was better built-in support you could migrate everything more easily to self-hosted alternatives like Gitea [1]. Regardless, it's possible to migrate manually, even if it's a bit more work.
[0] https://www.fossil-scm.org/index.html/doc/trunk/www/index.wi...
[1] https://gitea.io/en-US/
> Git doesn't include better built-in support for issues, wikis, PRs / code reviews, and releases
I feel like a lot of these features could be handled with git-notes[1]. For example git-appraise[2] uses the git-notes feature for a code review system:
[1] https://git-scm.com/docs/git-notes
[2]https://github.com/google/git-appraise
Somewhere around 2009-2012 there was also a lot of experimenting going on with distributed issue tracking, such as with Bugs Everywhere [0] (and like 3 or 4 others I tried some time ago that I can't find now).
That said, it seems like there was a resurgence - I found two, git-issue [1] and git-dit [2], that have both had activity this year. And git-dit has shown up on here at least once before, as well [3].
[0] https://news.ycombinator.com/item?id=13732598
1 reply →
Thanks for sharing, I'd never heard of git-notes before! That's really cool. I'd previously wondered why there wasn't something like this available; it looks like I just wasn't aware of its existence. I definitely agree that you could implement many powerful features using this.
Now I'm wondering if someone has implement a release tracker using git-notes. After you tag the release you could build / generate the output assets (e.g. binaries), upload them to some remotes (e.g. S3, GitHub, your server), and add a note with the release info plus some links.
I've already thought up a couple ideas for things that could be built on top of git-notes.
I'm glad to see Fossil mentioned here. Yet the real problem is not in the technical aspects and possibilities of project hosting migration, it's the dependence of the majority of open-source developers on GitHub's centralized social network.
Hopefully if this turns GitHub evil, other social networks can be leveraged to assist in a population migration. Like, someone posting a link on Twitter to wherever the repo will exist in the future.
This makes me wonder how hard it is to securely host a git server on my own. I'll start googling but I bet the answer is gonna be "hard."
1 reply →
What social network? The stars and follows? Does anyone actually care about them? Why? I've never seen the point.
5 replies →
I wouldn’t want git to have built in wiki’s, bug trackers etc. I think it’s better to have separate tools.
Point being, the data can and should live within the repo like gh-pages has been doing for a while. Not about those tools being integrated to official git tooling.
> I think it’s better to have separate tools.
The amount of people using GitHub shows otherwise.
I’m glad to see Gitea commented here. I’ve been using Gitea at work for about 3 months now and really enjoy it.
With tools like SIT (https://sit.fyi) you can keep your issues and patches inside of the Git (or other SCM) repository.
2 replies →
Is someone doing this for the entire website?
Give it 7-10 years before it is riddled with advertisements or has a subscription fee for 'premium' downloads.
Unless I misunderstand the need you describe, git can in fact bundle in at least two single-file formats.
Can it bundle "issues, wikis, PRs / code reviews, and releases"?
Well, centralisation also has a huge number of benefits, so it's not really a surprise.
The more important thing is to be in a position that makes it harder to be locked-in to a centralised provider. Fortunately Git makes that relatively easy – I could switch all of my work to Gitlab or Bitbucket with relatively little work.
There's more obviously a problem where Github is being used for issue tracking, PRs, and the general open-source community. I'm sure there will be a few scripts available to make migrating issues etc. to another provider relatively painless, since there's no great distributed solution for this at the moment. That just leaves the community aspect, which is going to be the hard bit…
I think the network effect is too great to ignore. I would guess the number of potential contributors you get just by using GitHub, where many people have an account and know the workflow/UI, is bigger than any other place.
5 years from now when GitLab is acquired by Google we'll have to migrate again.
Or export you projects to someone else running GitLab. All the functionality to run a forge in GitLab is open source and export/import is open source as well.
Same can be said of Android, but most simply people don't.
At least Gitlab can be forked in case of disaster. You can't do it for Github.
Which Gitlab? The software is less important than the ecosystem. Git is the major component, but Github/Gitlab are about usefully centralizing it. Gitlab is still a centralized service, even if there are N instances of centralization.
In other words, I don't know how much use it is to fork Gitlab if the community around it is dispersed. Git is already based around decentralization, and I don't see how running my own instance of Gitlab makes it any less disruptive when the most popular instance of Gitlab is disbanded.
1 reply →
Well you don't need to. You can use gitlab or gitea.
3 replies →
I think we all trusted github because of git: we know that worst case was that github disappeared overnight, erasing all repositories, and in that case we all would still have distributed backups to restart it.
So we had limited trust in the centralized missions we gave it: communications, issues, pull requests.
I am sure that as soon as a good tool allows to do that in a decentralized fashion, we will switch to it.
The decentralization advantage of Git over prior VCSes is technical, not political. You could always stand up a competing SVN instance.
If Git/Github is the epitome of the developer's centralised experience, then I full heartedly welcome that.
As others have mentioned, there's certainly advantages to centralised systems like Github's network graph, issues, etc. But at the end of the day, everyone on GitHub still cares a whole lot more about the code, and due to the very nature of the protocol that's something that'll always be able to be taken elsewhere. It's not like "if they announce shut down you can export your data", there's a very high lightlyhood you have already done that and you have the full repo on your local machine.
I feel like Github is the best possible compromise - centralised network and features that's built on a decentralised protocol and easily able to be taken elsewhere.
> Maybe this event will finally shift things back into a decentralized direction.
People say this every time stuff like this happens, and yet people never learn :/.
> Talks about a decentralized environment
Keeps his tools related to Cydia closed-source...
What's the story with that?
1 reply →
Indeed. It would be awesome if GitLab could make use of ActivityPub to create such decentralized network (à la Mastodon)...
This is currently being investigated: https://gitlab.com/gitlab-org/gitlab-ee/issues/4517
Saw this on another post related to gitlab proposal for federation support. That would bring us closer to a much nicer ecosystem
https://gitlab.com/gitlab-org/gitlab-ee/issues/4517
>Maybe this event will finally shift things back into a decentralized direction.
Absolutely no chance, and I'm fine with that. Sorry, but I don't feel like spinning up a slhit server and managing all that goes along with it. I just want my code hosted somewhere that others can access. These meta issues are just noise and don't bother me (or 95%+ of the people using GH) one bit.
And there it is. "Git" "hub" could be considered an oxymoron. The adoption of this proprietary closed-source veneer over git by FOSS developers has always been ironical to the point of farcical. Now the other shoe has dropped.
Good point. It's not too crazy to have people behind major open-source efforts get their own VPS's and run Phabricator or Gitlab. With a universal login akin to OAuth maybe it's doable.
That's insane, not only do developers and maintainers devote a huge part of their life to major open-source efforts, now they are expected to spend more time and money setting up, admining, and securing their own private servers? That's a great way to destroy Open Source projects. Very few people would be able/willing to put that much effort into it.
Not sure if this is an age-gap or participation-gap here but that's EXACTLY what we did before Github came along. My foray into open source started in '99 and it wasn't until 2010? that we had good centralized alternatives to switch to. Hell, jQuery was on a hosted version of Trac until just recently. And yes, we spent time on it. A great deal more than "very few" did the same and were involved and passionate about it.
5 replies →
I could envision pre-configured vps images maintained in the open by volunteers to make it more practical. They could have unattended-upgrades configured for major patching and the community could help migrate between major LTS releases.
It isn't ideal but it might be doable at least for some projects. Maybe devops people want new ways to contribute to open source too!
1 reply →
How is running a bit of infrastructure so lethal? Most of my libre projects aren't on Github, and running your own Git server isn't terribly difficult.
1 reply →
Decentralization is a wonderful idea. It brings with it benefits that are technical, architectural, and social. Yet is also carries with it its own set of costs and risks.
Bluntly, I doubt this will shock the world of software development into being less centralized. The practical benefits of centralization are, apparently, too large to be readily overcome.
(shameless plug) I recently built a tool (SIT, https://sit.fyi) that has decentralizes issue tracking and similar workflows, giving full days ownership and independence of storage and transport. Can be (and actively being) used with Git, or other SCMs.
All I'm getting is a blank page, it seems to be 404ing on https://sit.fyi/bower_components/webcomponentsjs/webcomponen...
1 reply →
Very nice! Looks cool.
What does your tool offer to make sure I never have to deal with abusive users, server patches, or a split-brain scenario?
3 replies →
This. As with so many things, laziness has driven developers to be using Github as single point of truth. And it is cringeworthy to see how few developers actually know what git is and that Github is just a company monetizing opensource software. About time everyone got a wakeup call.
To be fair, github provides a lot of value-add on top of plain git. Having UI for access control and integration with issue tracking and CI tools gives you a lot that you would not get out of the box with git.
That said, I have always been uneasy with one central player hosting a huge percentage of open source projects.
> In spite of this, we all have congregated around GitHub
Nearly all. I never got into the swing of it - always expecting a thing like this to happen sooner or later. Honestly, I shall not be sad if the world starts beating a path to somewhere else now.
Humans* aren't built for decentralization. We can only keep so many unique names in our head a time, only so many connections. I don't have any papers to link to on this, but I think it's safe to say that's how things are - if not we wouldn't have created cities, national identities, and of course, newsgroups, message boards, centralized package managers and distributions, and yes, source code repositories.
There is something nice about knowing, with a high degree of certainty, that any given open source project (or any thing) is in one of a few places, and if I don't know where that is I can ask for help to find those places by their names.
That's mixing up a whole lot of concepts. Centralization is about power.
Cities generally have very little centralization. Almost no interactions in a city go through a central entity, similarly for countries. Concentration is something different than centralization.
Newsgroups have very little centralization. Everyone reads and writes through different servers, and you can trivially switch servers without any impact on who you can communicate with. Agreeing on names and federation is something different than centralization.
...
There is absolutely no need to have software development happen on one proprietary platform in order to be able to search for software project in one centralized location. What you need for that is a search engine. Or even multiple competing search engines that can all index the same set of software projects.
Just because cities, countries, and newsgroups allow lots of different entities to participate doesn't mean they aren't centralizing. The strong incentives to place like with like result in forums with topics, subforums with subtopics. Districts become heterogeneous and we get things like Chinatown or the Castro District.
And these agglomerations of like with like occur spontaneously at pretty much every scale. You're quite literally missing the forest for the trees.
3 replies →
Many humans are apparently not, but I had a much easier time navigating (and contributing to!) projects when each of them had their own website with integrated scm links etc.
GitHub is a grey mass, project branding is lost, the tracker is chaotic for large projects.
It's just Sourceforge, better executed but with the same disadvantages.
I think that's quite a stretch, the reasons for decentralized version control (practical use) are far different than a decentralized internet (humanitarianism).
This is why GH is popular it's vakue is in supporting a central hub for oss projects
> Git was built to be decentralized in the first place
Git was built to track changes and resolve collisions, if I get it right.
The whole world's demanding it. No one really knows how to do it efficiently, it seems.
It’s not just about efficiency, it’s about responsibility. I love decentralization when I can avoid dealing with BigCo, I hate it when I’m responsible for fighting spam, ensuring my services stay up, not getting hacked, and so on. All of these tasks are a requirement as soon as collaboration is in the picture.
You've got a point there. I'm just so sick of all this. The Internet's a great thing, but it just seems to be going downhill with corporate interests.
I disagree. The popularity of GitHub amongst the programming community means that ease of use / convenience is more important than the notion of “decentralization”. Otherwise, people would already be setting up their servers for hosting git repos.
That's really what I meant by efficiency. Ease of use increases that for businesses, that's the only reason they really care about ease of use of products they want to buy.
Most ISPs don't let you forward ports, so decentralization is difficult for most people.
Most people also don't have a server running constantly, so a centralized service is convenient.
Totally agree. For me decentralized means desktop clients or own cloud. Own cloud is more expensive to maintain. Desktop app are more expensive to develop and maintain too.
Where is the Github on Blockchain project?
Why would a blockchain be necessary, (as opposed to a simpler distributed storage mechanism for git repos)?
If you want to have a main canonical state of the "maintained" repo, that is mutable, similar to what we currently have with Github, a blockchain would be one way to achieve that.
3 replies →
https://github.com/cryptix/git-remote-ipfs
Better: https://github.com/ipfs-shipyard/igis && https://github.com/magik6k/git-remote-ipld
How long does it take to clone linux.git from there?
Ha!
http://oscoin.io/ a team in Berlin is working on it for some time.
https://github.com/axic/mango
Git?
Tremendous point.