Saturday, July 26, 2014

An introduction to Git - the history and getting started

At the July Meetup the group met to discuss the merits and use of Distributed Version Control Systems, and, more specifically Git and GitHub.

For software developers who haven't used source-code management (SCM) before it's useful to have some context on how it came about.



The story starts a few decades ago in the 1970s.  In 1973 Ken Thompson and Dennis Ritchie put forward a whitepaper on the subject of the UNIX operating system. The concept was of great interest to The University of California, Berkley.  In 1974 the mathematics and computer science department pooled their resources and purchased a PDP11 to run UNIX.  Their distribution of UNIX arrived on tape.

Ken wasn't involved in the installation of UNIX on the Berkley PDP 11 and the team were having problems with the system, it kept crashing unexpectedly.  Ken was based in Purdue, New Jersey, to facilitate de-bugging the team used a pair of modems to allow Ken to dial-in remotely.  At the time Berkeley only had a 300-baud acoustic-coupled modem without auto-answer capability, so with some transcontinental team co-ordination the team managed to get Ken online to assist with de-bugging.

In 1975 Bill Joy joined the Berkeley team as a graduate student and became involved in the development of their UNIX system.  In 1977 Bill put together the first bundle of software based on the UNIX operating system core, it was called the Berkley Software Distribution.  As the distribution secretary Bill sent out 30 copies of BSD on tape in the first year.

Fast-forward to 1991 when Linux Torvalds was developing Linux.  Key to Linux development was the idea of community based development, a foundation of the open-source movement.  The methods of mailing tapes and coordinating the modem calls of the 1970s would not scale the way it needed to to support Linux development.

At first Linux development was managed by distributing archived files and patches, but it was cumbersome and inaccurate.  Linus was fond of the BitKeeper system developed by Larry McVoy's company.  BitKeeper was developed on similar design principles to an existing product called Sun Workshop Teamware, interestingly developed by Sun Microsystems where Bill Joy went to work from Berkley.  Larry agreed to grant a free-of-charge license to use BitKeeper to support Linux development; however, the Linux community were at odds over Linus' decision.  Members weren't happy that Linux, an open-source project, were now relying on a closed system.

The community's fears were not without merit, in 2005 Larry withdrew the free-of-charge license.  At this point Linus made the decision to develop his own DVCS system and Git was born.  Git was a command line tool that developers could use for source-code management, it was distributed to support the community and most importantly to Linus, it was fast.

A few years later in 2007 Tom Preston-Werner, Chris Wanstrath and PJ Hyet started working on what was to become GitHub an online DVCS based on the principles of Git, the system launched in 2008.  Since 2008 GitHub has become increasingly popular and in a survey carried out by Eclipse in 2014 Git is now used by 33.3% of developers, it is now the dominant DVCS in the market place.

No comments:

Post a Comment