I just designed a PCB and sent the data to Eurocircuits for PCB assembly. Their importer complained that one footprint was wrong - it was the SOT-23-5, which is different to the DBV package TI specifies for their LP2985. So I made a modified version and saved it as SOT-23-5-Texas-DBV in my local project library.
So far no problems.
Now the obvious thing to happen is of course: Next time I use a LP2985 again, I’ll have forgotten that I made this correction and will run into it again. I mentioned this SOT-23-5 only as example; it’s mostly cosmetic and not really relevant for prototyping.
What I am wondering: How could one handle local footprint (or schematic symbol) changes to avoid this situation? Maybe store them centrally (visible for colleagues as well)? Make modified schematic symbols as well? Looking for ideas here.
The most natural solution is to create your own libraries. Check out the FAQ articles about Managing your projects, Library, Footprints and Symbols: (Start Here) Frequently Asked Questions.
The only extra thing I wonder about is the best way to share a “live” library with colleagues. If you set up a library on a shared drive and point a COMPANY_KICAD_LIB variable at it, what happens if multiple people try to edit the shared library at the same time? My guess is that it would be better to put the shared library somewhere local and share it using Git (or some other version control system). That way you’re always working from a stable library directory.
Using Git gives you the additional benefit that you have a log of all changes to the shared library. And if you want to get really fancy, you can include that shared library inside your project directory as a Git submodule. That means that the exact version of the shared library that’s being used for any version of your project is recorded, and you (should) never get bitten by someone updating a symbol or footprint in your shared library without you explicitly bringing it into your project.
It is a good question, but there are as many solutions (workflows) as there are people using EDA tools.
There are a number of different factors affecting this. From the top of my head (but I bet there are more of them):
First, there is a difference if we are talking about one man band or a team solution?
Then it is a question what is the state of your current setup as it defines how maleable is to change.
How much of the process overhead are you willing to tolerate.
We (a small team) currently base our libraries upon KiCad official libraries and use git for this. So we are already taking advantage as @ian-ross alluded. We also use git and a git server to version and store all of our designs. As for your problem we are just starting to consider if upon opening a merge(pull) request for library asset (symbol or footprint) the CI would scan all of our designs on the server and produce a list of projects using this asset. Then it is up to a human operator to act jupon this information.
This is doable, but it is a custom solution, which would need to be set up and would also need to be maintained. So at the moment we are not ready to bite the bullet seting up and maintaining such a system.
Using just a single machine and Linux, every time KiCAD gets updated, the footprints and symbols and everything else get updated, overwriting the original files. Since I change every single footprint to my own liking, I must move each footprint that I use to a personal directory to be able to save them without fear of being overwritten. In addition, I also must seek out and copy each of the 3d files to another personal directory and then link them together for each part. Historically, what I also do, is I will periodically export and archive each board footprints into a new library and then laboriously edit each part individually in the board to be linked to the new exported library. I only keep the footprints that I actually use on the local drive. Ive mentioned it in another thread, but I feel that it would make much better sense to pull individual footprints from a larger source and have them automatically saved and used with a local library. At this point, it is rare that I would get a new footprint from the provided libraries, and when I do, I usually do a web search for that individual footprint and deal with it manually, copy paste edit etc… My point being is that when you become experienced enough, the normal way of using the supplied libraries no longer works for me. It’s like the road has run out and I am driving on gravel.
You have the option of not installing the libraries, no? (I am on a mac and i can install app and libs individually). I never install the official libs as i only use my own libraries. I either make my own symbols and footprints or copy from he official libs (which i get from gitlabs) as needed. What you do with moving and updating seems just not needed.
I do much the same
before I get a PCB made, I will edit the footprints and globally edit the silkscreen so that all parts have the same preferred line thickness and cohesion in appearances. Once I do this, I like to save that as my footprint library and then use it. Even if KiCAD had the “Archive footprints into library” with the addition of “And use for current project”, it would make my condition easier. This would help for housecleaning libraries as well. There are a ton of footprints that I no longer use, and this method that i use creates a new library minus the parts that I am no longer using. What I have to do now is either edit the board file with a text editor to change to the new created library, or edit each part using the change footprint dialog. Sometimes it’s not a big deal, but other times when I pull a part from another library, there is that 90% of parts from the same library and then I must know which ones aren’t from that lib. If there was a simple “Archive as new and use” or “Archive in existing and use” options that would be pretty much good for me. Like I said, I enjoy being able to globally edit things for appearances like text sizes etc… and then use these parts for the future. I have small boards with smaller texts etc and larger boards with larger graphics etc… So I really have like 2 or 3 libraries total in use at any given time.
Thanks to everyone for your ideas, particularly @Rene_Poschl for the extensive FAQ!
I like the git approach. Maybe we could use this here, a number of people use KiCad and software is on git already.
However it is not trivial to find a workflow that overall saves time.
Using git especially with pull requests and reviews can significantly reduce the risk of typical errors (like exchanged pin numbers from misreading top/bottom view or too small pads). This of course requires your team to be diligent during a review and really check the work of others.
But even in software development teams there is often a significant lack in knowledge about git. Which means you will most likely need to first train your team for the proper use of git. And remember if you start to introduce it highlight the benefits as your team members might otherwise feel this is just done to make their life harder which will lead to friction inside the team (They might even be offended at the idea that somebody else should check their work).