Away with the libraries!

In my opinion, libraries is the most confusing part of KiCad. I personally would prefer that there were no libraries at all. Put all the footprints in one place and have a decent search engine that would pull up all the footprints that fit the wildcard search parameter. I don’t care if SOT-323 is in resistor library or in diode or in whatever. You might have to have several SOT-323 for differently numbered pins or GDS pins etc., but I don’t mind if all of them pop-up in the search result. Likewise, I don’t care if SMD0402 is a resistor or a capacitor. I don’t need to go through every single library to find them. Can’t tell you how many times I tried to find a certain footprint in all the libraries and finally gave up and crated a new one from scratch, just to find, later on, that it existed in some library that was questionably named. Another of my favorite ones is choosing a footprint from a library and then a different one with the same name ends up on the board because that library was ahead of the one I used in the list of all the libraries.

I can’t reproduce the footprint issue.

May be it was a schematic symbol library, I don’t remember now. All it took to solve was to reorder libraries. My point however remains, what is the point of increasing entropy for no reason?

I don’t see the need for more than one library for footprints (modules) either. Up until today I have not figured how to manipulate the name of a module. I try to give meaningful names to the modules, f.i. all connectors start with CON_. However If you make an error, f.i. entering CONN_ instead, you are left with a dud. There seems to be no way to delete modules or modify their names. The solution is to create a new module, which is superfluous and clutters an otherwise (relatively) clean library.

It was most likely the schematic editor. It still suffers from the “order of libraries” issue. This should go away once eeschema gets upgraded to handle libraries in a similar way as the layout editor, meaning that assignments are made based on symbol + library name.

Are you still working with the old release?

With the new release, getting rid of a module / footprint in a library (just a folder) is easily done by just deleting the file in question.

Just recently I upgraded! So I’m not familiar with all the great new features. Thanks much for the hint!

It is interesting that nobody can provide any logical reason for having multiple separate libraries.

I’m with you: I really just want a big bag of parts and a good search engine.

Every CAD package I’ve tried has lousy component and footprint management. They should be using relational databases. I’ve had a long-time fantasy of forking KiCad and changing the libraries into a database.

But I’ll probably never get to it. :frowning:

1 Like

I agree. KiCad is a great program but the libraries system is confusing. I have installed winbuild version 3.4 few months ago on a private computer at home and now I have installed new copy at work and pulled the project from git and some components were missing in the schematic. I’ve lost few hours trying to update libraries but finally gave up. I remember changing some config txt files in home installation because I was creating a lot of new components for the project that were not included in the GitHub libraries and now i forgot what exactly did I do…
Apart of this I still think KiCad is a great program and would gladly contribute to it. I’ve just installed Altium CircuitMaker and will create small project and make a batch of PCBs in it just to compare it… Been using Altium and Protel before…

So — as someone who has recently tried to tackle the “footprint issue” (I’m building — I don’t think this is something that can be done.

The problem is that there aren’t really any standards for footprints. Sure, some simple footprints are standardized, but in most cases it’s a free-for-all. Every manufacturer has their own set of footprints, and even then those aren’t always standardized or respected.

Take an example: TPS40210DGQ from Texas Instruments. Web page says “10MSOP-PowerPAD/10VSON”. Datasheet page 1 says “HVSSOP (10)”. If you go towards the end of the datasheet, you will find “Packaging Information” (“MSOP-PowerPad”) and the landing pattern for “DGQ (S-PDSO-G10)”, which is actually the only authoritative source. The chip one-line description the distributors use will usually say “10-MSOP-PowerPAD”, some people will say “MSOP-10”.

In general, none of these markings help you at all. It is quite likely that the “DGQ” landing pattern will be different from every other chip on the market. It can actually be a real problem when you use a footprint that you think is the one you need (because of the name) and later on discover that it lacks a PowerPad connection, or that the size of the PowerPad landing is wrong and you can’t actually solder the thing later on.

For PartsBox, I decided not to try to standardize footprints. I don’t think this is possible. Footprints are therefore stored as strings (to get the general idea), and the actual landing pattern is something you need to get from the datasheet, or from a library.

Back to KiCad: I don’t think you can reasonably expect to find a working footprint just by its name. You really need to have a footprint for the specific part that you intend to use (simple resistor/capacitor footprints being pretty much the only exceptions).

[quote=“Andy_P, post:13, topic:952”]
One logical reason: for the purposes of sharing libraries
[/quote] What exactly do you mean by “sharing”? Save it on floppy disk, mail it to the user?

If you have a “big bucket” of symbols and footprints somewhere online (GitHub) you just run a search for the parts you need import them to your local “big bucket” (user library located on your hard drive) and the whole sharing is done. How about that for sharing?

Easier for whom? Did you notice anybody here (or anywhere else for that matter) mention that libraries in KiCad are really easy to deal with? And just a side note - KiCad libraries can’t really claim having obvious names.

If it contains components worthy to be shared with everybody you put them into the “big bucket” online and whoever needs them will find them with the search engine. This way you don’t have to ask yourself the question: “which library is it in?” Why would you even want to ask that question? All components have standardized names (symbols and footprints). If you receive several returns on your search parameters I trust you will be able to select what you are looking for much easier than trudging trough oh-so-many-confusing libraries

Why is that? It is like saying you can’t find an exact part by knowing its part number. When I go to buy a component it’s got its standard footprint listed right there. Sometimes it might have several different names for the same footprint, which doesn’t complicate your search at all.

If you prefer a custom footprint instead of the standard one - no problem. You make one and put it in your local “big bucket”. When you can pull up all available footprints with that particular name in a matter of seconds, deciding whether to make one from scratch gets pretty easy.

My point was that the footprint name isn’t like a part number — you can’t expect it to be unique and precise.

To extend the example I provided — I just googled for “msop-10 footprint”, and some of the resulting footprints have thermal pads and some do not. You might think the TPS40210DGQ has an MSOP-10 footprint, but if you search google and look at the first result (, you will notice that the footprint is quite different (not just because of the thermal pad). It might work, or it might not work.

That’s not exactly correct. Allow me to demonstrate.

That’s where you made a mistake. TPS40210DGQ comes only in one package - HVSSOP (10). If you do a search for this footprint you will get an exact match for what manufacturer intended. Now this is a “proprietary” footprint which the distributor suggests can be substituted with 10-MSOP. Wether it is appropriate is up to you to decide. So when you search for a footprint you can either do your search for HVSSOP or MSOP and then based on your results select what you need. Sometimes you can find slight variations in a standard footprint suggested by the manufacturer. That’s doesn’t mean that you can’t use a standard one from the library, because technically it is the same thing. It is like buying a charging cable for your phone, you can buy OEM or aftermarket but both will work the same (unless it is made in some shady place in China :slight_smile: At the end of the day it is entirely up to you if you want to make your own footprint or use a standard one but it is nice to have options.

All that aside, that’s not really the main theme of the discussion here. If you believe that you can’t use standard footprints, that’s fine, you can make every footprint from scratch. Some of us don’t have that much time and are fine with using the standard ones. What I wanted to discuss here is how those standard ones are organized so you can actually find them when you need it.

I sent a patch for searching for footprints in cvpcb but it got discarded with no reason. Theres even a video of it in action somewhere in this forum.

The Part Manager would be a very big project (anyone interested in funding development via kickstarter or similar?) At the moment, except for the developers at CERN who are always working hard to get funding, devs are unpaid and work on the software whenever they can. I started work on the IGES exporter in November last year and I don’t expect it to be ready until the end of this year. In contrast a decent parts manager would require at least 12 months full time work; it would need to be able to display schematic symbols and footprints and allow editing of the pins; it would be even better if there were also a symbol editor. The software would need to be able to create the mapping to various 3D models, create and manage the in-house part numbering scheme, and manage the suppliers list and BOM parsing to produce a usable BOM. So in my spare time I would estimate 3 years to create a parts manager; in contrast I estimate 2 years to implement a STEP exporter.

It is kind of like trying to build and paper airplane and adopting Boeing manufacturing process for that :slight_smile: This approach would be great if KiCad had a comprehensive and constantly updated set of libraries… and a functioning search engine. However that’s not realistic. So the best we can hope fore is having some generic schematic symbols and some basic footprints. The rest we will make ourselves. So in KiCad case this (or really any) level of granularity is redundant and confusing. I don’t see a reason for taking those basic components and stuffing them in various mislabeled and confusing libraries so you never can find it when you need one.

True, but that’s not the whole truth. Although I have my own libraries, I wouldn’t mind utilizing existing components from the default libraries ones in a while, if I can find them. That’s a big “IF” at the moment.

Understood. However, don’t you think that meanwhile simple reorganizing of the libraries into a single level database would make user experience so much easier? Doesn’t have to be fancy, just easy to use. We can look up and edit symbols and footprints the old way for now. Baby steps…