Public dot-gov sites are playing a big role in delivering on the promises of open government. As many people know, government sites -- WhiteHouse.gov for example -- are becoming active participants in this conversation between citizens, developers and dot gov teams. We’re proud that the new FCC.gov has been able to contribute, and we wanted to give an overview of the community-driven features that power our site.
As previously announced, the site relies on the open-source content management system (CMS) Drupal to organize and present the content that users see -- content such as the encyclopedia, newsroom and even this blog post.
While the open-source platform offers many features on its own, we’re leveraging other Drupal add-ons, commonly known as “modules,” to add functionality. Modules can either be purpose-built for a particular site, or taken from a common repository of open-source, community-contributed modules. Think of it as the difference between creating your own recipe and using one from your favorite cookbook. On the new FCC.gov, we use a mix of both custom and contributed modules.
Our development team has re-purposed community-contributed modules to help keep production costs low and to implement tried-and-tested tools on FCC.gov. In addition to the core pieces of Drupal 6, FCC.gov also uses:
- CCK – Makes it easy to extend the information stored in Drupal.
- Views – Provides a set of tools for creating new pages and forms to display content.
- Organic Groups – Provides bureau and office administrators more granular control over content.
- Workflow – Implements the content creation and editing workflow for FCC staff.
- Devel – Provides a set of helpful tools for developers to track down bugs in the system.
- ImageAPI – A set of tools for saving and manipulating images.
- PathAuto – Gives the capability to define unique URLs for content.
- Path Redirect – Supports unique URLs generated using PathAuto.
For some of the front-end features, we rely on:
- Nodequeue – Provides the rolling list of headlines on the home page and Bureau and Office pages.
- Hansel – Provides the sophisticated breadcrumb scheme for the site.
For search we use Apache Solr and the associated Drupal plugins.
In order to provide the unique functionality and features of the website, we created a number of custom modules.
- API – Based on the Services module, we created a set of add-ons which gives drop in support for publishing all Drupal content types and metadata relationships in a machine-readable format (RESTful APIs).
- Layouts – Provides drop-in, single module support for per-page layouts with an easy administration interface integrated into the node edit form.
- Topics – Developed a set of modules for querying and displaying content based on topic relationships.
- Custom Content Types – We developed a couple of modules which create custom content types that use back-end systems as the data storage mechanism for content.
- 404 Handler – Adds support for checking an archive site when a 404 error is triggered, and redirecting users to the old content if present.
Continuing our practice of contributing code back to the community, we hope to open source many of these custom modules, starting first with the API module later in the summer. The code will be available for anyone to review, use, or modify. We're excited to see how developers across the world will improve on our work for use in their own applications.