Skip to content

How to Contribute to Development

Alberto P. Marti edited this page May 23, 2020 · 8 revisions

How Can I Contribute Bug and Feature Patches?

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

  • Fork it
  • Create a branch (git checkout -b my_markup)
  • Commit your changes (git commit -am 鈥淢y 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 in GitHub. 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 鈥渁s-is鈥 or you may be asked to make changes. Code commits (after review) will be implemented as named commits.


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鈥檙e 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 with which OpenNebula can interface 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鈥檚 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


Important Notice about Licensing

OpenNebula is an open source product, distributed and licensed under the terms of the Apache License version 2.0. For that reason, you need to sign your work before you can contribute it to OpenNebula.

Pull Requests with commits that are not properly signed by the author won't be accepted