Skip to main content
Back to Standards

Description of a Project

DOAP

DOAP (Description of a Project) is an RDF Schema and XML vocabulary designed to describe software projects, particularly free and open-source software. Created by Edd Wilder-James, it provides properties for project metadata including name, homepage, programming language, repository location, maintainer, release history, and licensing. DOAP enables machine-readable project descriptions that can be aggregated and cross-referenced across distributed software catalogs. By 2007, Freecode listed 43,000 projects published with DOAP, and as of 2025 DOAP files remain common in GNOME project source code.

Overview

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

Further Reading

Resources & Links