The three prime directives for open source development

While Open Source licensing creates a legal mechanism for developers to collaboratively develop software source code and distribute it, there are many software projects that fail to function as an open source project—in other words, they fail to attract users, and they fail to attract developers.

The three Prime Directives for Open Source Software Engineering provide a simple means to assess whether or not a software project has the potential to successfully function in the open source community. Satisfying the three prime directives does not guarantee that an open source community will grow up around the project, but failure to satisfy them will make it significantly more difficult for such a community to emerge.

1. The system successfully accomplishes a useful task.

The system does not have to include every bell and whistle to accomplish a useful task. Indeed, the art of incremental development is to determine the smallest useful increment of functionality and implement that first.

In most cases, careful thought, ample user interaction, and efficient design and implementation can lead to a first public release with some useful functionality within weeks after project inception.

A system developer cannot verify that the system achieves PD #1. Only an external user can.

2. An external user can successfully install and use the system.

The system must include sufficient user-level documentation to support download, installation, and use of the system without significant interaction with a system developer.

Typically, but not always, the system must also be distributed in an executable form so that external users do not have to compile the system themselves.

A system developer cannot verify that the system achieves PD #2. Only an external user can.

3. An external developer can successfully understand and enhance the system.

The system must include developer-level documentation providing insights into the design and development of the system that enable an external developer to understand and enhance it.

A system developer cannot verify that the system achieves PD #3. Only an external developer can.