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 repo 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.
Ben Balter is a Senior Manager of Product Management at GitHub, the world’s largest software development network, where he oversees the platform’s Community and Safety efforts. Named one of the top 25 most influential people in government and technology, Fed50’s Disruptor of the Year, and winner of the Open Source People’s Choice Award, Ben previously served as GitHub’s Government Evangelist, leading the efforts to encourage government at all levels to adopt open source philosophies for code, data, and policy development. More about the author →