Kicad pet peeves

Sure enough. When I switch from “Shove” to “Highlight collisions” everything works fine and I can place a via anywhere on an existing track. When I switch back to “shove” it goes back to the behavior described above.

I did submit a bug report here

Since everybody is apparently perfectly happy with all the features in the software, I will continue my malcontent list:

  1. No previous grid shortcut - quite often I switch between two sizes of the grid back and forth. I do have shortcuts for predetermined grid sizes but it would be very helpful to have a shortcut that would toggle back and forth between current grid size and the previous grid used.

  2. Can’t remove net highlight with ESC - if you highlight a net the only way to remove the highlight is to select the highlight tool again (if you previously exited it) and then click elsewhere on the sheet (or highlight a different net), which can be a pain if you have to go back and forth between route tracks tool and the highlight tool repeatedly.

  3. Remove redundant tracks shouldn’t remove locked tracks. There are certain cases when you want the tracks to be exactly like you place them. In those instances “Remove redundant tracks” option of the interactive routing keeps messing up your design even if you lock the tracks.

  4. No way to delete unconnected tracks while reading your netlist. Sometime you can end up with a hole bunch of unconnected tracks in your layout for one reason or another. It would be nice to be able to delete them when reading the netlist instead of deleting them manually one by one

  5. No function to select a track to the nearest pad/via. Quite often I need to delete a whole track between two pads. Unfortunately there is no option to select a track to the nearest pad. The only option is to select all connected copper.

1 Like


[quote=“ArtG, post:32, topic:8874”]
No function to select a track to the nearest pad/via. Quite often I need to delete a whole track between two pads. Unfortunately there is no option to select a track to the nearest pad. The only option is to select all connected copper.

In opengl you can select a segment, and with the right-click pop-up menu a trivial connection, a copper connection o a whole net.
In legacy, the options are delete segment, delete track, delete net.

A track to the nearest pad or via is a segment.

@ArtG [quote=“ArtG, post:32, topic:8874”]
…my malcontent list:

  1. Bring back CvPcb and make it “THE BOM TOOL” of all Bom tools. Why does KiCad require a separate Python plugin for this functionality? (Yes, rename it something other then it was.)

  2. Update the “connect” and “non-connect” symbols/junctions per my post earlier today on the subject. Other items have gotten “eye candy” while this feature set has been left to remain as it has been.

  3. Working with board edge line segments that have arcs is a PITA. The arc editing interface could use an upgrade that is not just a hack on the normal line segment tool. Having a constant radius specified, and the end points specified from 0 to 360 degrees would be much more intuitive.

  4. A way to join line segment endpoints together for creating oddball board shapes with arcs such that it does not take hours to get a continuous board outline created. It seems a plugin, KiCommand may do this. Why, again, does everyone need a Python plugin for basic features?

  5. Hurry up and finish the transition to the GAL canvas. Having menu bar icons that do “nothing apparent” makes KiCad confusing instead of intuitive.


I’ve created a few different board designs and had them sent out to fab. KiCad has worked very well, and at a very good price, for me to get these designs completed.

A “pet peeve” is defined as something found to be especially annoying. At the moment I’ve only 5, and I know version 5 is on the way. Aside for a few gripes, I really enjoy using KiCad to make my designs become a reality!

Trivial connection does work… sometimes. It doesn’t seem to work if the pad has a branching track and it doesn’t work with vias.

Here is a selection with “Trivial Connection” option:

and here is the one for the same segment with the “Copper connection” option:

Current nightly build for WIndows doesn’t have “Unconnected Tracks” option. It’s been substituted to track connecting to 2 Nets.

What version of KiCad are you using?[quote=“pedro, post:33, topic:8874”]
A track to the nearest pad or via is a segment.

A track is not a segment. A track is a track. A segment is a segment. I would define it as a discrete primitive of a track.

You can both enjoy something in general and still have pet peeves. If you share them, there is a chance the next versions will be better.

Since we are dreaming here i would combine that with parametric design for footprints. All the drawing stuff should be done similar to how it is implemented in mechanical design software, ie loosely drawing complex shapes by hand and then defining them with dimensions. Kind of like it was done here.

Not really on the subject, but what’s the alternative workflow (atomic parts aside)?

With vias it works in opengl: when clicking on a track, only the clicked segment is selected. Then if remove is selected, the segment is deleted up to the via.
Both in 4.0.7 and nightly 2017-09-25 ubuntu.

OK. A segment is a straiht part of a track from two ends. These ends can be a via, a pad or any point where the track makes an angle. In legacy it is also possible to break a straight segment into 2 segments.

While reading the netlist, as I showed you in the picture, there is an option to “delete or keep unconnected tracks”. Both 4.0.7 and nightly 20170925 ubuntu.
In 2013 and 2004 versions was called “bad tracks deletion”

I’m not a fan of assigning a footprint to a symbol on the library level. In my opinion ability to have multiple footprints per symbol is one of KiCad strengths. Assigning footprints can be implemented better but the concept is still the right one. Library management in KiCad is really awkward to begin with, I don’t need to have a hundred “parts” for a single resistor, just to accommodate all variations of all avaiable footprints.

I wasn’t talking about selecting and deleting a single segment. That’s not a problem, just click on a segment and delete it. I was talking about deleting a portion of a track between two pads or a pad and a via. For two pads “Trivial connection” option does work sometimes. But it will ignore vias and will select everything on all the layers up to the next pad.

It is possible in OpenGL as well.

I guess that’s another pet peeve - different functionality on different platforms. There is no option like that in Windows

Amazing! Unless it has changed in the latest nightly. I thought it was a useful feature.
I think I will delete dangling tracks from “cleanup tracks and vias” before updating the netlist in the future.

If you use nightly and ArtG uses stable i guess this has just been added in nightly. (or other way round, or even if both of you have nightly but different versions.)

I don’t think the stable build differs on different platforms. (Nightly might because the simulator integration is not available for all operating systems.)

I used today’s nightly (Dec 27th) It was like that for a while too, not a recent change

Not at all, it’s just not easy to list them. I’d like to give a more general, bird’s-eye view. What actually makes day-to-day work slower, even if one learns to live with it or doesn’t even notice it. Many smaller and bigger things are already mentioned here and some are well-known in the community, some are actively going to be fixed by developers. Here are some things:

  1. Footprint editor should be something like which was mentioned and linked here, using parameters and distances. Now it’s simple and intuitive, but putting pads into their places requires manual calculation or/and moving the mouse to a right pixel. With a good wysiwyg interface it could take e.g. 5 minutes instead of 30.

  2. Symbol editor should have an editable list of pins or something like that for creating and editing pins. Now it’s simple and easy to learn but really tedious.

  3. The interactive router should work better in many ways. There’s much potential there but I just find myself deleting the tracks (often segment by segment) and redrawing them because they are not what I want, even though I spent already too much time drawing them the first time. The problem is mostly that automatic cleanup doesn’t work and it often creates a mess when the new track segment isn’t good and I try to redo or drag it. There exists something like global cleanup but it should just work on-the-fly.

(On the other hand I can’t imagine how anyone could have done it without the interactive router in the first place!)

  1. The interactive router really, really needs dragging for footprints. Sometimes the interactive router becomes almost useless because I need to move a footprint and redo all the tracks. (Well, of course I still use it for doing the tracks, but you understand what I mean…) The non-interactive legacy canvas dragging is of no use.

Of these, numbers 3 and 4 are the ones which cost most time in day-to-day work.

Then, as a programmer, I like to think what could be done to make it better. There I’ve got some pet peeves, too:

  1. The code base is difficult to learn. That’s not specific to KiCad, though. It’s always difficult to dive into existing code.

  2. The coding conventions are horrible. (Using UPPER_CASE for almost anything… Sigh.)

  3. I don’t like wxWidgets. Well, I haven’t even used it, but I still don’t like it. Nowadays there would be no reason to not use one widget library which is directly implemented on all platforms (GTK, Qt). I actually don’t like the idea of “native look&feel”.

Work in this direction is done. (Not sure how far along it is.)

I was aware of mathematical expression input and it’s great, but in the larger picture it’s just a small detail which doesn’t move us a long way towards what I want (see e.g. the link in ArtG’s post Kicad pet peeves).

Edit: It would need wysiwyg dimensions, rulers or anchor lines.

Edit2: mathematical expression evaluation already works in daily builds.

There is really no pleasing you guys. (And yes i would like a similar way to define footprints as is used for example in the sketcher of most parametric MCAD tools. But this is really far away.)

1 Like

Oh yes there is, but I, too, like also to share what’s not so great in my opinion. I like KiCad very much and would like to make it better. Actually I have thought about what it would take to implement something for the footprint editor. But alas, my pet peeves about the KiCad code and other things have kept me back. The most important thing is, of course, the difficulty of learning a new code base and also a new widget library and other technologies (OpenGL, maybe?).

Took me way longer then i care to admit to find this message on the mailing list:

In it Wayne said he is not really prepared to switch to something different then wx if there is no good reason for it. (Basically every framework has its problems and it is hard to predict if any other thing like Qt really is better on all platforms.)

I would disagree in part here. For a given component I very much want to have all the information pre-defined, so a 10k 0805 1% resistor could be called up as same, or a 74-series TTL package explicitly as the SOIC or TSSOP variety. I’m looking at it from the error potential - if it’s all there, ideally checked from the first time a part was used, you’re not going to introduce a typo by re-using exactly what was installed and verified to be correct. Any time I have to go in and edit a field I’m introducing scope for error. If I’m patching in to a database of manufacturer/vendor part numbers then it is very important that the footprint is defined up-front because otherwise I have to go edit two fields or end up with a part that won’t fit.

You could certainly save space by having a symbol library and a footprint library that were distinct from the part library, so all your different resistors in the part library could call up a common resistor symbol and an appropriate PCB footprint and only need one copy of each instead of one each per resistor. However, KiCAD doesn’t do that at the moment. (Which I guess is one of my pet peeves, to refer back to the opening topic.)