You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Summary

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.

 

Process Principles

This process is developed with the following principles.

  • Continuous integration is key to a stable code base.
  • Automation is the only insurance the community has against regressions in releases.
  • Constrain the actual hardware testing to testing CloudStack's physical/virtual orchestration.
  • Use simulators to speed up testing of CloudStack's self-service business logic.
  • Properly performed code reviews are key to catching problems early.

Developer Responsibilities

As a code contributor to Apache CloudStack, regardless of if you have committer or contributor status, your responsibilities are as follows:

  • Understand CloudStack's architecture and where you should or should not make changes.
  • Understand CloudStack's simulator and how to run it and how to change it to test your code.
  • Understand CloudStack's Marvin framework and how to use it to write automated tests.
  • Understand CloudStack's code check-in process.
  • Understand CloudStack's review process and your role in it as the reviewer and the code submitter.

 

 

Infrastructures Provided

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

  • No labels