Is there a reason why Github runs on it's own fork of Rails (I believe it's 2.3 or something), when they could just upgrade to Rails 4, from the official Master (which is faster and probably more stable AND most importantly with most security bugs fixed)??
Pardon me if I sound stupid, I'm just trying to understand why.
From my perspective, there have been a few different reasons why we haven't just upgraded:
1. Time spent upgrading Rails is time not spent building awesome things for our customers to use. We're extremely customer focused.
2. Performance is also a huge concern of ours. Over the past few years we've driven response times down dramatically. Upgrading Rails not only presents a slower framework (Rails 3/4 is not faster than 2.3), but a different architecture — changing where our performance chokes are. We'd have to do a ton of work on this front just to keep performance steady. Again, time spent here is time not spent making our existing infrastructure faster.
3. We've spent the past three years working on upgrading the stack. It's not so black and white — we have many of the benefits of newer rails without needing to upgrade everything. There has been a lot of effort here.
In my own personal experience, upgrading frameworks is generally the fastest way to create bugs and work on the opposite of customer impact. I don't think you should feel like you have to be on the bleeding edge.
Not completely sure all the blockers but I think it may have to do with 2.3 being in maintenance mode (may even be unsupported at this point).
Either way, being able to contribute back is definitely one of the things people are looking forward to about being on a current version. I've heard a few mention they'd love to be able to send any Rails performance bits upstream much like we see with the Ruby patches lately.
"Just upgrade to Rails 4." Five words, months and months of hair loss.
There is a lot less radical change and a lot more focus on compatibility in Rails nowadays, and yet upgrading a substantial app to a new version of Rails is still a shaky proposition. For a lot of companies, the gigantic leap from 2.3 to 3 was more trouble than just paying somebody to maintain 2.3.
Actually, they use https://github.com/libgit2/libgit2 to create and manage Git repos.
"libgit2 is a portable, pure C implementation of the Git core methods"
No, GitHub primarily uses regular git on the backend. It powers all fetches and pushes, diffs, and most of the history traversals. Some functionality is provided by libgit2, and it's ever-increasing because libgit2/Rugged is often more natural to call from ruby code (though a lot of it is replacing old Grit code, not git itself).
libgit2 powers much of GitHub's desktop apps, with regular git mostly filling in any functionality still missing from libgit2.
Since libgit2 is not yet feature complete when compared to git core, I'm quite certain that they use both. (For example, libgit2 did not have merge until relatively recently, so they could not be using it to power pull requests.)
Last I heard (couple months ago) it was used for a couple or three pieces of functionality only.
Based on my experience with it (master incredibly stale, not recommended, and the recommended "development" brittle and buggy), that's not surprising at all...
I'm sorry if you've found the development branch to be buggy - we strive for a high-level of stability there, so we'd be very pleased if you would open issues there.
I was working closely (via IRC, email) with somebody (I forget whom) who discouraged work on master and suggested "development" -- is that still the case?
The more I delved into git, the more I realized what a large delicate job it seems to be (which is a matter for a different discussion). Regardless -- apologies if I came across to harsh -- I haven't looked at it in months... will re-pull, give it another look.
No, you did not come across as harsh, your criticism is very accurate. The master branch tracks the latest release and is stable, but unfortunately we do not release with great frequency. We work in the development branch and - while we try to keep it stable - there's not a strong guarantee that it is. Especially when there's ongoing work in an area, it may become somewhat destabilized. This is regrettable but, I hope, understandable.
We should certainly be better about more frequent releases. As it is, we tend to overreach. Thanks for the feedback.
Pardon me if I sound stupid, I'm just trying to understand why.