## Key Open Source "Best Practices" supported on this site

Software engineering practices are key to any large development project. This site provides a home to conduct open source or collaborative software projects integrated with a set of hosted development tools to facilitate project teams adopting the "best practices" that have proven themselves in the open source community.

### Technical Communication

Software developers spend a large part of their time communicating with each other. Clear and effective technical communications are needed to keep the team in synch and to allow individuals with key knowledge to apply that knowledge where it is needed.i

One tenet of the open source community is that technical communications should take place in public forums. Mailing lists are the backbone of open source communications. Beyond that, open source projects need support for precisely communicating technical details and for group decision-making.

### Version Control, Document Management, and Distribution

Every software development project needs version control. Open source projects need strong and flexible support for many concurrent developers working on overlapping sets of files. Open source projects also need standard templates for design documents, technical documentation, and end user documentation.

A well-organized project should facilitate distributing these documents. But, the nature of open source projects demands that these files are globally accessible, and that administrative overhead be minimized and responsibility be spread out over the members of the development community.

### Quality Assurance

Open source software products have achieved a remarkable degree of quality. This is something that the closed source development world has found to be one of the most difficult and costly aspects of software development.

Open source software is high quality for three main reasons:

1. Developers are self-selected by their interest and knowledge of the application domain.
2. Requirements are tacitly understood by developers who are themselves users of the software.
3. Technical communications (including bug reports) are conducted in public. The public nature of open source helps developers take pride in their successes and think twice before releasing faulty code.

Furthermore, debugging is much more effective when split among many people who have diverse knowledge.

### Build and Test Management

Development activity on open source projects is constant and concurrent among many developers. Sometimes the changes made by one developer interfere with those made by another developer.

Often the version control practices used in the open source community resolve these conflicts, but sometimes they do not. Frequent automated builds and tests of the software being developed are powerful tools that help catch logical conflicts early.

### Project Management

Every project needs explicit goals, resources, and a schedule. The open source community has addressed these issues in a uniquely flexible way. Shared "to do" lists keep track of tasks that need to be done. Personal "to do" lists keep developers on track. Milestone lists set flexible deadlines for individual features based on feedback from users and developers.

### Knowledge Management

Knowledge is the valuable resource that sets experienced developers apart from novice ones. Sharing knowledge effectively has been key to the success of the open source community. Explicitly managing knowledge can help reduce the learning curve for novices which reduces the barriers to entry for potential contributors while automatically keeping the load on the experts down to a minimum in terms of training others.