- Universal, immediate access to all project artifacts
- Project website, mailing list, and CVS available 24/7
- No secrets about project status, defects, upcoming plans, etc.
- Allows developers to work from any location
- Staff projects with motivated volunteers
- Each developer understands the requirements deeply
- Developers take pride in their work, generally are not rushed
- Cannot easily staff-up the project
- Sometimes hard to say "no" to a contributed feature
- Work in communities
- Watch how other open source projects develop software
- The same tool set is used by all projects in community
- Peer pressure to reuse other projects in same community
- Follow standards to validate project and enable reuse
- It is easier to agree on standard than to define a new one
- Standards give users a choice of clients
- Practice reuse to manage project scope
- Reuse helps OSS projects reach first release fast
- Replace working code with external reusable libraries
- Support diversity of usage and plurality of authorship
- Cross-platform and internationalized
- Add features that broaden the appeal of the product, attract
more users and contributors
- Encourage users to "scratch an itch"
- Release early, release often
- Get first release out fast to attract users and contributors
- No overhead for burning CDs or updating marketing materials
- Place peer reviews in the critical path
- Only committers may change the source code, other contributors
must give their code changes to committers for review
- Project members may review each change after it is made
For more on OSS practices, and discussion of OS software
engineering tools, see my
book chapter on it.