Google Summer of Code 2022

About OpenNMS

OpenNMS is an enterprise grade network management platform developed under the open source model. Our technology is highly scalable and can be configured to manage networks at any scale. We provide stewardship to our community and support the project and our commercial customers, with a team of highly skilled software professionals dedicated to the principles and intrinsic values of open source software.

One of the key goals for the project is to continually improve OpenNMS’ distributed monitoring technologies and its flexibility as an adaptable platform able to address the ever-increasing demands on scale and the ever-changing technologies of modern network infrastructures.

Our Commitment to Open Source

OpenNMS was one of the early open source projects, launching in July 1999 and made it’s first commit to a public repository on March 30, 2000. It was one of the first projects on SourceForge, registering within the first year of the launch of this iconic open source sharing site. On September 1, 2004, The OpenNMS Group was founded by Tarus Balog, Matt Brozowski and David Hustace.

OpenNMS has the distinction of being one of the longest running open source software applications in the world and is used by many enterprises, both large and small, universities and government agencies to monitor their network infrastructure. OpenNMS was a pioneer in creating a sustainable business while remaining fully open source. Because we have remained committed to the principles of open source, we have been able to continuously evolve the project to not only keep pace with the latest technology trends but often lead in their adoption, ahead of closed-source solutions.

OpenNMS supports the goals of GSoC not only because of what it does for the open source community writ large, but also because we have seen how valuable the experience can be as our past GSoC participation provided a vehicle through which we mentored our current CTO, Jesse White. We are proud to be part of GSoC as continues to inspire the next generation of software developers to learn their craft and understand the values and life-long benefits of working on community sourced software that has changed, and continues to change, the world.

Our Commitment to You

OpenNMS is committed to providing all of our contributors with a rich GSoC experience. First and foremost, this is about learning to code, so we have put together a list of projects that we think will be interesting, challenging, and fun. If you don’t see anything that excites you, we invite you to submit your own proposal. You can either make a suggestion independently or you can reach out to us and we will work with you to find something that inspires you.

Given our legacy, we have available many seasoned open source mentors and a global community to help enrich your time with us. We will be arranging special small group sessions for contributors to meet with our senior executives and subject matter experts.

David Hustace, our CEO and one of the original founders of The OpenNMS Group, bares the scars from helping the software industry to evolve from fearing open source to embracing it. As part of our GSoC contributor group, you will have the chance to hear first hand about the early days of open source in business, its challenges today; how it continues to evolve; and his vision for the future.

As mentioned, Jesse White, our CTO, went from GSoC contributor to executive technology leader at OpenNMS. In his contributor session, he will talk about his GSoC experience, his journey to OpenNMS CTO and his approach to creating products that inspire.

We are also very excited to offer opportunities to speak with Zoë Knox, our VP of engineering. Zoë will share her experiences in the open source community and answer questions about what she looks for in developers and what she sees as the future for open source.

In addition to the above, will offer a session on how to navigate the current job market, led by our HR partner and a session on the law of open source from our in-house lawyer. Of course all of these sessions are optional; they are just another way we believe we can give back to our community.

There will also be plenty of opportunities to socialize with all of our developers through regular online events and to participate in our weekly Music League Battle Royale.

Project Ideas

Enhance OpenNMS Helm

Background : OpenNMS Helm is a Grafana application plugin. Grafana is an open source analytics platform that lets users create flexible dashboards. Helm contains Grafana panel and data source plugins that allow users to interact with data produced by OpenNMS.

Description : This project creates a new Grafana “backend plugin” that allows the current data source plugin to leverage the built-in alerting support provided by Grafana. Front-end data sources are currently available to query these and can be used as a reference implementation.

Technical Details : Helm is a TypeScript application that accesses data via a ReST API. Backend data sources can be implemented in any language and an SDK is readily available for Go. The code for Helm can be found at GitHub: opennms-helm and details on backend plugins are available here: Grafana: Backend plugins. Knowledge of Grafana is not necessary, but might be helpful.

Estimated Time : 350 hours

Difficulty : Medium

Potential Mentors : Alberto Ramos-Vizcarra, Ronny Trommer

Technical requirements : Knowledge of APIs, TypesScript, Go would be helpful.

Extend OpenNMS API catalog with the addition of GraphQL

Background : OpenNMS currently uses multiple APIs, some internal, some third party. As the API catalog has grown and as the APIs themselves have become increasingly complex, use of these APIs has become somewhat cumbersome. We need to simplify the use of these APIs enhancing them to be more flexible, robust, and strictly-typed.

Description : GraphQL is a language for querying data from any number of different sources. This will require working through the OpenNMS API catalog and building a schema for each API that will allow the GraphQL API that is running on a server to get the data from the underlying APIs.

Technical Details : Project will require identifying all of the APIs, building a schema for accessing each of them, and resolver functions to get the data. Project also requires documenting the code written and providing a guide for adding/modifying the schema and/or resolver functions.

Estimated Time : 350 hours

Difficulty : Medium

Potential Mentors : Chandra Gorantla, Jeff Gehlbach

Technical requirements : Knowledge of APIs, Java, GraphQL would be helpful.

Integrate OpenNMS with HashiCorp Vault

Background : As OpenNMS explores new ways to leverage cloud technology, it is imperative that we expand our toolset to address preserving security in low-trust environments. HashiCorp provides open source tools that will enable OpenNMS to provision, secure, connect to and run a cloud computing infrastructure.

Description : Integrating HashiCorp Vault technology will require that all secrets, including tokens, secrets, passwords, certificates, API keys, etc. are managed via the Vault. The Vault will need to be configured, initialized and unsealed. All authentication and access to secrets is managed through HTTP APIs.

Technical Details : Configuring the Vault will require working with the security team and other developers to understand the necessary functionality that needs to be enabled in the Vault. Integrating into OpenNMS will require working with Java to interface with the Vault server via an implementation of the Secure Credentials Vault (SCVI) API.

Estimated Time : 350 hours

Difficulty : Hard

Potential Mentors : Jason Berry, Brent Borovan, Yang Li, Kim Knutilla

Technical requirements : Go, JavaScript, Java and basic security. Knowledge of HashiCorp Vault would be useful.

Create Python Package to Wrap OpenNMS REST API

Background : OpenNMS is building out its data science and AI tools. As Python is the language of choice for most data scientists and those working with machine learning and other AI technologies, having an easy way for Python users to access OpenNMS’ REST API will help others explore the rich set of data captured by OpenNMS.

Description : Building an API wrapper in Python is very straightforward. This project will include documenting the wrapper, building tests and writing sample code using the wrapper (e.g., sample code showing how OpenNMS data could be used in Pandas, TensorFlow, Keras or PyTorch).

Technical Details : This is a great introductory project as the learning curve is practically flat. This project provides an excellent opportunity to create an elegant solution that has sample code and documentation that will make it very easy to use and maintain. This is also an excellent opportunity to learn how to create a “good” Python package.

Estimated Time : 175 hours

Difficulty : Easy

Potential Mentors : Mark Mahacek, Andrew Konstantaras

Technical requirements : Python. Knowledge of REST APIs and building API wrappers would be useful.