Join Our Discord Community
Discord is our primary community hub for all discussions, questions, and announcements.- Join us on Discord — Discuss features, ask questions, get announcements about development progress
- Report bugs — Share issues and get help from the community
- Discuss features — Propose new ideas and discuss implementation
- Ask questions — Get help with the codebase or development setup
- Stay updated — Get notified about releases and important updates
For larger changes or new features, please discuss on Discord before starting substantial work. This ensures alignment with development goals and prevents duplicate work.
Important Notes
- Trace is a fork of KiCad — This project is based on the KiCad EDA software
- License — All contributions must be compatible with GNU GPLv3
- Copyright — By contributing, you agree to license your code under GPLv3
- Upstream — Consider contributing improvements to KiCad upstream when applicable
Getting Started
Trace is a fork of KiCad, and we maintain compatibility with KiCad file formats and many of its architectural decisions. Developers familiar with KiCad will find the codebase familiar. New developers are encouraged to:- Start small with contributions and gradually work up to larger changes
- Check the issue tracker for issues labeled “good first issue”
- Search through issues and leave a comment if you’re interested in working on something
- Ask questions in Discord or on the issue itself
Development Guidelines
Code Style
We useclang-format to check many style requirements. When you create a pull request, one of the CI pipeline steps will run a formatting check on your contribution. See the Code Style Guide for full details.
Key style points:
- Always create a new branch for PRs instead of using your fork’s main branch
- When in doubt, follow the existing formatting of the file you’re editing
clang-formatdoesn’t know about all our nuances — if there’s flexibility, match the existing file style
Pull Request Process
Fork and branch
Fork the repository and create a feature branch. Never use your fork’s master branch directly.
Commit Messages
Use clear, descriptive commit messages:Types of Contributions
Bug Fixes
Found a bug? Please:- Check if it exists in upstream KiCad too
- If KiCad bug: consider reporting there as well
- If Trace-specific: fix it and submit a PR
Features
New features should:- Fit Trace’s vision of AI-enhanced PCB design
- Not break existing functionality
- Be documented in code comments
- Consider UI/UX implications
Documentation
Help improve code comments, README files, guides, build instructions, and API documentation.AI Features
If contributing to Trace’s AI integration (trace/ directory):
- Test with the backend API (contact us for dev access)
- Follow patterns in existing AI tool code
- Consider token usage and rate limits
- Document any new AI capabilities
License & Copyright
By submitting a contribution, you certify that:- You wrote the code, or have the right to submit it
- You agree to license your contribution under GPLv3
- You understand Trace is open source (others can use/modify your code)
- Your contribution doesn’t violate any patents or copyrights
Getting Help
- Discord: Join our community — primary place for questions and discussions
- GitHub Issues: github.com/buildwithtrace/trace/issues — for bug reports and feature requests
- Email: hello@buildwithtrace.com — for private inquiries
- KiCad Docs (for core EDA features): docs.kicad.org
Code of Conduct
Be respectful, constructive, and professional. We want Trace’s development community to be welcoming to all contributors.Thank you for contributing to Trace! Every contribution — whether code, documentation, or bug reports — helps make Trace better for everyone.

