How to Contribute to Code Development

The contribution and feedback from our User Community is fundamental to the OpenNebula project. There are several ways to contribute to OpenNebula.

Thanks for making OpenNebula a better project!

How Do I Report a Bug?

You can report a bug by opening a new issue in GitHub OpenNebula project. You have to complete the template section for bug reports. Be sure to specify all sections:

  • Version of OpenNebula
  • Component
  • Brief description
  • Expected behavior
  • How to reproduce

After an internal analysis, a bug issue will be set to one of the following statuses:

  • Pending: needs to be verified
  • Accepted: the bug has been verified and a priority assigned based on its severity (Low, Normal, High)
  • Planned: (Accepted with a specific milestone)
  • Closed: the issue is fixed, could not be reproduced (worksforme) or duplicates another one

How Do I Make a Feature Request?

You can make a feature request by opening a new issue in the GitHub OpenNebula project. Be sure to specify all sections in the template:

  • Brief description of the new functionality
  • How are you going to use this new feature? Why do you need it?
  • Describe any changes to current interfaces including Sunstone, CLI and/or API

The issue will be used to track the discussions about the new feature. You should also specify if you are planing to allocate resources to implement the new feature. Once the new issue is created, you can bring it up for discussion on the Community Forum.

We will contact you as soon as possible to gather more information and to give you initial feedback about your Request issue. This may take some time, and is usually not done until the next release cycle, at the earliest. When we update the roadmap of the project and plan the features for the next release, we prioritize:

  • The features demanded by the projects and organizations sponsoring the open-source project
  • The most demanded features by the community

After an internal analysis, your Request issue is categorized and will be Pending in the Backlog until:

  • It is interesting for the OpenNebula community and will be added as Accepted in the Backlog
  • It is decided that is not in the scope of the project and Closed

Backlog issues are long-medium term roadmap features to be implemented in OpenNebula. The priority of the issues will be graded (Low, Normal, High). A backlog issue remains Accepted until:

  • It is assigned to a Milestone and so moved to the Feature list
  • It is Closed because it is no longer interesting for the OpenNebula Community

Feature issues are short term Accepted features with an assigned milestone.

How Can I Contribute Bug and Feature Patches?

You can use the GitHub Pull Request model to submit a bug or feature patch.

  • Fork it
  • Create a branch (git checkout -b my_markup)
  • Commit your changes (git commit -am “My changes”)
  • Push to the branch (git push origin my_markup)
  • Create a Pull Request to this repository from your new branch

It is understood that your patch addresses an open issue to better track them. Update the issue with a full description of what you have done, describe your tests, and include a link to the Pull Request. When your patch is reviewed, it may be accepted “as-is” or you may be asked to make changes. Code commits (after review) will be implemented as named commits.

Important Notice about Licensing

Patches that fix a bug or provide a minor enhancement might be accepted without a Contributor License Agreement being completed. Major enhancements require a valid Contributor License Agreement. 

How Can I Contribute New Functional Components?

Before entering a new issue following the Feature Request process, first check if there is already an open issue addressing a similar feature. Describe your work plan and the resources you are planning to allocate in the issue. Then you should bring it up for discussion on the Community Forum. Other developers may have suggestions, and this ensures that the new feature is aligned with the roadmap and other features being developed. It is important to be sure that you’re not doing redundant work.

New features can be:

  • Enhancements in the OpenNebula core distribution. These should be contributed by following the process to contribute feature patches.
  • New interfaces and drivers that extend platform support. New tools, interfaces and drivers that broaden the platform technologies and services that OpenNebula can interface with are published on the Add-ons catalog. These may be incorporated into the main OpenNebula distribution after an incubation process. Visit our Add-on section for more information about how to contribute new Add-ons or contribute to an existing Add-on

What Are Our Design Principles?

The OpenNebula technology is the result of many years of research and development in efficient and scalable management of virtual machines on large-scale distributed infrastructures. OpenNebula was designed to address the requirements of business use cases from leading companies and across multiple industries, such as Hosting, Telecom, eGovernment, Utility Computing… The main principles of OpenNebula’s design are:

  • Openness of the architecture, interfaces, and code
  • Flexibility to fit into any data center
  • Interoperability and portability to prevent vendor lock-in
  • Stability for use in production enterprise-class environments
  • Scalability for large scale infrastructures
  • SysAdmin-focus with complete control over the cloud
  • Simplicity, easy to deploy, operate and use
  • Lightness for high efficiency

Licensing and Copyright

Small patches which fix a bug or provide a minor enhancement might be accepted without a Contributor License Agreement being completed. These contributions do not add functionality or new intellectual property in its generally accepted sense, and so are too insubstantial to be protected by copyright. These patches need not have any copyright or license attached to them.

Significant patches which provide a major enhancement, and Add-ons incorporated into the OpenNebula distribution require the completion of a Contributor License Agreement. These contributions add functionality or new intellectual property in its generally accepted sense, and so have to be protected by copyright. These contributions must have a copyright attached to them. Before we can merge these contributions, you will need to read and agree to our Individual Contributor License Agreement. If you are contributing on behalf of a company, an authorized representative of your company should sign a Corporate Contributor License Agreement. You can send us a PDF version of the completed and signed agreement, or contact us to send you simple electronic forms through Echosign. All accepted contributions will be released as part of OpenNebula under the Apache v2.0 license.