Here a few links that show what everything will look like in future:
For symbol libs reorganization (This is a massive rearrangement. Can not be done during a minor release.)
For connector footprints (Can not be done if the current one repo per lib policy governed by the github plugin is used.)
Our effort in getting the developers to kill the github plugin
As you can see a lot of this will get better in v5. (Some of it depends on the developers playing along.)
If the developers insist on keeping the current github plugin we really can’t do a massive reorganization of the footprint libs. Not now and not in the future it is way too much work for us librarians to deal with that many repos. (It is also confusing for users and for contributors.)
I guess finding data is a binary thing, yet you can be very close to something without realising it. If you had looked in Battery_Holders, you would have found what you want, and you would be posting here THANKING the library contributors for their voluntary work - oh wait, no one BOTHERS to do that.
Yet again, it seems lack of knowledge and effort on the user’s part leads to complaint about other’s “lack of effort”. It really is a theme here. Of course, KiCad libraries are deficient, that is OBVIOUS. There are several MILLION parts on Digikey, and a HANDFUL of people taking the time to contribute to the libraries.
It seems that a century or so of industrial production has turned us all into passive consumers, always expecting someone else to do the work for them, and alien to the idea of contributing to the community without reward.
ON EDIT: Wrong @ … whoops…
There were about 10 others in the room with me, and I scrolled from the very beginning, going slower over libraries that started with the letter b. Found it when I got home, same computer. Have no idea how it could not be found earlier.
I like KiCad, I think it is on it’s way to being a fantastic tool. It was a major decision for me to decide on a primary EDA package a while back when Eagle was actually a more refined product. However, that does not mean that it a perfectly polished machine.
It also appears to me that KiCad is at another important stage of it’s development cycle. With that possibly being the case, sharing a review of a user experience can point out to other long time users where there is difficulty for new users.
Digikey paid the bounty for the KiCad domain. Figured this was reason enough to justify to have a footprint for a part that could be ordered from them.
If one walks into the local book library, every book is intended to be placed on the shelf in a specific order. It is a factual statement that the current KiCad libraries are all a bit of a mess with parts flung all over.
I’m willing to take a small amount of time to help if I can.
Sometimes I just grep the directory for keys when I’m looking for something. What was weird was I once got a hit only to find out the part wasn’t there, just a link to the PDF for some reason.
So when you upgrade, where do the files that you created go?
These sorts of issue should not be all that difficult to fix.
There are an influx of new members, and those members should see a more refined new experience.
Why do you think it is difficult to fix?
One can simply open the symbol that does not fit the component one wants to use, copy it into a personal lib and change it such that it fits and be done with it. (At least under linux one can not save components into the system libs. Which is a good thing.)
If the component in the official lib has a bug then it might be a nice gesture to create a pull request and give others a better library.
In my opinion it is a matter of attention to the issue of detail.
In my opinion, all developers should have to install KiCad on a new OS install , every now and again, and see what the current experience is like to create a manufacture-able Pcb with KiCad “out of the box”.
My post is not a complaint. KiCad works fine for me for the way I normally use it.
Putting some polish on the things that seem to trip up newcomers might not be a waste of time.
The library problems that you are discussing have a name. It is “Big Data”. The small data solutions that you have been using are breaking down under a growing load and you need to apply some big data solutions. Reworking your small data solutions will only give you a temporary fix.
Let me give you some hints.
The way that you present your libraries looks and acts a lot like the original home page for Yahoo. You need to make it look and act like google. You need a search engine.
You need to assign a unique name to each and every component in your library. IEEE-1685 (IP-Xact) shows you how to do this.
IC designers ran into this same situation 20 years ago and we tried all the same things that you are doing before we figured it out. Learn from our mistakes.
John Eaton
Footprint naming convention for KiCad v5 closely alinged to IPC standards (Massive reorganizations can not be done in a minor release!)
Symbol naming convention for Kicad v5. (Some of our wishes need the new lib format. This means we need to wait for v6 until we can have a clean solution.)
And of course the links i already posted above:
For symbol libs reorganization (This is a massive rearrangement. Can not be done during a minor release.)
For connector footprints (Can not be done as long as the current one repo per lib policy governed by the github plugin is used.)
IP-Xact uses four fields to hold a VLNV. This includes a unique vendor name, a library assigned by that vendor, a component name assigned by that librarian and a version assigned by that component.
If you find a mistake and re-release something then you bump up the version number. Simply fixing the bug will break any design that used that part by compensating for the bug. Designers can then choose to replace the component with the new version.
The vendor maintains the master copy and you can have any number of mirrors for that component. Mirrors are kept in sync with changes made to the master.
John Eaton
How do you handle variations that are not provided by the vendor such as hand solder, wave solder, oven solder? There are some allowances that can be made for bigger design rules vs smaller feature sizes.
I have a proposal I can dig up for library- and user-supplied tags that could ease searching, but I think will require some updates to library organization.
You might want to checkout www.librecores.org. They are creating a data base for any digital iP that is available on the internet. It can be searched and used to download repos to your machine. Kicad could do something similar for all of your libraries as well as user contributed parts.
John Eaton
Not only are the libraries a bit of a mess but I’ve tried to contribute part symbols and footprints and the process is extremely painful. I’m using these on boards, they’ve been tested, pass the klc checks etc and it takes several messages to get a response from a reviewer.
I have several I’d still like to contribute but I’m still waiting on the first ones to be applied.
Imo there has to be a way to better crowd source parts for libraries and let the users help validate them.
As far as i can tell the hold up is future proofing the lib. (By deciding on a good naming convention.)
Your bad luck is that you got your PR started after we decided on cleaning up all footprint and symbol libs for the v5 release. Another bad luck is that there is no similar footprint that can be taken as an example. In addition you submitted it while @SchrodingersGat was on holiday and while i was sidetracked by another project of mine.
I fear it has gotten forgotten by now. I will reactivate it for you
(Yes it helps to poke us from time to time. Sometimes we are tired when we look at stuff. I think the overall state is getting better. At the start of this year we had more than 250 open pull requests now there are only 150. And i also think our response time is trending down.)
Edit: Ok i read into the discussion a bit more and i now understand why it has dragged out so long. It will take me some time till i get a good naming scheme i fear. (This connector made me realize that my current naming scheme for connectors has some major flaws.)
It is late where i live. I will get back to this first thing tomorrow morning.
Yep. That’s the one. As you’ve mentioned there are hundreds of other pull requests like mine sitting on github and I can assure you that it is causing many people to give up on contributing. Klc is great but its simply too difficult to get parts into the library.
Imo it would be better to get more parts in more quickly and somehow flag for quality and steer naming and conventions vs. gating each submission until everything is perfect.
I’m more a quality trumps quantity guy. A lib will always be judged by it’s worst elements.
Maybe some additional information:
It took me about half of an hour to review your contribution. (Excluding the time for finding a good naming convention.)
Some more complex contributions take a few hours to review.
I check not only if a part fulfills the KLC (That takes 10 minutes or so)
Most of my time is used to check if all dimensions are correct. (Fab layer, Silk, Courtyard, Keepouts, …) I use @maui’s KiCad Stepup tools for that.
I’d be interested in help automate that library checking process with python scripts. Do you see any part of the checking process that could be automated?
Edit to add:
For example:
Layers, on grid, spacings, names, all elements included, cross checking between symbol and footprint, summary information that would be manually checked, etc.
The things that can be checked via script are mostly checked with scripts.
Reading a datasheet and understanding what the requirements are is still something where humans are better.
But if you are interested have a look at the kicad-library-utils repo. It holds our KLC checking scripts. Maybe you have an idea how we can check even more.
Would having an intermediate step of pulling stuff into an ‘unverified’ area make sense? They become available, with a caveat that really applies to all symbols of ‘use at your own risk’, and regular users could recommend verification on ones they used and found to work out of that pool?
First thing I do when I don’t find a part is Google it and I have found parts and libraries on Github that I have used ‘as is’. This just makes it a little easier to find.