Apache CloudStack is a broad and encompassing project covering many areas that require in-depth technical knowledge. As such, it is not possible for one person to know and/or test all components of CloudStack in depth. Miscommunications and misunderstandings between developers can lead to poor quality in CloudStack's code and cause community to deliver a unstable release. Knowledge lost from one release to the next can cause regressions in the current release. This page details the development process the CloudStack community must follow in order to ensure the community delivers high quality releases. This page is a must read for all developers and testers.
This process is developed with the following principles.
As a code contributor to Apache CloudStack, regardless of if you have committer or contributor status, your responsibilities are as follows:
Communicating what issues you're working on and how you're working on it is an important part of participating in the community. We do that on the mailing list. However, you should use JIRA to update issue status and add comments with conclusions drawn from mailing list discussions. This allows release managers, users, and testers to follow the issue better, to understand if the issue is being worked on, to get a better feel of whether an issue will be resolved in time for the release.
Automated tests ensures that your feature will not be regressed. Anyone who submits a code change that breaks an existing automated test is responsible for fixing that automated test or revert the code change. All automated tests should
Maintaining CloudStack's Continuous Integration is the job of every developer.
On Code Reviews
Citrix, a sponsor of Apache Software Foundation, donated a testing service in which all developers can ask automation be run on their branch. Hardware is
Importance of Automation
In order to ensure that releases do not regress features, automation