that may be true for symbols. what about footprints. What if you restyle or fix a footprint that is in use on many compoentns.
let's say you are going to alter your 0603 footprtin from nominal to least. ...
that is whay the professional packages use a database.
footprints, symbols and parts. parts link to footprints and symbols and other data.
Cadence goes a step further. they have approved pad stacks. change a pad stack and all associated footprints update ! which causes all associated components to update and triggers board reviews on all affected projects ... ( something the altium vault can do as well.
proper design datamanagement is the most critical aspect of product design. screw up your library and even the best designed schematic and board will be useless if the parts don;t fit ...
Yes, everyone who does this for a living is well aware that a fucked-up library results in fucked-up boards and money wasted. Not only in the physical design with footprints and such, but also in what purchasing orders and what gets soldered to the boards.
But in your reply, you mentioned two expensive CAD packages, Altium and Cadence, both published by large companies with a lot of programmers on staff, and you're comparing their features to an open-source package with a dozen core developers.
I have no doubt that the Kicad developers would not say no to anyone offering to spec out and implement a full-up library system underpinned by a proper relational database. Nobody is arguing that the database system is a bad idea. I agree that it's the way to go.
But ... has anyone stepped up to offer to do all of that work? No. The silence is deafening.
It's the old saying, everyone talks about the weather but nobody does anything about it.
as is so common in the open source world : they are either
- all focussed on the eye candy. (example : 32 different desktop managers)
- stuck in their holy wars between VI and Emacs
- glued to their command line
as opposed to first understanding the problem.
The foundation of a cad system is data management. And that begins by a library system. Not by creating an glitzy user interface to draw lines form point a to point b.
I can spec out a system , but i am not a programmer. Don't look at me to write code. And the kicad programmers are clearly not PCB designers.
And THAT is the problem with all these open source things. The people who have to write the code have never gone through the pain of doing a 'real' pcb layout ( i'm not talking a double sided arduino style board where nothing matters ... but a real board taken fomr concept all the way to production hand-off including all documentation, life cycle , feedback management cradle to grave ...
The spec for a working system is not that hard
- have a way to edit and store symbols
- have a way to edit and store footprint
- have a component management system that allows you to tie one or more symbols to one or more footprints and add 'meta' data to create a 'component'. Meta data is textual data , files ( datasheets for example ). Meta data can also be links to external databases (through SQL , or through simple CSV files for example.) Meta data can contain anything you want and must allow for 'forking' of fields. for example the field 'Manufacturer' and Manufacturer part number' can have multiple entries
Same for field 'supplier'. I buy yageo form digikey and mouer and vishay from future electronics. so my meta data must allow for that. When bom production comes it must properly present that data.
Reason for multiple symbols per component : placement of pins. microcontrollers for example. have same part but with different pinplacements. Different footprints : least,nominal,largest)
- all of the above version controlled and journalled so i can roll/unroll and inspect revisions. the entire history needs to be maintained. Disk space is cheap. If a textual storage system (xml, json) is used it can be heavily compressed.
- all of it managed though a GUI, drag'n'drop copy paste.
- if you edit a symbol or footprint : notification of what is impacted where and push forward so parts update.
- symbols footprint and components have lifecycle levels : new, prototype, approved , eol , replaced. new parts can not be used in a design. they are being built. parts flagged as prototype cannot go in release builds. only approved parts can go to production. eol parts should no longer be placed. if a part has a replacement assigned : when trying to place such a part you get the replacement instead.
This master database should be stored in a concurrent multi-user format ( multiple people accessing the data pool at once without contention risk ) and using user permissions ( who can modify what) , Preferably without requiring a 'server' (a custom machine with dedicated application. should be able to run on a LAMP or WAMP setup) . It would be nice if all that stuff can be done through a SOAP connection and reside on a web server somewhere. Ideal from a collaboration perspective. you can have your own running on your own box, on a company box or on cloud space for the entire community
capability of connecting to more than one such source simultaneously and possibility to transfer data easily between systems so i can import or share between data pools easily.
The Cad editors pull from the component management system.
whenever a project is opened : rescan all instances of parts against the master database and approve/reject import changes. check for new,prototype, eol and replacements and provide detailed reports with approve/reject for each category.
That is your component front end. This can be completely split off from the cad system and even be a separate runtime, but there should be links. if i right click on a part in my schematic editor it should be able to show me all data , or open the correct editor directly
Next would be a similar setup but for projects. That would manage the files , output datasets etcetera. Same concept : manage revisions , manage output creation ( that really should be a one click thing... you set up a template once and forget about it. the tool should be smart enough to know what layers , and what all is needed )