DOAP is a lightweight RDF Schema and XML vocabulary designed to describe software projects in a machine-readable format. Created by Edd Wilder-James to convey semantic information associated with open-source software projects, DOAP has become a widely adopted way for projects to publish standardized, aggregatable descriptions of themselves.
Background
DOAP was created by Edd Wilder-James (also known as Edd Dumbill) in 2004 as a community project to develop a structured vocabulary specifically for software project descriptions. The vocabulary grew out of the recognition that open-source software catalogs -- Freecode (formerly Freshmeat), SourceForge, language-specific package registries -- each maintained their own proprietary metadata formats, making cross-registry discovery and comparison difficult. DOAP provided a common, standards-based alternative using established Semantic Web technologies.
Adoption was rapid: by 2007, Freecode listed 43,000 projects published with DOAP descriptions. The Python Package Index (PyPI) also supported DOAP for a time, though this support has since been discontinued. As of 2025, inclusion of DOAP files remains common in the source code of GNOME projects, and the vocabulary continues to be used across the open-source ecosystem.
Purpose & Scope
DOAP provides properties to describe the essential metadata of a software project. Major properties include:
| Property | Description |
|---|---|
| homepage | URL of the project homepage |
| developer | Project developer |
| programming-language | Programming language(s) used |
| os | Operating system(s) supported |
| name | Project name |
| description | Detailed project description |
| license | License under which the project is distributed |
| bug-database | Bug tracking system URL |
| download-page | Software download page |
| repository | Source code repository location |
| maintainer | Project maintainer |
| release | A project release (version, date) |
| mailing-list | Mailing list for the project |
| category | A category for the project |
| implements-specification | Specification the project implements |
Additional properties cover audience, screenshots, translator, documenter, helper, tester, wiki, blog, vendor, old-homepage, download-mirror, file-release, service-endpoint, and others. The vocabulary deliberately focuses on high-level project metadata for discovery and cataloging rather than attempting to describe software architecture, APIs, or dependencies.
Serializations & Technical Formats
The DOAP schema is published at the namespace URI http://usefulinc.com/ns/doap# and is maintained in the GitHub repository. DOAP descriptions are typically serialized in RDF/XML, though Turtle is also supported. The vocabulary imports FOAF for describing people associated with projects.
Governance & Maintenance
DOAP is a community-maintained project hosted on GitHub under the Apache 2.0 license. There is no formal standards body behind it. The original creator Edd Wilder-James and contributor Kjetil Kjernsmo are the primary maintainers. Changes are proposed via pull requests and issues on the GitHub repository.
Notable Implementations
DOAP has been widely adopted in the open-source ecosystem:
- Apache Software Foundation -- uses DOAP files to describe all of its projects
- GNOME -- DOAP files are common in GNOME project source code as of 2025
- Freecode/Freshmeat -- 43,000 projects published with DOAP by 2007
- KDE and Freedesktop -- many projects maintain DOAP descriptions
- Language-specific tooling -- generators, validators, viewers, and converters exist in Python, Ruby, Java, Perl, and other languages
Related Standards
- FOAF is used within DOAP to describe the people associated with a project (maintainers, developers, etc.)
- Dublin Core provides general-purpose metadata properties that complement DOAP's software-specific vocabulary
- SPDX offers a more detailed vocabulary for software licensing and package information
- Schema.org SoftwareApplication provides a complementary approach for describing software on the web