Since 18F’s mission is to transform government, we’re constantly thinking about how to scale up our impact. How can our custom-developed work get more mileage in benefitting the federal government and beyond? One way is through reuse of our open source code.
We encourage you to adapt 18F open source projects for your work and personal purposes, whether you’re a fellow federal employee or outside government. We’ve put together a list of some 18F repositories that might be especially useful to you — for your own projects, as part of a nonprofit or business, part of a government somewhere, or for something else that you’re working on.
18F’s open source policy emphasizes that our work belongs to you. Our policy says:
The code we create belongs to the public as a part of the public domain. The code we work on was paid for by the American people, but the end-product is not the only way they should be able to interact with their government. By coding in FOSS [Free and Open Source Software], we help populate a larger commons that cities, states, businesses, and individuals can participate in. This creates real economic value by lowering the burden of replicating similar work or by allowing the private sector to build off of and create new businesses around code developed at 18F.
We know it might be overwhelming to look at all the hundreds of repositories in the 18F GitHub organization to figure out what might be useful for you. They include a variety of projects in varying stages of development: client projects, tools we’ve built to support our work, guides we’ve written, prototypes, other people’s open source tools that we’re adapting, and more. We’re continually thinking of ways to share our work better, and here’s one experiment!
This list is part of our New Year’s resolution to be more open. Following up on those goals, we’ve also been working more on identifying parts of our work that are generic and decoupling them from the applications we developed them for.
If you’re interested in volunteering to contribute to our work, these projects are in varying stages of development and would generally benefit from external expertise — feel welcome to open issues and pull requests. We’re also featuring selected “help wanted” tasks in our weekly newsletter (link removed). If you have suggestions for other 18F projects to include in a future iteration of this list, you can add them to the discussion of our New Year’s resolution.
If you maintain your team’s websites
-
analytics.usa.gov: Publish live analytics for your website(s) on a public page — see analytics.usa.gov for an example. This can help both staff and visitors understand how people use your website. You can also separately use a component of it: Analytics Reporter, a reporting and publishing tool for Google Analytics data.
-
18F Pages: Help your team quickly publish static websites with 18F Pages, which is a Jekyll-based system similar to GitHub Pages that lets you use your own infrastructure. We use 18F Pages to publish guides and other simple websites on pages.18f.gov (with content hosted on GitHub).
If you help your team work together
-
Checklistomania: Build centrally-managed todo lists for complex processes such as team member onboarding/offboarding and management changes.
-
Open Opportunities: Especially for large organizations, this is a way for staff to share news about available internal tasks that might be interesting to somebody in a different part of the organization.
-
Tock: Track how much time team members spend on projects by asking them to fill out a weekly timesheet in Tock. It’s more convenient than a collection of spreadsheets, and lighter-weight than many of the available commercial time tracking tools.
If you build digital services for government
-
Compliance Masonry: Simplify the process of building certification documentation (especially for modern applications built on pre-existing systems) by generating documentation based on the OpenControl Schema, a machine-readable format for writing and generating compliance documentation.
-
Draft U.S. Web Design Standards: Use these pre-built UI components and visual styles to help you create beautiful, easy-to-use U.S. federal websites.
-
eRegulations: Make your agency’s regulations easier to find, read, and understand with this web application that you can adapt to your agency’s needs. (A collaboration between the Consumer Financial Protection Bureau and 18F.)
-
FISMA Ready (introduction): Make Federal Information Security Management Act compliance easier by sharing and reusing configurations and best practices for various pieces of software and tooling.
-
Samwise - Access the SAM.gov API via Ruby.
If you work with lots of data
-
AutoAPI: Set up a simple API engine that converts flat data files into a web service.
-
Document Processing Toolkit: Extract text from PDFs, and default to OCR when text extraction fails.
-
gapps-download: Download documents from Google Drive with a quick command so that you can easily republish them to the open web.
-
Open Data Maker: Turn CSV files into easily accessible open data.
-
rdbms-subsetter: Generate a random sample of rows from a relational database that preserves referential integrity. Good for creating test or development databases from production.
If you make websites that communicate lots of information
-
Accordion: Reuse this accessible JavaScript accordion component, such as for sidebar navigation.
-
Glossary: Add a collapsible glossary sidebar to your website to give readers a quick way to look up important specialized terms. We made this for the beta Federal Election Commission website and split it out for reuse in future projects, and now the U.S. Extractive Industries Transparency Initiative is using it too.
-
Linkify citations: Turn legal citations into links with this JavaScript plugin, which uses a public domain legal citation engine.
-
Private Eye: Using this JavaScript plugin, provide in-context indicators to readers that some of the links on a page won’t be accessible to them.
If you use Slack
-
Coffeemate: Help team members get to know each other by finding a teammate to have a coffee with.
-
Dolores Landingham Bot: Help onboard new team members with this Slack bot that sends scheduled direct messages with helpful tips.
-
hubot-slack-github-issues: File an issue in a GitHub repository by tagging a Slack chat message with a specific emoji reaction. For example, this is a quick way to remind yourself (or your team members) to integrate a useful piece of information from chat into the documentation for your project.
-
Slack Emoji Search: With this command-line utility, search for Slack messages that have been reacted to with a specific emoji.
If you use Jekyll
-
Jekyll Frontmatter Tests: Add tests to make sure you're always including required fields on posts or other documents.
-
Jekyll-get: Download data from external JSON sources to use in generating your site.
-
Jekyll Pages API: Generate a JSON file with data for all the pages in your site.
-
jekyll_pages_api_search: Add search to your site, no server required.
If you use Cloud Foundry
-
BOSH Release for New Relic server monitor: Set up New Relic to monitor your Cloud Foundry deployment (more about BOSH).
-
cg-cron: Run cron jobs in a Cloud Foundry app. Also: cf-go-cron, an experimental rewrite in Go. (These are in alpha stage.)
-
Cloud Foundry Deck: If you use Cloud Foundry, manage your applications with a web UI.
-
Cloud Foundry Notifications for Hubot: Get chat notifications (in Slack or elsewhere) about deployments of applications within Cloud Foundry.
-
Cloud Foundry RDS Service Broker: Manage RDS instances and a shared RDS Database. We’re working on a generic version to handle more AWS services at aws-broker, and we’ll update the community version when they’re complete.
See also: our list of cloud.gov platform tools.
If you want information about websites
-
domain-scan: Use this command-line tool to run several open source scanning tools on domains to measure aspects such as speed, accessibility, and HTTPS.
-
urlsize: Determine the file sizes of one or more URLs via this command-line tool.
For more guidance about reusing or contributing to our work, take a look at our open source policy. While not required, if you end up using one of our tools, we would love to hear from you. You can tweet at @18F, open an issue in the relevant repository to write a note about that project, or send us an email (18F@gsa.gov). Looking forward to hearing from you!