Hacking GitHub: 12 simple tools to help introduce open source to the uninitiated

GitHub’s a great platform for collaborating on many different things. It follows the dumb core, smart edge architecture that makes the internet what it is today. Git doesn’t care if you’re versioning source code, data, or proposed legislation. It simply tracks who made what change when. But sometimes, it’s harder to see how dumb, non-use-case-specific tools like GitHub might fit into one’s existing workflow, especially for the uninitiated.

Often, when explaining the potential of open source to government agencies — organizations used to purpose-built processes and bespoke software — this perceived barrier to entry becomes apparent:

“How can our lawyers use it? They’re used to drafting in Microsoft Word.” “I need to send this to my boss and he’s never going to use GitHub, can you send it as a PDF?” “We love Issues, but is there any way to simplify the interface for our non-technical stakeholders?”

Code speaks louder than words. It’s almost always faster to build out the requested feature with a hundred lines of glue code, rather than explaining that it’s trivial to implement via the API. And that’s exactly what I do most often.

Here are 12 simple apps that I’ve built to introduce open source to the uninitiated, minimize points of friction for atypical users to collaborate using GitHub, and to show the power of adding smart tools to the edge of an otherwise dumb platform:

Working with legacy formats

  • Word to Markdown - A Ruby gem to liberate content from the jail that is Word documents.

  • Markdown to PDF - On demand generation of enterprise-grade PDFs from GitHub-hosted markdown files.

User-friendly interfaces

  • Comment Card - A simple interface for non-technical users — both authenticated and pseudonymous — to provide feedback for your GitHub-hosted project.

  • Problem Child - Allows authenticated or anonymous users to fill out a standard web form to create GitHub issues.

  • Redliner - A tool for facilitating the redlining of documents by the GitHub uninitiated.

GitHub as a data store

  • GitHub Forms - A RESTful API for submitting standard HTML form data to a GitHub-hosted CSV.

  • WordPress-GitHub Sync - A WordPress plugin to sync content with a GitHub repository (or Jekyll site).

  • Change Agent - A Git-backed key-value store, for tracking changes to documents and other files over time.

Authentication

  • Jekyll Auth - A simple way to use GitHub OAuth to serve a protected Jekyll (GitHub Pages) site to your GitHub organization.

  • Add to Org - A simple OAuth App to automatically add users to an organization based on preset criteria.

Web interfaces for command-line tasks

  • GitHub Uploader - A simple app to enable drag-and-drop uploading of binary and other assets to GitHub repositories.

  • Copy to - A quick-and-dirty Heroku app to simulate running git clone, git remote add, and git push locally.

An astute reader might notice that almost all of these apps are less than a hundred lines of code and are almost exclusively some combination of the same three Ruby Gems: Sinatra (web server), Octokit (GitHub API client), and Sinatra-auth-GitHub (user authentication).

These 12 simple tools have helped improve my own workflow, and many are used inside GitHub to help improve the workflows of my fellow GitHubbers. I encourage you to check them out, and if you find any of these open source projects useful, I’d love your help making them even better. Happy hacking!

benbalter

Named one of the top 25 most influential people in government and technology and Fed 50’s Disruptor of the Year, described by the US Chief Technology Officer as one of “the baddest of the badass innovators,” and winner of the Open Source People’s Choice Award, Ben Balter is a Product Manager at GitHub, the world’s largest software development network. Previously, Ben served as GitHub’s Government Evangelist, leading the efforts to encourage government at all levels to adopt open source philosophies for code, for data, and for policy development. More about the author →

This content is open source.
Please help improve it.