~~NOTOC~~

OpenNebula Add-ons

OpenNebula Add-ons are **new tools, interfaces and drivers** that enlarge the capabilities and platform technologies and services that OpenNebula can interface with, from support for new hypervisors, monitoring tools, authentication services, networking devices or storage subsystems to access to cloud commercial offerings for cloud bursting. {{ :add-ons.png?500 }} ====== Add-ons Catalog ====== We are now working on new Add-ons, please stay tuned!. ^ Name ^ Type ^ Repository ^ Description ^ | iSCSI | Storage Driver | [[https://github.com/OpenNebula/Addon-iSCSI|github]] | Datastore driver for iSCSI | | AppMarket | Tool | [[https://github.com/OpenNebula/Addon-AppMarket|github]] | Build a marketplace to share appliances between OpenNebula instances | | Ganglia | Monitoring Driver | [[https://github.com/OpenNebula/addon-ganglia|github]] | Information Manager drivers for Ganglia | //The OpenNebula project does not endorse or recommend any products listed, and cannot vouch for the quality or reliability of any of them.// ====== Add-ons Development Coordination ====== The OpenNebula Add-on Catalog consists of the add-ons developed within the [[https://github.com/OpenNebula|OpenNebula project github]] and coordinated through the OpenNebula [[:community:mailinglists|developers mailing lists]]. This collaborative development instruments provide contributors with an environment to introduce and give visibility to new add-ons, and to reach new developers and early adopters that can help shape and test the new components. * [[#How to Create a New OpenNebula Add-on|How to Create a New OpenNebula Add-on]] * [[#How to Run an OpenNebula Add-on|How to Run an OpenNebula Add-on]] * [[#How to Contribute to an Existing Add-on|How to Contribute to an Existing Add-on]] * [[#Are the Add-ons Part of the OpenNebula Distribution?|Are the Add-ons Part of the OpenNebula Distribution?]] ====== How to Create a New OpenNebula Add-on ====== **1. Check the Existing List of Add-ons** Before starting the development of a new Add-on, consult the list of Add-ons above or at the [[https://github.com/OpenNebula|OpenNebula github]]. You could instead focus your time in co-leading or contributing to an existing Add-on. **2. Requirements for New Add-ons** The **basic requirements** are: * A **codebase** tested in the OpenNebula version you claim to support * **Documentation** to install and use the add-on with OpenNebula * An **active development and support** * A **potential user community** * **Apache v2.0** license Moreover we applaud the following **design and development principles** in the components: * **Collaborative open-source** software development * High **quality** software * Implementation of **standards** * **Security** as a mandatory feature **3. Share your Plans with the Community** If you want to start a new Add-on, you should bring it up for discussion on the [[:community:mailinglists|developers mailing list]]. Other developers may have suggestions, and this ensures that the new Add-on is aligned with the roadmap and other features being developed. It is important you're not doing redundant work. You can also ask in the [[community:mailinglists|developers mailing list]] if there are other people also planning to start the same Add-on. **4. Identify a Add-on Leader** Add-ons leaders are responsible for coordinating the development of the add-ons and committing contributions from other developers. **5. Group Infrastructure Set-up** A new **repository** Addon-//Name// will be created at the [[https://github.com/OpenNebula|OpenNebula project github]]. Leaders will be granted with commit access to the new repository. This new repository will have an {{:license.txt|Apache LICENSE}} file and a {{:addon_readme_template.txt|README}} file with the following sections: * Description: What is the add-on about * Development: Identify how to contribute and how support and issues are supported * Authors: Identify leaders and rest of contributors with emails * Compatibility: Tested OpenNebula versions * Features: Summary of main functionalities * Limitations: Known limitations if any * Requirements: Hardware/software requirements for usage * Installation: How to install the Add-on * Configuration: How to confite and tune the Add-on * Usage: How to use the Add-on * References: External references to project site, etc * License: Apache v2.0 * Other: You are free to add more sections You can have a look to one of the existing [[https://github.com/OpenNebula/addon-iscsi/blob/master/README.md|README]] files. Regarding Development, you can use **GitHub issue tracking system and wiki** to manage the project. **6. Make the Add-on Public** Once the leadership is identified and the Add-on infrastructure is ready, we will add the new Add-on to the [[#Add-on Catalog|Add-on page]]. **7. Announce the New Add-on** To help you attract new developers and users, we will help you announce the creation of the new Add-on in our mailing list, social instruments, and blog. **You can also use the OpenNebula logo in the promotion of the Add-on**. **8. Licensing** OpenNebula requires contributions to be released under the **Apache 2.0 license**, and have licensing information in the header when uploaded to the github repository. This submission method makes all contributions immediately available to all community members under the Apache 2.0 license. ====== How to Run an OpenNebula Add-on ====== **1. Support the Add-on** Add-ons are supported through the [[:community:mailinglists|user support mailing list]]. **2. Maintain the Add-on** Add-ons are maintained by their leaders. Typically they are also the main developers of the Add-on. Only leaders have commit access (Push & Pull) to the Add-on repository. Contributions from other developers are submitted by [[#How to Contribute to an Existing Add-on|pull request on github]]. **3. Build Community** Attract users and developers. **4. Keep Compatibility** Add-ons do not necessarily have to follow the OpenNebula release cycle, but it is very important to test their compatibility with upcoming versions of OpenNebula. Once a new OpenNebula Beta version of OpenNebula is announced, leaders will have 10 days to test compatibility. **5. Promote your Work** You can use the [[:community:mailinglists|user support mailing list]] and the OpenNebula blog to announce new versions and enhancements, and the [[:community:mailinglists|developers mailing list]] to discuss development. ====== How to Contribute to an Existing Add-on ====== The Development section in the README file of the Add-on specifies how development is being managed. Typically, the GitHub issues system is used for issue tracking. The leaders of the project are the only members with commit privileges. To contribute bug patches or new features, you can use the github Pull Request model to the [[https://github.com/OpenNebula|Add-on public Git repository]]: * 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 Coordination is performed through the [[:community:mailinglists|developers mailing lists]]. It is assumed that code and documentation are contributed under the Apache License 2.0. You can contact the leader if you are interested in co-leading the Add-on. ====== Are the Add-ons Part of the OpenNebula Distribution? ====== Add-ons do not necessarily have to end as part of the OpenNebula distribution. New add-ons should go through an incubation phase and the quality assurance processes of the project before they can be part of the OpenNebula distribution. Prior to escalation to the OpenNebula distribution, the Add-ont needs to show that: * It perfectly fits within the OpenNebula project * Its features are highly demanded by the community * It has been developed to be thoroughly tested with the [[http://www.opennebula.org/software:testing|quality assurance processes of the project]] * The developers allocate resources for the maintenance and support of the new component to ensure long term stability to its development * The developers complete a [[:community:contribute#Licensing and Copyright|Contributor License Agreement]]