Welcome to the OpenNMS community- the place where we develop the software OpenNMS Horizon and Meridian to solve monitoring problems for IT infrastructure. This document is meant for anyone interested in learning about the OpenNMS project and the surrounding ecosystem. We care about our people in our community and advice you to please follow our Code of Conduct and be excellent to each other.
Where can I find documentation?
Product-specific documentation can be found on https://docs.opennms.org and follows the versioning of our software. You can also use some less strict managed resources here in this Discourse instance.
The Discourse platform is our central information portal for the following topics:
- Knowledgebase article for already solved and known problems
- Discussions about how to extend OpenNMS in the section Development
- Announcements for releases, our weekly development update (OOH), events and security related announcements
There is also a Wiki where people explained how they solved some special problems but are not actively maintained. We keep it around for people in our community but would like to encourage you to use our Discourse Wiki Posts instead. There are two video training tracks available:
On OpenNMS conferences or hackathons we sometimes record sessions, you can find the collection in our OpenNMS YouTube Channel.
Where can I talk with people and find help?
- Mattermost chat used by people in our community and also from the OpenNMS Group core developer who contributes full-time on OpenNMS
- If you have problems or you want to discuss how to get something to work use our Community Support.
- There is an annual get-together called DevJam, which is a one-week un-conference to discuss, develop, teach, and learn various topics with and around OpenNMS. You can watch the Events section in Discourse to get notified when we announce upcoming events.
Where do you live in social media?
How can I report enhancement requests and bugs?
OpenNMS uses JIRA as a software management application. This is the place where we report bugs and issues to enhance and develop the software. Software versions and releases are driven from this JIRA instance. Please use JIRA for qualified problems that can be addressed in software development. To qualify problems we use Discourse and our Chat.
To create issues it is required to create a JIRA account.
How can I report security issues
Please send us all security related issues to email@example.com. Use this address for all our OpenNMS software, including any of OpenNMS’s web services. The process of how we deal with security issues is described in Security fixes and Security Process.
How do I contribute to the project?
If you are able to fix open issues with code patches or you want to provide source code contribution with patches, you have to sign the OpenNMS Contribution Agreement. It implements the concept of dual copyright. This allows the OpenNMS code copyright to be consolidated under one organization (The OpenNMS Group) while allowing the creator of the code to maintain all of their rights.
This is a fundamental requirement to get your source code contribution merged to the main release of OpenNMS. The OpenNMS software is developed with git and the source code is publicly hosted on GitHub.
To align JIRA and GitHub we use a workflow to create JIRA issues first and reference them by the JIRA issue number in the Pull Request.
The general workflow is as following:
- Master Branch: The master branch represents the code of the latest stable release.
- Develop Branch: This is the default branch and is the target and integration branch for the next major release. It is the source you branch off when you want to develop new features and enhancements which need to be in the next major release.
Minor/Patch Release Branches: If you need to fix bugs with a target for a next minor/patch release, you will find a branch named
release-<major>-<minor>-<patch>and use these to branch off. Deciding which changes go to which version, we follow https://semver.org. With Major releases, we can break things, so please read the release notes before you upgrade!
- Foundation Branch: This special branch is used to get hot- or bug fixes back from the commercial OpenNMS MERDIAN release which is also auto-merged upstream to Horizon releases. These branches are maintained by The OpenNMS Group, Inc. and give you a way to see which fixes and features get backported to long-term maintained versions of the software.
When you are finished with your work you create a Pull Request against “Develop” when you branched off to target for the next major release or pick the “Minor/Patch” release branch where you want to have your changes be released.
This workflow ensures code changes are tracked for release management driven by JIRA. The pull request review step is important to get a shared understanding of requested code changes and improve code stability and quality.
When can I expect new releases
OpenNMS is released and distributed in two flavors HORIZON and MERIDIAN. Both distributions are released under the AGPLv3 license model. Version numbers follow the Semantic Versioning schema.
- The HORIZON major releases follow a feature/time-driven release cycle of 3-5 months.
- HORIZON minor releases are targeted for every first Tuesday of a month.
- The OpenNMS Group, Inc. provides the MERIDIAN distribution with commercial support and the major release cycle is ~12 months and support is given for an extended lifetime.
- Security and bugfix patches are maintained by The OpenNMS Group, Inc. and are backported between the two distributions.
- To get patches and fixes for MERIDIAN, it is required to have a MERIDIAN subscription for repository access.
Do you use Continuous Integration (CI) systems?
For quality assurance, we use CircleCI as a Continuous Integration (CI) system. It is publicly available on https://circleci.com/gh/OpenNMS/opennms
It is used for the following tasks:
- Checks code for compile errors
- Runs unit and integration test infrastructure
- Runs smoke tests
- Build and publishes Java API documentation
- Build and publishes version related documentation
- Build and distribute RPM and DEB packages to the public server
- Build and publish Docker container images to DockerHub
All branches in the OpenNMS GitHub repository will be processed by the CI system. Feature branches and results are distributed to the public available repository server as YUM and DEB package. Builds are automatically triggered by changes in feature-, develop or master branches.
How is the project governed
The project is mainly driven by The OpenNMS Group, Inc. We have an elected core contribution group called OGP who earned trust in the community to have direct commit access to the project where the software is released and distributed. Most decisions will be made using a lazy consensus model.
The OpenNMS Group, Inc.
The OpenNMS Group, Inc. is the main sponsor of the project and provides a commercial product OpenNMS MERIDIAN which is similar to Red Hats Enterprise Linux subscription. Besides that, they also develop new features through OpenNMS HORIZON which is similar to Red Hats Fedora and free as in freedom. The build and packaging infrastructure is also maintained and provided by the commercial company.
Order of the Green Polo
The Order of the Green Polo (OGP) is the super-secret brotherhood of developers of the OpenNMS Project. You can recognize an OGP member by their good looks as well as their super-flashy, very coveted OpenNMS Green Polo.
Back in the fall of 2004, I wanted to find a way to recognize those people who make OpenNMS what it is, and to thank them in some fashion. Ever since the advent of “business casual” workplace attire, the “logo” polo shirt has become a fixture in IT departments around the world. We sell black and white polos with the OpenNMS logo on our website. But this is much, much, much, different. These are “green” polos, very rare, and they will never be available for sale. Think of them as equivalent to winning The Master’s golf tournament’s green jacket - only harder to get. In order to get one, all one has to do is give up all hope of having a life outside of OpenNMS, work long hours for free, and basically become a closed superhero, squashing bugs (or uncovering existence) in a single bound.
– Tarus Balog, Founder of the OpenNMS Project