Hacking GitHub: 14 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.
12 14 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.
Markdown to Word - Converts GitHub-flavored Markdown to a Word document.
Word Diff - Empowers you to be a Markdown person in a Microsoft Word world by automatically converting any Word document committed to a GitHub repository to Markdown.
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.
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 remote add, and
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).
12 14 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!
Edit (2019–02–12): Updated with some missing tools.
If you enjoyed this post, you might also enjoy:
- Five best practices in open source: external engagement
- Twelve tips for growing communities around your open source project
- Ten ways to make a product great
- Towards a More Agile Government
- Four characteristics of modern collaboration tools
- Why open source
- 15 rules for communicating at GitHub
- Securing the Status Quo
- How I re-over-engineered my home network for privacy and security
- 19 reasons why technologists don't want to work at your government agency
- Everything an open source maintainer might need to know about open source licensing
Ben Balter is Chief of Staff for Security at GitHub, the world’s largest software development platform. Previously, as a Staff Technical Program manager for Enterprise and Compliance, Ben managed GitHub’s on-premises and SaaS enterprise offerings, and as the Senior Product Manager overseeing the platform’s Trust and Safety efforts, Ben shipped more than 500 features in support of community management, privacy, compliance, content moderation, product security, platform health, and open source workflows to ensure the GitHub community and platform remained safe, secure, and welcoming for all software developers. Before joining GitHub’s Product team, Ben served as GitHub’s Government Evangelist, leading the efforts to encourage more than 2,000 government organizations across 75 countries to adopt open source philosophies for code, data, and policy development. More about the author →