There are times when I’m spectacularly awed by Open Source Software. Today was one of those days. We published a blog post about how the team I work on uses the terminal, GitHub, and Jekyll to publish 18f.gsa.gov. This post could just as easily be titled “the guide I wish I had 10 years ago when I started tinkering around with web development.” On my way home, I did a little from-the-bus troubleshooting for a reader who was having trouble with our instructions and found myself appreciating how many people went in to shaping this post to where it is now.
The last in the chain (so far) is a Twitter user and digital humanities professor I don’t know and may never meet in person named Heather Froehlich (@heatherfro). Heather tried following our instructions nearly immediately after my co-author, Melody Kramer, tweeted about it. Before @heatherfro there was Moncef Belyamani, who did a tremendous amount of extra legwork completely unsolicited to help us make the post clearer. He even wrote a script called
laptop that future 18F team members will be able to use to make their lives easier on day one. In addition to Moncef were the other individuals who helped us find mistakes and add to the post. And none of this includes all the people reading it right now and those who might read it in the future.
We didn’t just write a post about open source software and how to use it, we wrote it in the open and you can actually see the back and forth Mel and I had to update the post and even see where Moncef jumped in to help us. If you go back even further you can see an earlier revision where we got some help from Eric Mill. Earlier still we had help from Kate Garklavs in testing our tutorial.
The post instructs people to use tools we built internally like the
go script written by Mike Bland and myself, and the overall architecture of our site shaped by many people who have already been mentioned plus our colleagues Michelle Hertzfeld, Elaine Kamlley, Hillary Hartley and the dozens of individuals who have contributed to the site in one way or another. When readers run
git clone in the tutorial, they are downloading the work of nearly 60 other people.
Zooming out even further, when readers run those commands they are building off the work of thousands of other people who built the tools our site uses to generate: Jekyll is the bedrock with 430 contributors, but there’s also the handful of gems that go into making Jekyll work and everybody who had a hand in those projects. On top of all that, Ruby, the language every gem is written in, is an open source project with hundreds of individuals working on a given release.
This is all to show how easily we can trace @heatherfro’s comments on twitter through a kind of supply chain of code, prose, and ideas that builds 18F’s website simply because it is open source. We don’t write all of our articles this way, but I’m hoping we do it more.
One thing about GitHub I find profoundly interesting is their drive toward expanding the idea of working in the open to realms that are not programming. Last summer they introduced PSD Viewing and Diffing and later did the same for SVGs. They improved the interface for comparing text documents like Markdown so that it’s easier to see what has changed and have one of the best wiki platforms in existence (sorry, MediaWiki, it’s true). They’re building a robust collaboration platform that facilitates the kind of exchange of ideas and knowledge creative people crave.
I’m attempting to relaunch the journalism project Danielle and I helped create in Seoul as a static site (using Jekyll right now, but Middleman is looking interesting). GitHub was just getting stated and I remember being really confused about what the point of version control was. Tearing apart that old WordPress theme was an exercise in seeing how far I’ve come as a web developer, and reflecting on the decisions I made and how many of them I would make differently if I were doing it today.
One of the first things I remembered was sitting in a cafe in Hyehwa with the rest of the IU team, crowded around our MacBooks to unveil at least two different version of the site I had worked on by deactivating and reactivating different themes from the admin interface. It was extremely frustating, and laughable now that I know how to work with branches, tags, and commit history. I also remember emailing around PSD files when we were attempting to land on a logo, and using Google Wave (yes, we actually used Wave and kind of loved it) to discuss our drafts. I’m pretty sure we would have done if not all, a lot more of that in GitHub were it the platform it’s turned into today.
This is not an advertisement, though. GitHub has some big flaws and barriers to entry for people who don’t have a lot of patience for the technical are still high. It is, at its core, a profit-driven commercial engine and the underlying codebase for GitHub is not open source and there’s no guarantee it will be around forever.
One thing I love about open source projects is their potential for immortality. WordPress has a particularly delightful open source story. Matt Mullenweg loves telling it and I’ve summarized it before, but the gist of it is that love it or not, WordPress would never have existed if not for the open source license of the project that preceeded it, b2/cafelog. That immortality and spirit of picking up a project where it was left is still fairly unique to software. Copyrights are, by law, “fixed in a medium,” they are often thought of as complete works and create strange legal issues for derivative works or remixes. If we can one day have a society where works of art are as open and communal as works of code, that would be a truly wonderful place.