KiCad has a special way of handling hidden power pins that results in pins in symbols that are invisible being connected to that net. The linked docs page explains the reasoning pretty good.
However, this has many side effects as layed out in my issue here.
The reason I make this post is to start a discussion. I don’t want to start a crusade against the devs here, so please be civil. I was honestly just surprised that it was immediately closed with an “as-designed”, showing no intention that this will be changed at some point.
Legacy code aside, to me this seems like a pretty big issue. A bigger issue than breaking compatibility to legacy designs. But maybe I’m just missing the bigger picture. That’s why I wanted to hear some other opinions.
Moreover, I wanted to make sure that you guys are aware of it and don’t have to spent your time debugging your schematic.
This is a perennial KiCad footgun (which is not the same thing as saying everyone knows about it, to be clear). This catches a lot of people – search for “hidden power pin” on this forum to see…
I don’t know of anyone who likes this feature, and I personally would be happy to see it go, but it’s been in KiCad for a very long time and it’s therefore hard to get rid of. That’s not the same as impossible, but it’s hard. I’m not a developer, but I really doubt it would be removed as a feature without a compatibility plan. To me that seems like the sticking point; it’s not really “legacy code” that’s the issue, it’s legacy designs.
For info, one reason this feature exists in the first place was so that IC symbols like digital logic chips could automatically connect to power rails if you drew the symbols that way (…widely regarded as a bad move… don’t do this in new designs). It was also used for VCC/GND/etc power symbols.
There have been changes to mitigate it, for example V8 added a “power symbol” checkbox that lets power symbols (VCC, GND, and friends) act in a similar auto-global-connection way without the implicit footgun. Prior to V8, the power symbols in the KiCad libraries relied on this implicit global connection with invisible power input pins. Now, they don’t anymore, but other people’s designs still do. The symbol checker mentioned in your issue was another thing added in the last 2 or 3 versions (I don’t remember exactly when) to try to help with this issue.
I guess what I’m trying to say is that the as-designed closure on your issue isn’t a door-closed statement that this feature will never change. It’s just that your issue probably wasn’t going to be the place where the details of any potential future change are hashed out. Offhand I don’t remember if there’s another gitlab issue tracking this, but it has been thought about, and you aren’t the first person to say hidden power inputs making implicit connections considered harmful .
Here’s some other collected literature about this functionality that maybe is useful. I’m collecting this because I know where a lot of this scattered information lives, not trying to make a point, to be clear.
KiCad library guidelines for pin stacking (basically: when making stacking pins in symbols, keep the top as a visible power input, and make the others invisible passive pins)
Hidden power pins were nearly all for TTL logic, which is always 5V. Turns out that even that broke if you had two isolated 5V supplies for some reason