Joining the Development Team
To begin contributing to KiCad, you should first join the KiCad Developers mailing list. This mailing list is used for:- Announcements about development progress (milestones, deadlines, new releases)
- Discussing the implementation of new features
- Asking general questions about the KiCad codebase
Getting Started
New developers are encouraged to start small with their contribution, and gradually work their way up to larger changes as they gain knowledge in the codebase.Finding Starter Issues
The development team labels issues in the issue tracker with “starter” when the issue or feature being requested is a good way for a new person to contribute to KiCad. Alternatively, you can:- Search through the issue tracker for any issues that look interesting
- Leave a comment saying you are interested in working on it
- Ask questions in the issue comments - other developers will help you
Planning Larger Changes
Developing any larger change, such as a new feature, should be discussed on the developers mailing list before substantial work is done. This allows for:- Input from the lead development team
- Ensuring the feature is aligned with current development goals
- Preventing duplication of work by contributors
Code of Conduct
KiCad is committed to fostering an open and welcoming environment. All contributors are expected to:- Use welcoming and helpful language
- Be respectful of differing viewpoints and experiences
- Gracefully accept constructive criticism
- Focus on what is best for the community
- Show empathy towards other community members
Development Resources
- Source Code: GitLab Repository
- Documentation: Developer Documentation
- Wiki: GitLab Wiki
- Forum: KiCad Forum
Repository Structure
KiCad consists of multiple components:- kicad - Main programs and core files (this repository)
- kicad-doc - Documentation and interactive help
- kicad-library - Schematic symbols, PCB footprints, and 3D models
3d-viewer/- 3D viewer source codeeeschema/- Schematic editorpcbnew/- PCB editorgerbview/- Gerber viewercommon/- Common library codelibs/- Utility libraries (geometry, etc.)scripting/- Python integrationqa/- Unit testing framework