Good software engineering practices are key to the success of any large development project. Regardless of the type of project your organization runs, this site gives you access to some of the key "best practices" that have proven themselves in the open source community.
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.
Most successful open-source communities make sure that technical communications take place in public forums where all stakeholders can contribute. Such discussions, which on the Collabnet platform can take the form of discussions, support effrective communication and group decision-making.
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. The nature of open-source projects demands that these files be globally accessible, and that administrative overhead be minimized and responsibility spread out over the members of the development community.
Open-source software products have achieved a remarkable degree of quality. This is something that the proprietary software 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:
Furthermore, debugging is much more effective when split among many people who have diverse knowledge.
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 to catch logical conflicts early.
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 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 reducing the need for the experts to train others.