Contribute code

Jenkins project includes a lot of code, and we invite everyone to contribute to the project. There is a diverse set of programming languages used in Jenkins, including but not limited to: Java, JavaScript, Groovy, Golang, Ruby, Shell scripts. And, since Jenkins is an automation server with hundreds of plugins, there is a huge number of technologies involved. If you are an expert or just want to study something new while contributing, you may find interesting opportunities in our project.

Where to contribute?

The Jenkins project is spread across multiple organizations on GitHub. You are welcome to contribute to any repository in any of those organizations, or to any other Jenkins-related repository on GitHub.

  • jenkinsci - Main organization. Jenkins core, plugins and libraries reside there. To aid in classifying our 1000+ Git repositories, some naming conventions have been adopted:

    • plugins are named "*-plugin"

    • libraries are named "lib-*"

  • jenkins-infra - Jenkins infrastructure, including the website and other services

Various components in Jenkins have differing review and delivery policies, so please see the repositories for specific contributing guidelines.

Plugins

There are more than 1800 plugins in Jenkins, and these plugins implement the majority of Jenkins functionality. Every plugin is an isolated component which can be developed independently of other parts of the project, with help of the APIs and development tools provided by the project.

Most Jenkins contributors work on plugins and it is often the best way to start contributing to the project. Here are some documentation links:

Jenkins core

Jenkins core is the heart of any Jenkins installation. It provides the kernel functionality and extension APIs used by Jenkins plugins. Written mostly in Java, it includes multiple components and frameworks. The core also includes the standard Web container and acts as an executable WAR file which can be run in the instance.

See the jenkinsci/jenkins repository for the overview and documentation links.

Infrastructure

As an independent open source project, the Jenkins project maintains most of its own infrastructure including services which help to keep the project running. The kind of things that fall into "infrastructure" can span from operating virtual machines, containers, configuring network or developing and maintaining project-specific applications to make the development of Jenkins core and plugins more efficient.

Because we strongly believe in Open Source principles, we also apply them to our infrastructure. As such we consider ourself as an open infrastructure project where everybody is invited to learn, share, contribute.

See the Infrastructure sub-project for more information and contributing guidelines.

Other components

There are hundreds of repositories which do not fall under categories below: libraries, packaging, developer tools, etc. You can discover these components by looking into special interest groups and sub-projects pages.

Newcomers

The Jenkins project always welcomes newcomer contributors. We maintain lists of newbie-friendly issues and encourage new contributors to work on those issues.

Useful links:

Video:

Experienced contributors

Are you an established contributor to Jenkins and looking for a new challenge? The Jenkins Security Team is looking for members willing to help improve Jenkins security. Also, there are many special interest groups and sub-projects which are seeking contributors in order to push bigger projects forward.