Stack Underwhelm
I was listening to the Stack Overflow Podcast #80 today while sitting in the traffic and it was infuriating...I think it was the combination of the two.
The first crime came in when Jeff began complaining about github. The essence of his complaint was the way in which forks interfere with the timeline view. Then Joel came in and claimed that they weren't forks, but rather branches, and that branching is not possible without a distributed version control system. I am no fan of github- in fact I find that projects hosted there are very difficult to understand, and the person-centric nature of it makes it a very poor software distribution platform. However, hearing those two criticize it is really frustrating, because they make so many errors in their criticisms that it actually supports the thing they are trying to oppose.
First of all, Joel's claim that you can't do branching in Centralized Version Control is ludicrous. What he may have meant to say is that you can't create local branches, you have to create them on server. Even this is only sorta true; you can run a command like svn switch and point your branch wherever you want. So, DVCS does not have a monopoly on branching.
Jeff's whining was more incoherent, but probably not as factually wrong. His main complaint was that for a project that he is working on, the often irrelevant forks created by other users show up on the network view of the code line that he is interested in. He is basically mistaking a weird UI feature for the entire nature of the system. There is an upside to the easy forking of github- poorly maintained projects are easily taken over. However, the huge downside is that it is very difficult to choose the "right fork" if you are looking to download a particular thing from there. You really lose the concept of a project homepage if you choose to exclusively use github for your project. All you get is a README doc that is probably copied by all of the other lame independent forkers that would be collaborating with you to put out quality releases if you were able to work towards the same codeline. Github enables this sort of anti-social behavior, making it very easy to not cooperate, and I have seen the quality of many projects go down as they have slid over to that hosting approach.
In short, I would recommend staying away from git and github for now, unless you really need to commit code to your local machine when you are in a shack in the woods with no internet connection. If you like the local history features and don't want to work in a branch, using IntelliJ or RubyMine is probably a good option. Git has poor Windows support and offers very little of value over subversion, which remains my preferred tool. If you are going to go DVCS and know anyone who uses Windows, I'd try mercurial. If you are going to host a serious open source project, it is probably better to have a page outside of github as your main page, instead of relying on their meager ability to identify the tested project code lines.
