Ten years ago today, Linus Torvalds checked "GIT - the stupid content tracker" into Git and began a revolution in software development. There are a lot of ways we remember ten years of Git at Compose, but Brandon Mathis's personal history with Git is a microcosm of the story of Git and the ecosystem and community that sprung up around it. It's the story of one designer's journey with the tool that changed more than development... it has changed lives.
How Git changed my career as a designer.
I began using Git in June 2008, during the first wave of GitHub fever. At the time I was a freelance web designer working with with freelance Rails developers. I was an early convert to in-browser design and I was starting to get comfortable with shipping text as my primary design output. However, like most people at that time we used Subversion as our version control system, and being somewhat command-line-averse I relied on a GUI tool for syncing my code to the central repository.
This central repository, along with Subversion’s painful merge process was a regular source of pain. When I tried to sync my code, I’d end up with conflicts which would break my project until I could resolve them by merging manually. After losing hours of work from several bungled merges, I started to zip up my projects before updating, and if things failed I’d restore the old version of the project, asking for help over iChat screen-sharing. For me, collaboration was a stressful process. I worked in fear of merge failures and avoided committing my code for days, just to avoid the inevitable punishment.
When our team adopted Git, I didn’t understand the tremendous value of decentralized versioning but I loved how much easier it was to recover from merge failures. It was also nice that my projects were no longer littered with those loathsome little
.svn directories. The main challenge I faced in adopting Git was that, without a GUI application for Git, I needed to get over my fear of the command line.
After a week of using Git, my disdain for committing code had dissolved. Without the tremendous delay in code sharing, I was learning what it meant to really collaborate on a project. And, as it turned out, Git wasn’t just a better version control system, it was also my gateway drug to the command line — starting a journey that would expand my skills and increase my confidence to learn more about how software is built.
But perhaps most importantly, Git, in the brilliant hands of GitHub, opened me up to the world of collaborating on, and eventually publishing open source software. Before GitHub, my primary experience with open source software publishing was SourceForge, which never appeared, to me, to be a community, and certainly not one I could imagine contributing to. Of course, as a Mac user, I was benefiting from countless open source projects all the time, but these seemed even less accessible. While it may be obvious now, it was revolutionary that the same tools I used for work could be used to contribute to open source.
By 2009 I had become comfortable enough with the command line that I moved my Wordpress blog to Jekyll, a command-line-driven static site generator, and I published the source for my site on GitHub. Some time later I received an email from Chris Eppstein, who had forked my blog, and asked me to help him design a custom header so that it wasn’t a total rip-off. I knew of Chris from his work with Sass and Compass (which I used and loved dearly) and I was excited to get a chance to help him in return. This was the beginning of a relationship which ignited my love of sharing code with others.
Eventually, I stripped the content from my blog and published it as a Jekyll starter kit named "Octopress". Though I didn’t know it at the time, this project would become wildly popular and, in 2012, was among the 25 most forked projects on GitHub. I’ve continued to work on Octopress over the years and I’m currently working on a new release for which I’ve written over 50 Ruby gems. For several of these, I’ve built a command-line interface, something that seemed totally out of reach to me not so long ago.
Before Git, open source software had appeared to me to be a private utopia for the nerd elite, and the command line, a necessary evil which allowed me to break my computer with the greatest of ease. Today, Git and the community around it have had a massive impact on my career and my growth as a designer. It’s funny to think that a version control system could have that kind of influence. And even that inspires me. For all of this, thank you Linus.
Git has become the ubiquitous tool for modern software development, enabling creativity and experimentation for all. Linus Torvalds wrote it to scratch an itch, and as he says "It's not like git got everything right, but it got all the really basic issues right in a way that no other SCM had ever done before". Git has done what no source code management system has ever done before and for that, we say thank you Linus.