New Contributor - Wanting to work on a feature

126 views
Skip to first unread message

John Neuhaus

unread,
Aug 11, 2026, 3:20:15 PMAug 11
to KiCad Developers
Hi all,

So, I'm new to this project, but I want to tackle [Feature Request] Master project for multiple boards and Feature request: "Associated schematic" option for PCB (treating as the same feature.) It would be my first contribution, but not my first big software project (I worked on an enterprise product for the last 10+ years as the lead dev.)

I think I see a relatively non-invasive and pretty seamless way to go about this, as it seems there are some parts of KiCad already prepared for it. The gist is take advantage of the virtual root and tie top-level sheet <-> pcb, but here's the rough outline of how:
  • The top sheets array already defines what can have its own PCB in this scheme.
  • Use the boards array in the project file, which it appears is essentially unused, to store the boards. I think it's UUID and filename only right now, which I think can work given how much of the relationship is discovery driven.
    • Blank array as the indicator for "legacy" and any behavior switching is the easy answer
    • "Update-on-save" to populate the array and update projects. There might be backwards compatibility issues there I'm unaware of, but combining these two sub-bullets would give us "open in 11 -> convert, worst case for open in 10 -> revert, open in 11 -> back to the default" for basically free. 
  • Netlist export is what's used to populate the PCB, and already supports specifying a root scope, it just doesn't.
    • Bonus on this, it dovetails nicely with expanding sheet-level capabilities, e.g. "Simulate sheet..." to pop open the simulator with only a subset exported, which wouldn't need to inherently care if it's top-level or not
  • Update from schematic, open PCB, and all the back-annotation can rely on a combination of current active sheet and filename matching
    • They already do, and it gets really squirrelly if you mess with it, e.g. by naming a PCB after the top-level sheet instead of the project. That half-works, and this scheme would/could impart better-defined behavior.
  • There's almost nothing in the context menu of sheets currently, so no fight to add "Create Board...", "Associate existing board...", etc. 
    • Renaming sheets is a potential tricky spot
    • Good spot for that "Simulate Sheet..." option.
  • All the design rule stuff is already derived from board name
I probably missed an important non-obvious dependency somewhere, and there's edge cases of course, but I think this is a natural fit and worth starting the conversation. It doesn't address the "board variant" part of #15272's ask, but crucially it doesn't close the door on anything either.

It looks like the bulk of the work is adding setters/getters, e.g. for "which board/sheet" in project_file.h/cpp.

Thanks!

John

Seth Hillbrand

unread,
Aug 12, 2026, 2:22:17 AMAug 12
to KiCad Developers
Hi John,

Thanks for offering to help with the development of KiCad.

The feature you mention is complex and involved.  Once implemented it will also require long term, ongoing support for thousands of engineers.  As such, it is not a feature that we're comfortable having outside developers implement.  Inside the core team, we are currently laying the ground work to support this in a future KiCad version.

If you would like to work with us, the typical path is to start by working on open bugs, making the software more reliable and predictable.  This is the majority of the core team work. And although it is not as fun as blue sky feature building, it is far more critical and gives us a good idea of who is likely to be willing to support the features that they do develop.

I hope that you'll choose to look through the issue tracker and work on some open items.  If you have any questions, please reach out. 

Seth

    
Seth Hillbrand
Lead Developer
+1-530-302-5483‬
Long Beach, CA
www.kipro-pcb.com    in...@kipro-pcb.com

--
You received this message because you are subscribed to the Google Groups "KiCad Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to devlist+u...@kicad.org.
To view this discussion visit https://groups.google.com/a/kicad.org/d/msgid/devlist/5a49a753-a27b-4451-837b-e951e8f6db88n%40kicad.org.

Oliver

unread,
Aug 14, 2026, 7:48:40 AMAug 14
to 'Seth Hillbrand' via KiCad Developers



Hi beautiful KiCad dev team and Seth Hillbrand,

just a thought, i had for a long time, that might fit in this context.
It has a deep background - to make it short, I wonder about the long term maintainability of KiCad, since i am mostly interested in software maintainability.

I consider, that Project became kind of difficult to maintain over the years, and if so, I would be sad, since I consider KiCad one of the best things out there.
When i started to "try"  to contrib to KiCad by grabbing some beginners bug to fix, I found it cumbersome to get starded, despite the comprehensive doc.
My lag of expertise mostly, I guess. I learned already a lot in the process.
So, I have an Idea to lower the threshold of becoming a contributor.
What I personally started some time ago, for all my personal software projects, is something i find an incredible useful small thing that matters ( easter egg to Uncle Bob ) .
It is based on the Joel Test, which i like very much.
It is very simple - I document the "how to work on this project" and write a helper tool at the same time - very efficient.
It is an idea coming from rust, the "just" tool.

It works basically like this:

git clone any_project
just <- that shows the available commands to work on the project
just setup <- this invokes the fetching and installing of dependencies
just build <- runs whatever cmake command with args, and so on
just run <- run from build environment without installing
and so on. All from command line. IDE agnostic.
That's just an example.

So, all the "how to contribute"  is encoded in the justfile, instead of documenting all the details.
Platform aware.
Can even have args, like
just setup docker <- clone the docker script, setup the build container, ...

or helpers like
just help <- points to contribution guideline, wiki, policy ...
just status <- checks the current environment, plattform,  missing dependencies, whatever

or chain incvocations, like
just run <- invokes all the above as neccessary
or
just setup build run

Two more aspects on this:
1) that is just a thin wrapper, redirecting to the tools that do these things. No intention to blow up the justfile - that is documentation, not tooling.
2) I even found a practical way ( for a c++ project with many targets ) to make that STATEFUL, so one could "configure" the environment, like
just config release
just build

This came from the encounter, that cmaketools / vscode is ... cumbersome for having many targets. For example.

Why is that adressing the joel test ?  Because all that complexity boils down to "can you make a build in one step", yes, it is
just
and everything that follows becomes self-explanatory, more or less, ok , nothing is perfect, but if it lowered the threshold for becoming a contributor ...

thanks for your attention.

kind regards

Oliver from Switzerland








Seth Hillbrand

unread,
Aug 14, 2026, 4:17:58 PMAug 14
to dev...@kicad.org
Hi Oliver-

Thank you for the suggestion.

We require our development team and contributors to use standardized tools and toolchains.  Within these toolchains, we offer a number of pre-configured systems that can be independently built and tested.  We provide extensive documentation on https://dev-docs.kicad.org/en/index.html for getting started and building.

KiCad is not a simple system.  It does require some pre-existing knowledge to download and build the source code.  But this is a very low bar for any developer who wants to contribute to a complex system without breaking things.  I would encourage people to read the existing documentation and then suggest updates to it that will clarify any points that are out of date or unclear.

Seth
    
Seth Hillbrand
Lead Developer
+1-530-302-5483‬
Long Beach, CA
www.kipro-pcb.com    in...@kipro-pcb.com

Oliver

unread,
Aug 17, 2026, 9:12:16 AMAug 17
to 'Seth Hillbrand' via KiCad Developers


OK. I try that for myself then, and see if it would be of any value (as a case study).

May i ask a few questions ?
- say i choose a beginenr bug to fix: How can i ensure not someone else already work on it
- is maintainability a thing at all in kicad ?
- did maintainability got worse over time
- are you workig on it, and what exactly to you work at in that regard
- what measures do you take to improve maintainability
   ( i know some industry reality like using QubeSonar on CI/CD, or MISRA, and so on endless )

Thanks for spending time and attention to my message.
Oliver

Seth Hillbrand

unread,
Aug 17, 2026, 1:34:46 PMAug 17
to dev...@kicad.org
If you choose an issue, you should write in the issue that you'd like to work on it and ask for it to be assigned to you.  One of the maintainers will assign it to you and then it is yours for a limited time.  If you decide not to work on it, please let us know as well.

Maintainability is a major focus in KiCad.  But I think we use the term differently than you are using it.  For us, we look at the ability to accurately diagnose and fix issues and avoid them in the future.

So, if you'd like to identify areas of KiCad that are under represented in the QA tests and build clear, concise QA to exercise those contracts, this would be helpful in terms of maintainability.

We are not looking to integrate new CI tooling.  Any changes on this front will only be made after discussion within the core team (the people who are currently doing the maintaining).  Adding new ideas without first experiencing the current system from the perspective of a maintainer is a non-starter.

Seth

    
Seth Hillbrand
Lead Developer
+1-530-302-5483‬
Long Beach, CA
www.kipro-pcb.com    in...@kipro-pcb.com

Reply all
Reply to author
Forward
0 new messages