It’s quite difficult to explain exactly what GitHub is. In software development, keeping track of all the files used in a project is a surprisingly difficult task. Software tools that manage project files are usually called version control systems (VCS).
Using any VCS is not easy. And it’s not fun. At all.
GitHub is a Web-based version control system that has exploded in popularity over the past two years. GitHub is a Web site. Behind the scenes GitHub uses a very powerful VCS called Git.
Put another way, suppose you want to create some software system. For anything but the most basic system you’ll need a VCS. You can install and use tools such as CVS, Perforce, Subversion, or Git. At Microsoft we have several VCSes including Source Depot (a cousin to Perforce) and Team Foundation Server (TFS).
Or, instead of installing and managing your own VCS, which is by no means trivial, you can use a Web-based systems such as the older CodePlex and SourceForge, or the newer GitHub.
The extremely fast adoption of GitHub, at the expense of virtually all other VCSes is an interesting phenomenon. As a general rule of thumb, in order for a new technology to gain traction against deeply entrenched systems, the newcomer has to be an order of magnitude better (meaning way, way, way better) to offset the pain of learning a new system.
GitHub has significant technical and usability advantages over other VCS systems. But I think there’s also some psychology involved too. Software developers always want to be on the leading edge and so when GitHub started gaining traction as the newest best thing it became a self-fulfilling prophecy. Also, GitHub has a social-media component because developers can search through literally millions of projects and communicate with other developers.
So, I’ve used many VCS systems including Git and Source Depot but I’ve just been added to a project that uses GitHub. I’m looking forward to learning the system. Sort of. (It is a VCS after all).