Project MyUSA

Presidential Innovation Fellows

Open Source *All* The Things

Open Source *ALL* the things.

When we first set out to reimagine the relationship between government and the people, our goal was not simply to build the next generation of citizen-facing tools and services, but to also fundamentally change how these tools are built. We started by looking closely at at our own process and quickly committed to architechting an open platform from day one.

Today, MyGov would not be possible if it were not for countless open source projects, from our own internal tools to the very servers that power MyGov itself. For those unfamiliar with the term, open source software is simply software for which the underlying, human-readable instructions are made publicly available for others to use, re-use, and submit improvements. Think about it as analagous to the “give a penny take a penny” tray at your local convenience store, or asking a neighbor if you can borrow a screwdriver.

Why open source rocks

Open source offers government many advantages. For one, it provides opportunties for cross-agency collaboration that avoids duplication of efforts — after all, many of the challenges faced are common across government. Shared solutions like MyGov allows agencies to concentrate on tackling mission, as opposed to trying to solve the same problem time and time again. Likewise, without having to reinvent the wheel each time, agencies can bring services to market faster, cheaper, and often with better quality. Last, open source forces developers not to bake in bespoke solutions or couple interfaces too closely to underlying logic. This allows for better modularity and fungability over the lifetime of the code, meaning individuals systems can more easily communicate with one another and the initial investment can last longer and be more easily upgraded over time.

It’s about the community, people

At its core however, open source is about community, not technology. Today we’d like to take a moment to give back — to put a penny back in the tray — and more importantly, to add to the ongoing dialog around improving the digital delivery of government services. Both with our colleagues at other government agencies, and with the public more broadly. As with all open source software, feel free to adapt the code for your own projects, but with this code especially, we encourage you to take a moment to improve it by submitting a pull request.

MyGov

Behind the scenes

Jump right in

MyGov began its journey by setting out to improve the way citizens interact with government, but to continue, we need your help. The code is just the start. It is our hope that these MyGov projects can serve as one example of a greater joint effort — citizens and government collaborating to improve our shared experience. After all, unlike many other sites on the web, it’s your code. You paid for it. If you’re a coder or a designer or even just an involed citizen, we encourage you to take a critical look at MyGov, and get involved on our developer page.

Farewell

This is our final post as Team MyGov. It’s been a great 6 months, and we appreciate all your help, support, and feedback along the way as we worked on our project. There’s more to come from MyGov in the future, but for now: so long, and thanks for all the fish.

Regards, Phil Ashlock, Ben Balter, Danny Chapman, Kara DeFrias & Greg Gershman Presidential Innovation Fellows v1

Posted in Announcements | Tagged Open Source, Developers, Community, Code

Introducing the MyGov Discovery API: Come Build Something Cool

Last week we announced the MyGov Discovery Bar. This week we’d like to dive a bit deeper by taking a look at the API that powers it, with the hope that developers within the open-government community can help make it better.

Thy Discovery API exposes all the information that’s normally available via the MyGov Discovery Bar (code) in an open, machine-readable format. In fact, the Discovery Bar itself consumes the API — we eat our own dog food. Why would we do this? Two reasons: first, exposing an API to collect and retrieve information at the outset and then going back to build the layer to display it forces us to separate data from presentation and allows the application to be more flexible.

The Discovery Bar may be how the information is used today, but that doesn’t mean it’s always going to be that way and we encourage members of the community to build apps using it. Second, by using the API to power the Discovery Bar, we can see the data from the perspective of an outside developer and can hopefully, in the end, produce a better, more useful API.

Using the API

So what can the Discovery API do? Currently, the federal .gov footprint is organized around how government is structured. If a citizen wants to complete a given task, they have to know what agency to go to, and often times, what office within that agency. The Discovery API layers a folksonomy on top of the entire .gov landscape, allowing developers to query pages by keyword, or more importantly, to find content related to a given page.

Think about it this way: if you decide to change your name (perhaps you’re getting married), you’re probably going to want a new passport. But if we knew that task was also closely related to getting a new social security card or driver’s license, at least we could point you in the right direction. But that’s not the only way the Discovery API can be used. What if you want a listing of the top government content by tag, or a timely subject? Just query the Discovery API by tag.

Under the Hood

The Discovery API breaks the .gov space into pages, each represented by a uniqiue URL. Pages can have tags which in turn provide related pages. Each page is organized by domain (the part before the .gov in the URL), and domains can be queried by reverse domain name (e.g., gov.whitehouse.). This way, if you want all the subdomains of a given agency, you can get that list in a machine readable format.

The Discovery API launched with some core seed data, namely each federal executive .gov, and those pages available within one click of the home page, but over time, as people use the API, it can grow to become a comprehensive index of the most popular government pages.

Interested in giving it a try? Kick the tires in our API Sandbox or take a look at the code powering it.

Posted in Announcements | Tagged Open Source, Developers, Community, Code, API

Introducing the MyGov Discovery Bar

This is the first in a series of posts introducing each of the products we’ve been working on as part of Project MyGov.

MyGov Discovery Bar shown seamlessly integrating on USA.gov

MyGov Discovery Bar shown seamlessly integrating on USA.gov

The government web is two things: big, and distributed. (Did we mention big?) The General Services Administration (GSA) runs USA.gov, a central site that provides a top-level view into the government web. That works well if you’re on USA.gov, but what if you’re on some other part of the government web? Shouldn’t you be able to see other resources, programs, benefits, services, forms, etc. from across the federal government if they are relevant to what you’re trying to accomplish?

Here at Project MyGov, we think the answer to that question is: “Yes.”

So we built the MyGov Discovery Bar, which acts as a persistent tool to help you navigate the government web. When looking at a government web page, the Discovery Bar uses its knowledge of what the page is about to recommend other related pages. Just like when Amazon says, “People who bought this item, also bought this one,” we recommend other pages across the government web footprint (regardless of what site or agency they live on) to you, when you need it most.

To do this, we’ve built the Discovery Bar to unobtrusively slide into view as you reach the end of a page. (We figure if you’re that far down the page, you’re ready for more information.) We’ve tried to make it easy for you to control the experience, so if you feel like the bar is in the way, you can minimize or close it completely.

We also want to help improve your overall experience when visiting government websites. If you expand the bar, a few options present themselves. You can view tags associated with the page you’re looking at. You can even add or edit tags to help make our service better. You can provide feedback to the government on the page you’re viewing, and help us figure out which are the most helpful of our pages. And if you’re just not finding what you’re looking for, you can do a search across all the government web sites.

All right Mr. DeMille, I'm ready for my close-up.

All right Mr. DeMille, I'm ready for my close-up.

We’re working with agencies to get the Discovery Bar set up as a standard across the federal web; state and local governments are welcome to participate as well. In the meantime, we’re doing testing as part of our private beta, and will update here when the bar is more generally available. You can sign up for the beta.

We’re pretty excited about the Discovery Bar, and think it’s a great step toward making the federal web even more user-centric.

Keep an eye for for Part II of the series: Introducing your MyGov Account.

Posted in Announcements | Tagged Bar, Discovery, Screenshots

Building MyGov as an Open Platform: Part 1

In an earlier post we provided an overview of the the different MyGov components that form a complete suite of personalized services. Now we’d like to share some perspective on the technical architecture we’ve been developing and show you how we see MyGov acting as an open platform that existing government websites (as well as outside applications) can hook into. Providing an open platform allows agencies to incorporate MyGov features in their own ways and allows us to leverage the ingenuity of civic hackers and the broader innovation of the American people.

Before diving into the technical architecture or looking at any one single component, it’s worth reviewing a few core principles that govern our approach. This will be part one of a two part post and part two will detail technical architecture piece by piece. At a fundamental level our approach has been open, open, open, open. We’re creating an open platform with a foundation built on open architecture, open source, open data, and open standards.

Open Architecture

A small-pieces-loosely-joined service-oriented architecture allows us to build many modular components separately. These components can interconnect when they need to but can also be autonomous and fully functional on their own. Not only does this give us more flexibility, it also encourages government to build internal tools the same way we would expect outside parties who want to integrate with the platform. This kind of dog-fooding and open architecture way of doing things has driven the success of many ventures from Amazon, to Twitter, to GNU/Linux, to the web itself. In fact, there may even be some parallels between the recent Digital Strategy guidelines for exposing APIs and similar enterprise-wide policies that have transformed the companies that thrive as open SOA platforms.

Open Source

There’s no reason to build everything from scratch, so we’ve been building on existing open source stacks and components wherever possible including Ruby on Rails and a common LAMP architecture on the backend as well as Foundation, JQuery, and Backbone on the frontend. Likewise, we’ve been sharing our code and we invite pull requests, bug reports, and feature requests. The value and potential of civic software is multiplied when it’s truly treated as a public good. As the original description of the project states, MyGov will be “developed not just for the people, but also by the people.” We also recognize the potential for other governments both local and international to reuse components of the MyGov platform.

Open Data

One of the most critical tenets of MyGov has been to give people more complete access and control of their own private data and this introduces an important new dimension to the traditional discourse on open data.

Arguably, we’ve been focusing on transactions and personal information more than the kinds of content where typical open data practices are applicable, but by giving people more control of their own data we’re enabling open data on an individual basis where privacy matters. In some ways, the data crunching behind MyGov is what many are starting to call “small data” which is meant to convey personalization and contextual relevance in contrast to more abstract analytics often associated with the trendy world of “big data.” There are secure authenticated APIs that allow you to share your data within the platform, but we’ve also been creating and leveraging traditional open data resources to surface contextual and personally relevant content. For example, with the context provided by a city or zipcode people can start to be more connected to their local services and representatives.

Public facing open data efforts have also been expanding more broadly across the government. In fact, MyGov’s Chief Open Data Hacker, Ben Balter, has been a critical contributor to Project Open Data and some general purpose open data tools like DataBeam have already been developed to help support some of the MyGov infrastructure.

Open Standards

No open platform can truly sustain or scale an ecosystem without a healthy relationship with open standards and MyGov is no different. Open standards help facilitate modular interchangeable parts and they encourage the development of compatible components by third parties including federal agencies, local government, and independent developers. From the beginning we looked at existing initiatives such as the federal government’s standardization effort around identity or Open311 for a custom forms API and have worked to integrate or otherwise align them with the platform. At its core MyGov will standardize the process and refine the control people have around transacting with government. In some ways this will be more of a standardization of process and user experience in terms of how people authorize government agencies and third party applications to access their information, but it also leverages technology standards like OAuth. You may be familiar with this process if you’ve ever connected a separate application to your Twitter or Facebook account. Over time, a set of standardized APIs for government interactions will lay the foundation for a whole new ecosystem of applications that can innovate government just like the iPhone App Store or the marketplace of Android apps has radically transformed the way we use our phones.

Open for Feedback

We’ve been trying to follow these principles (and many others) as best as we can while navigating the challenges of innovating within government, but we know we can always do better. Please let us know if you have any questions or feedback on our approach and please stay tuned for part two which will examine the suite of MyGov components piece by piece in more technical detail.

Posted in | Tagged