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

TL;DR: 14 simple apps to introduce open source to the uninitiated, lower the barrier to entry for atypical GitHub users to get started, and to show the power of adding smart tools to the edge of an otherwise dumb platform.
2 minute read

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 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.

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 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!

Originally published January 11, 2015 | View revision history

If you enjoyed this post, you might also enjoy:

benbalter

Ben Balter is the Director of Engineering Operations and Culture at GitHub, the world’s largest software development platform. Previously, as Chief of Staff for Security, he managed the office of the Chief Security Officer, improving overall business effectiveness of the Security organization through portfolio management, strategy, planning, culture, and values. 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 →

This page is open source. Please help improve it.

Edit