KLC: policy on obsolete symbols needed


I’m not sure where issues regarding KLC should go since it moved to the website.

There are a lot of symbols for parts in the official libraries that are not just obsolete, even their ghosts have settled down, raised kids and retired to Florida. Finding info or datasheets on these can be impossible, so updating the doc fields to the latest KLC requirements is also impossible. Since the parts can no longer be ordered, they are only of interest to people playing with “historic” kit. I also found several stupid errors in the pin outs, I suspect no one ever actually used the parts…

I think we should have an obsolescence policy, otherwise we end up maintaining more and more obsolete parts, as well as slowing performance for users. I don’t mind keeping them in the libs, but they should be marked “obsolete, no longer maintained, KLC exempt” or something like that.


Good idea in general.

I am not really sure how to mark them. We can rename them and add _obsolete as a suffix. Maybe even move them to different libs. (These libs could then be under a directory called obsolete)

Or we can add it to the description.

I think any of the main repos would be ok. I would suggest stuff that only affects symbols or footprints as an issue over at their respective repos. General issues can be reported at either repo. I don’t think the kicad-webside repo would be the place to put discussions about the KLC.

This forum is another place where we can discuss it. Especially if you think input from the community is required.


I think under an “obsolete” directory is a good idea.

  1. They won’t be checked by KLC
  2. They won’t be added to sym-lib-table by default
  3. They can still be added to user lib table if necessary


Some KiCad users are cloning ancient pcbs to repair damaged boards in antique equipment. They plan to recycle the original components


I don’t think I’m especially nostalgic - “nostalgia” just ain’t what it used to be in the old days - but the libraries surely contain a lot of relevant information regarding those obsolete parts. Somewhere I once heard that the First Rule of hardware hacking is “Keep all of the pieces”. It would be disappointing to have that information simply vanish.



This subject has already been discussed with regards to the Digi-Key Libraries:


If the KiCad libs are going to follow suit then they should probably do so in a consistent manner.

I don’t think anyone is talking about the information vanishing, just being appropriately identified and possibly moved to a non-mainstream library.


Thanks for your replies!

Renaming and moving symbols will tend to break legacy schematics, however there doesn’t seem to be a way to exclude symbols by keyword in the component search.

Therefore I propose :

  1. Initially, a symbol for a component that appears to be obsolete* has “obsolete” added to the description
  2. Obsolete symbols are subsequently moved to a library with the same name and in a sub-directory named “obsolete” (similar to the current legacy folder). Therefore might be “CPLD_Altera.lib” and “obsolete/CPLD_Altera.lib”. Users can add the obsolete libs to their library table using a suitable ID.

Step 2 could be performed by a script run periodically (I will volunteer to write it :slight_smile: ).

Obsolescence can be judged by the following factors:

  1. Part declared obsolete by manufacturer (no longer manufactured)
  2. No stock at any supplier

It is not necessary to immediately purge symbols as soon as they become obsolete, but this process provides a way to weed out parts that are 20 years old from the main libraries.


My 2 cents:

Rule 2 would be difficult to establish, especially when there are repair shops stocking old parts to be able to repair old stuff.
I would agree that for many relatively modern parts, this is not a big issue. However, there are many specialized repair shops stocking parts to be able to continue working with tube equipment and parts that are well over 20 years old.

Dropping rule 2 is probably safer. Just mark the part as obsolete when it is no longer manufactured.

And then there are other companies that continue to manufacture the parts…
I propose a new rule 2: There are no other manufacturers for the part.


Already hard to prove and then even when true, someone else comes along and reintroduces it. :wink:


The point of rule 2 isn’t that the part is totally unavailable but rather has limited availability. A part stocked by a few repair shops is not a part you want to use in a new design.

There is nothing “unsafe” about marking a part obsolete, it is still available for use although it might be in a different library.


“Rule” 2 is a bit fuzzy, I guess what I was trying to capture was that obsolete doesn’t necessarily coincide with no stock available to purchase. I was thinking more of major suppliers, Digi-Key, Mouser, Newark etc.

I’m currently reviewing Xilinx CPLD and FPGA libraries, for some of the older parts there it’s hard to tell they even existed, since Xilinx have the habit of replacing old parts with very similar numbers. In fact, the only place I found datasheets for the old parts was in old versions of KiCad!

The important thing for me is that there is a clear process, rather than exactly what the criteria for obsolescence is. They were really guidelines rather than hard and fast rules.

No one has raised objection to the overall process, so I will submit it for inclusion in the KLC.


Someone, I think Digi-Key already has a ‘not for new designs’ designator. Would this be enough?


For some reason i get the feeling that a lot of people try to align kicad (or at least the lib) to one particular distributor (or a small subset of all possible distributors). I am not really sure i like that idea.

Lets keep distributors out of the loop here and go on the manufacturer definitions alone plus a defined grace period.


I believe that designation is passed on from the manufacturer.


[quote=“Rene_Poschl, post:13, topic:9260”]
Lets keep distributors out of the loop here and go on the manufacturer definitions alone plus a defined grace period. [/quote]
Yeah, key off the manufacturers, not the distributors. I don’t think there are firm definitions for terms like “Obsolete”, “Discontinued”, “Not Recommended for New Designs” (“NRND”, or “NR”), “End of Life”, “Final Buy”, etc. I have even seen distributor designations that sound like, “This part is available, but not from us.” (I don’t recall the exact wording).

If the library maintainers make a good-faith determination that a part has not been manufactured by a primary or secondary manufacturer in the last, say, 6 months, or the last known manufacturer has announced termination of manufacturing within the next six months, then mark the part accordingly and move it to a dusty folder at the back of the library.



There was a similar question recently in regards of the libraries created and maintained by Digikey. Whatever you do, I would try to synchronize your approach, so you don’t end up with confusing notations and policies.


Yes, that was already mentioned. There was no definite proposal made although the approach is similar :

I think we’re going to aim for appending _obosolete or _nrnd or _nonstock to any applicable parts according to its status on DK’s website. If I can figure out a low overhead way of keeping track of obsolete dates, we may roll off parts into an obsolete lib after a certain time frame so the parts can live somewhere and not be completely lost to the annals of history.

I don’t like the idea of encoding a status into the part name, and it seems unnecessary if the part is moved to a different library. Additionally, I think renaming part names is more work for the user than just adding a library to the table.


Sure, that will get rid of ambiguity! There are less then a dozen of big distributors and several thousand manufacturers! Every manufacturer, for the most part, has its own definitions.


Unfortunately, manufacturers don’t necessarily use the term obsolete, or be consistent about how they use it.

I looked up the policy for NXP as a sample, they define :

Status refers to product availability and is tied to Product Life Cycle (PLC) codes. Status notations found on this website include:

Introduction Pending
Not Recommended for New Designs
End of Life
No Longer Manufactured

Available = Active. NRND is “mature, approaching EOL, but still manufactured”. EOL means manufacturing will end in 2 years (specific to NXP). “No longer manufactured” is self evident, but at that point there may or may not still be stock at suppliers.

So we are still going to have to do some subjective interpretation. For NXP, we could say obsolete means “no longer manufactured” plus 6 months. As I said previously, we don’t need to immediately purge parts when some arbitrary period has passed, it’s just the part becomes a candidate for “retirement”.


I would also be wary of making this a hard rule. An active or new part may show “No Stock” across all distributors for greater than 12 months. I have had a couple of cases of this in the past.

Case 1: An active part that shows no stock, ends up having 8 to 10 month lead time (or worse!) due to supplier issues.

Case 2: An active part (like certain FPGAs variations) that show no stock, but can be ordered on request.

I recently did a board build and found no stock anyway of a Panasonic capacitor. Apparently the economy has gotten better, it was a common part, and there was a run on the part. Now reporting a 14 Month lead time.

Very good discussion. Also, I recently downloaded the latest nightly and have been impressed with the library updates. In the past, I was always tweaking footprints and adding to the Fab layer. The latest updates look great. Keep up the good work!