Contributing to KiCad (application) development

KiCad has been a community driven effort of engineers developing on their limited time. We welcome anyone to contribute bug fixes, improvements and new features.

Developer mailing list

The first thing to do before anything is to join the KiCad Developers Mailing List. Here you can ask broad questions and present your ideas or plans if it’s beyond a bug fix.

Obtaining the code

KiCad uses Git for source control.

If you are new to git, it is highly suggested you find and follow the many tutorials available online like this one and/or read the git documentation.

We also are dedicated to using GitLab as our primary hosting platform for our Git repositories.

All repos can be found here.

The repository for the main application can be found here

Compiling the code

Follow the instruction in the documentation corresponding to your platform to set up a working build environment and successfully build KiCad from source.

Code Documentation

To familiarize yourself with the code base you can read the documentation generated by Doxygen. When submitting new code, please remember to update the documentation descriptions. You can run make doxygen-docs to generate the documentation locally.

The latest version of the same docs are also available on the Jenkins server, see KiCad Developer Docs for the C++ API.

You can also find various developer notes in the Doxygen docs, see the related pages.

Before you submit

After you make changes, please ensure your code meets the KiCad Coding Style Policy.

Your commit messages should follow the rules stated in the KiCad Commit Message Format Policy

If you feel like working on the user interface, you will find useful reading the User Interface Guidelines.

It’s important for us to keep the codebase readable by all developers. Your patches will not be accepted until adhere to the rules set forth in these policies.

Programming is an iterative process, don’t worry if you have to go back and make changes to your patches, we all do.

Submitting the code

All patches should be submitted as a merge request on GitLab. See this How to create a merge request for new users on how.

Note: There is a GitHub mirror of KiCad but all pull requests are ignored, we only accept changes on GitLab

Fix any CI issues

The GitLab repository has Continous Integration (CI) enabled. This means it automatically runs processing steps on incoming commits to do a few tasks from making sure the code can compile to coding style policy.

You can find the status of the CI job on the merge request page and see its output. If you need help, you may ask in the merge request for a developer to comment on what to do to resolve it.

Starter / Beginner Patches

Don’t have any ideas in general on what to do but want to help?

You might want to look into issues labeled as 'starter'.

Or for example if you are an macOS user, you might want to check the following issues tagged as 'macos'.

Internet Relay Chat (IRC)

Feel free to join the IRC channel at #kicad@freenode. A nice bunch of people are casually hanging around in there, so if you have any questions and don’t know where to ask, you should try asking in here. There are all kinds of people in all kinds of time zones, both people who develop KiCad and plain enthusiastic users.