<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:series="http://organizeseries.com/"
		>
<channel>
	<title>Comments on: Github: Your Single Point Of Failure</title>
	<atom:link href="http://www.brandonsavage.net/github-your-single-point-of-failure/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.brandonsavage.net/github-your-single-point-of-failure/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=github-your-single-point-of-failure</link>
	<description>The personal blog of Brandon Savage. Contains entries of a personal and professional nature focusing on PHP, Apple, LAMP, MySQL and Washington, DC.</description>
	<lastBuildDate>Wed, 15 May 2013 14:54:51 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.2-alpha</generator>
	<item>
		<title>By: Hikari</title>
		<link>http://www.brandonsavage.net/github-your-single-point-of-failure/#comment-12872</link>
		<dc:creator>Hikari</dc:creator>
		<pubDate>Wed, 10 Apr 2013 00:07:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.brandonsavage.net/?p=2154#comment-12872</guid>
		<description><![CDATA[Well, Wordpress.com also hosts free and premium services on the same datacenter. Google Apps too. We&#039;re living in the cloud era, we shouldn&#039;t have to worry where our services are being hosted.

I myself don&#039;t like Git. I&#039;d rather pay for a Subversion + Redmine service.

Regardless of the software, if we want top availability and reliability, we must pay for it. There&#039;s no other way. Softlayer for example has 3 sites in USA linked by dedicated optical cables. If worthy, it&#039;s just a matter of paying for 2 servers to replicate the service, or buy a backup service hosted in another continent.]]></description>
		<content:encoded><![CDATA[<p>Well, WordPress.com also hosts free and premium services on the same datacenter. Google Apps too. We&#8217;re living in the cloud era, we shouldn&#8217;t have to worry where our services are being hosted.</p>
<p>I myself don&#8217;t like Git. I&#8217;d rather pay for a Subversion + Redmine service.</p>
<p>Regardless of the software, if we want top availability and reliability, we must pay for it. There&#8217;s no other way. Softlayer for example has 3 sites in USA linked by dedicated optical cables. If worthy, it&#8217;s just a matter of paying for 2 servers to replicate the service, or buy a backup service hosted in another continent.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matthew Weier O'Phinney</title>
		<link>http://www.brandonsavage.net/github-your-single-point-of-failure/#comment-7618</link>
		<dc:creator>Matthew Weier O'Phinney</dc:creator>
		<pubDate>Tue, 26 Feb 2013 17:51:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.brandonsavage.net/?p=2154#comment-7618</guid>
		<description><![CDATA[While I understand the premise, it misses the mark. Git is categorized as a *distributed* version control system (DVCS). Distributed means that any given repository can be marked as canonical at any time.

By convention, though, you *will* have a canonical repository somewhere. This is so developers know where to look for changes, and where to post changes against. While git makes this process quite a bit easier than subversion or other centralized version control systems, it still takes effort; you need to setup ACLs, potentially daemons, etc. GitHub takes the effort out of that.

That does not make GitHub a SPOF necessarily, however. As noted, because any fork/checkout of a git repository contains all changes up to the last time it was synced with the canonical repository, any given checkout can be promoted to canonical at any given time. Usually, there are any number of forks that are up-to-date -- if nothing else, the last person to push to GitHub will have a full changeset.

With regards to hooks and whatnot, again, GitHub simplifies the process -- but if GitHub dies, most, if not all, of those hooks can be recreated somehow. Were you using Travis-CI? you can re-create your setup as scripts for Jenkins. How about pushing to IRC? there are standard hooks you can drop into a bare repository for that. GitHub is convenience only; anything it offers can be recreated elsewhere -- even the issues and wiki system (though to do that, you&#039;ll likely need to have some systems in place ahead of time to mirror the content).

It is precisely the fact that git is distributed, and the fact that GitHub has implemented an API for everything it does, that have made GitHub successful: you can move from it at any time, but the service makes so many things convenient, and the downtime is so little for most people, that sticking with it makes as much sense as any other solution.

My suggestions:

* Don&#039;t use the green &quot;merge&quot; button; always push from a local repository. This ensures somebody always has the most recent changesets.
* Write scripts to backup your wiki and issues.
* Have a list of the hooks you use, in case you ever need to recreate them later.
* Keep the scripts and your hooks list in your repository.

In this way, your project stays fully distributed, so that you never have a SPOF; you can always re-launch from elsewhere.]]></description>
		<content:encoded><![CDATA[<p>While I understand the premise, it misses the mark. Git is categorized as a *distributed* version control system (DVCS). Distributed means that any given repository can be marked as canonical at any time.</p>
<p>By convention, though, you *will* have a canonical repository somewhere. This is so developers know where to look for changes, and where to post changes against. While git makes this process quite a bit easier than subversion or other centralized version control systems, it still takes effort; you need to setup ACLs, potentially daemons, etc. GitHub takes the effort out of that.</p>
<p>That does not make GitHub a SPOF necessarily, however. As noted, because any fork/checkout of a git repository contains all changes up to the last time it was synced with the canonical repository, any given checkout can be promoted to canonical at any given time. Usually, there are any number of forks that are up-to-date &#8212; if nothing else, the last person to push to GitHub will have a full changeset.</p>
<p>With regards to hooks and whatnot, again, GitHub simplifies the process &#8212; but if GitHub dies, most, if not all, of those hooks can be recreated somehow. Were you using Travis-CI? you can re-create your setup as scripts for Jenkins. How about pushing to IRC? there are standard hooks you can drop into a bare repository for that. GitHub is convenience only; anything it offers can be recreated elsewhere &#8212; even the issues and wiki system (though to do that, you&#8217;ll likely need to have some systems in place ahead of time to mirror the content).</p>
<p>It is precisely the fact that git is distributed, and the fact that GitHub has implemented an API for everything it does, that have made GitHub successful: you can move from it at any time, but the service makes so many things convenient, and the downtime is so little for most people, that sticking with it makes as much sense as any other solution.</p>
<p>My suggestions:</p>
<p>* Don&#8217;t use the green &#8220;merge&#8221; button; always push from a local repository. This ensures somebody always has the most recent changesets.<br />
* Write scripts to backup your wiki and issues.<br />
* Have a list of the hooks you use, in case you ever need to recreate them later.<br />
* Keep the scripts and your hooks list in your repository.</p>
<p>In this way, your project stays fully distributed, so that you never have a SPOF; you can always re-launch from elsewhere.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Petr</title>
		<link>http://www.brandonsavage.net/github-your-single-point-of-failure/#comment-7262</link>
		<dc:creator>Petr</dc:creator>
		<pubDate>Wed, 13 Feb 2013 11:32:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.brandonsavage.net/?p=2154#comment-7262</guid>
		<description><![CDATA[another alternative to GitHub and Gitlab is Gitorious gitorious.org/gitorious]]></description>
		<content:encoded><![CDATA[<p>another alternative to GitHub and Gitlab is Gitorious gitorious.org/gitorious</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan</title>
		<link>http://www.brandonsavage.net/github-your-single-point-of-failure/#comment-7224</link>
		<dc:creator>Jonathan</dc:creator>
		<pubDate>Mon, 11 Feb 2013 10:36:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.brandonsavage.net/?p=2154#comment-7224</guid>
		<description><![CDATA[there is nothing stopping a company setting up a small linux machine and running git on that and using that as their &#039;canonical&#039; git repo...

except that you have to get a spare pc and put linux on it and put it in a cupboard and make sure its patched.]]></description>
		<content:encoded><![CDATA[<p>there is nothing stopping a company setting up a small linux machine and running git on that and using that as their &#8216;canonical&#8217; git repo&#8230;</p>
<p>except that you have to get a spare pc and put linux on it and put it in a cupboard and make sure its patched.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: martin</title>
		<link>http://www.brandonsavage.net/github-your-single-point-of-failure/#comment-7223</link>
		<dc:creator>martin</dc:creator>
		<pubDate>Mon, 11 Feb 2013 09:27:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.brandonsavage.net/?p=2154#comment-7223</guid>
		<description><![CDATA[there is also bitbucket. it doesn&#039;t fail as often as github and is oriented more towards the private companies]]></description>
		<content:encoded><![CDATA[<p>there is also bitbucket. it doesn&#8217;t fail as often as github and is oriented more towards the private companies</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Speekenbrink</title>
		<link>http://www.brandonsavage.net/github-your-single-point-of-failure/#comment-7222</link>
		<dc:creator>Speekenbrink</dc:creator>
		<pubDate>Mon, 11 Feb 2013 09:17:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.brandonsavage.net/?p=2154#comment-7222</guid>
		<description><![CDATA[To reitterate EJ: we&#039;ve been doing just that since the major fallout of Github back in 2012: our build server mirrors after a succesfull build to Bitbucket. (aside from the local repo copy we keep internally) All our production servers have 3 remotes configured: Github (remote_0), Bitbucket (remote_1) and our interal SSH-able server (remote_999) If our deployment scripts can&#039;t connect to remote_X they&#039;ll connect to remote_X+1. If there is now remote_x+1 well fall back to our internal server. (which should never happen)

This way we can easily add new &#039;remotes&#039; without loosing too much sleep over it :) Works like a charm! (and indeed looses the SPOF)]]></description>
		<content:encoded><![CDATA[<p>To reitterate EJ: we&#8217;ve been doing just that since the major fallout of Github back in 2012: our build server mirrors after a succesfull build to Bitbucket. (aside from the local repo copy we keep internally) All our production servers have 3 remotes configured: Github (remote_0), Bitbucket (remote_1) and our interal SSH-able server (remote_999) If our deployment scripts can&#8217;t connect to remote_X they&#8217;ll connect to remote_X+1. If there is now remote_x+1 well fall back to our internal server. (which should never happen)</p>
<p>This way we can easily add new &#8216;remotes&#8217; without loosing too much sleep over it :) Works like a charm! (and indeed looses the SPOF)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mof</title>
		<link>http://www.brandonsavage.net/github-your-single-point-of-failure/#comment-7221</link>
		<dc:creator>mof</dc:creator>
		<pubDate>Mon, 11 Feb 2013 08:54:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.brandonsavage.net/?p=2154#comment-7221</guid>
		<description><![CDATA[Exactly. Git is git. Make copies of all github repos to build/deploy. Relying on 3rd parties with a high level of complexity (ie, github!) means there will be failures, and if you&#039;re not ok with that, mirroring and fail over must be present.

Git makes this very easy. In fact, for open source, I see very little gain in owning a github appliances. That&#039;s good for proprietary stuff _or_ when your data has to stay private to the company (ie not in the cloud).

The only parts of github you can&#039;t fall back from are bugs, comments, etc. which should be non-deploy-critical anyways.

Note that it&#039;s the same for any &quot;cloud&quot; service. They&#039;re good, but they&#039;ve similar limits.]]></description>
		<content:encoded><![CDATA[<p>Exactly. Git is git. Make copies of all github repos to build/deploy. Relying on 3rd parties with a high level of complexity (ie, github!) means there will be failures, and if you&#8217;re not ok with that, mirroring and fail over must be present.</p>
<p>Git makes this very easy. In fact, for open source, I see very little gain in owning a github appliances. That&#8217;s good for proprietary stuff _or_ when your data has to stay private to the company (ie not in the cloud).</p>
<p>The only parts of github you can&#8217;t fall back from are bugs, comments, etc. which should be non-deploy-critical anyways.</p>
<p>Note that it&#8217;s the same for any &#8220;cloud&#8221; service. They&#8217;re good, but they&#8217;ve similar limits.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roberts</title>
		<link>http://www.brandonsavage.net/github-your-single-point-of-failure/#comment-7220</link>
		<dc:creator>Roberts</dc:creator>
		<pubDate>Mon, 11 Feb 2013 07:23:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.brandonsavage.net/?p=2154#comment-7220</guid>
		<description><![CDATA[There is answer to Your prayers - RhodeCode. Private and public repos, GIT and Mercurial support, pull requests. Check it out.]]></description>
		<content:encoded><![CDATA[<p>There is answer to Your prayers &#8211; RhodeCode. Private and public repos, GIT and Mercurial support, pull requests. Check it out.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roderik van der Veer</title>
		<link>http://www.brandonsavage.net/github-your-single-point-of-failure/#comment-7219</link>
		<dc:creator>Roderik van der Veer</dc:creator>
		<pubDate>Mon, 11 Feb 2013 06:58:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.brandonsavage.net/?p=2154#comment-7219</guid>
		<description><![CDATA[I believe there is an even greater risk with GitHub. Your own project, due to the distributed nature of GIT, has a lot of alternatives if GitHub is down. You have the full repo on your computer, on the server, maybe in a GitLab or BitBucket, you can even put it in Dropbox.

Now, dependencies, those are hard. Composer, etc, a lot of times depend on github for their files (we use composer, the others like rubygems, npm i&#039;m not so sure about) and not only the deps of your projects, but also the deps of your deps. 

We are looking, but have not found a workable solution yet. The only option I see at this time is using a bash script and cron job to mirror all the repo&#039;s we depend on to our GitLab instance, and then using Satis (private packagist repo) to override the download locations.

But then, what makes us so sure that our own infrastructure is that much more solid than GitHub&#039;s (especially if you don&#039;t want a full time engineer making sure this keeps working).]]></description>
		<content:encoded><![CDATA[<p>I believe there is an even greater risk with GitHub. Your own project, due to the distributed nature of GIT, has a lot of alternatives if GitHub is down. You have the full repo on your computer, on the server, maybe in a GitLab or BitBucket, you can even put it in Dropbox.</p>
<p>Now, dependencies, those are hard. Composer, etc, a lot of times depend on github for their files (we use composer, the others like rubygems, npm i&#8217;m not so sure about) and not only the deps of your projects, but also the deps of your deps. </p>
<p>We are looking, but have not found a workable solution yet. The only option I see at this time is using a bash script and cron job to mirror all the repo&#8217;s we depend on to our GitLab instance, and then using Satis (private packagist repo) to override the download locations.</p>
<p>But then, what makes us so sure that our own infrastructure is that much more solid than GitHub&#8217;s (especially if you don&#8217;t want a full time engineer making sure this keeps working).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sherif</title>
		<link>http://www.brandonsavage.net/github-your-single-point-of-failure/#comment-7218</link>
		<dc:creator>Sherif</dc:creator>
		<pubDate>Mon, 11 Feb 2013 06:03:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.brandonsavage.net/?p=2154#comment-7218</guid>
		<description><![CDATA[You&#039;ve also got Atlassian Stash as an option.]]></description>
		<content:encoded><![CDATA[<p>You&#8217;ve also got Atlassian Stash as an option.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: EJ</title>
		<link>http://www.brandonsavage.net/github-your-single-point-of-failure/#comment-7217</link>
		<dc:creator>EJ</dc:creator>
		<pubDate>Mon, 11 Feb 2013 01:15:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.brandonsavage.net/?p=2154#comment-7217</guid>
		<description><![CDATA[What is stopping you from also syncing your repository to another provider (or software you host internally) that hosts Git repo&#039;s? If Git is down, push and deploy from that until it recovers.

Any tool will fail, so you have to have redundancy if you can&#039;t tolerate that.]]></description>
		<content:encoded><![CDATA[<p>What is stopping you from also syncing your repository to another provider (or software you host internally) that hosts Git repo&#8217;s? If Git is down, push and deploy from that until it recovers.</p>
<p>Any tool will fail, so you have to have redundancy if you can&#8217;t tolerate that.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic (Feed is rejected)
Page Caching using disk: enhanced (User agent is rejected)
Object Caching 582/584 objects using apc
Content Delivery Network via Amazon Web Services: S3: brandonsavage-net-files.s3.amazonaws.com

 Served from: www.brandonsavage.net @ 2013-05-19 11:20:10 by W3 Total Cache -->