Clone this wiki locally
Since you're considering contributing, you are likely already using Cockpit. If not, first install Cockpit on your local machine as described in:
- Check out the git repo, learn how to build it and run it. Change a string in the code somewhere and make sure you can see the change in the browser. See HACKING.md for details.
- Keep in mind the project ideals
- If you are looking for someplace to start developing, issues are marked with a good-first-issue label when they are a good introduction to Cockpit and of limited scope.
- Documentation (be aware: possible version differences)
- Set up integration tests. Automated tests are an important part of Cockpit and every new feature should be accompanied by its tests.
In-progress work and bugs are in the issue tracker. Use this for reporting bugs, filing feature requests, and proposing changes.
Modify the project in your own fork and issue a pull request once you want other developers to take a look at what you have done and discuss the proposed changes.
Cockpit encompasses different languages and is developed by multiple developers. When contributing, please adhere to the coding style guidelines.
Here is a detailed description of the commit workflow (including review criteria) and as an example, how @mvollmer merges pull requests.
You can contact us on irc or the mailing list or by discussing issues in their respective GitHub thread. If an issue has a developer assigned, you may wish to check with that developer to see if they are already working on the issue.
User interface & design
Cockpit's user interface is based on PatternFly. Please be aware of this, especially of the design patterns (listed on the design tab of each component) when proposing changes to the user interface. Be sure to also read the general guidelines on the PatternFly website as well.
We work on designs inline in issues, pull requests, and on the discussions area. Additionally, there is the Cockpit Design repository as an archive for most design work.
Designs are made with open source software, including Inkscape, Penpot, and Excalidraw. Please post the resulting mockups as PNGs in the issue tracker. Ideally, also share the source too (SVG, penpot file, embedded info in the Excalidraw PNG, etc.).