← Back to team overview

kicad-developers team mailing list archive

Ideas for a lightweight KiCad PDM

 

Hi

I try to figure out how it would be possible to create a central
storage for symbols, footprints and other design data. With central I
mean something like a design data server, where it is possible to
assign workflows with sign-offs, make proper versioning, assign order
numbers and define second sources. (PDM ultra light for KiCad).

I currently work on some projects where we need to be sure that each
change on current products gets a proper review and documentation.
This always starts with a "Change Request", followed by a "Change
Order". To make sure everything is right, we currently use a very
expensive EDA suite with even more expensive PDM[2] software. Even if
this seems overkill for private projects, a little more lighter
version of this workflow makes sens for every company and even for
some bigger private projects. I helps to grantees some quality and
data integrity.

After some analysis how KiCad does things I see some little problems.
The first of them is described in the following lines:

Currently the footprint and soon[1] symbols will be assigned with a
"library nickname"/"symbol name" key. This is also true for the 3D
model inside the  footprint file. At the moment this is the only
reference to the library. If the component in the local file storage
changes, the symbol/footprint gets changed immediately in the project
and that is exactly what I want to avoid. To make a server based
library, each symbol or footprint would need a unique identifier and
some way to define the storage location. Say instead of define
somelibrary/symbol1 (implicit local storage) define
srv://remote1/16fd2706-8baf-433b-82eb-8c7fada847da (explicit remote
storage) where remote1 is a configured remote storage location in the
app. The fully qualified address of the symbol would then be something
like https://myserver.local/lib/uuid/16fd2706-8baf-433b-82eb-8c7fada847da

A second possibility would be to introduce a new file (symbol.origin)
in the project folder to keep track of every remote stored file.

symbol.orign:
somelibrary/symbol1=remote1/16fd2706-8baf-433b-82eb-8c7fada847da
somelibrary/footprint2=remote1/23fd2706-3baf-223b-82eb-ef7fada847ac

After retrival from the central storage, I would save the symbol as
libs/somelibrary/symbol1 locally in the project tree. This would have
almost no impact on the KiCad code I think. A command can be
implemented to verifiy data integrity by getting file hashes of each
component from the central server and checking if everything is in
sync. A second command to check if a newer version of the symbol is
available with the option to update it. To make this work, KiCad would
need to track the origin of every 3D model, symbol, footprint...

I would appreciate if some one has some input on this topic.

  [1] https://lists.launchpad.net/kicad-developers/msg26901.html
  [2] https://en.wikipedia.org/wiki/Product_data_management

Regards
Kevin


Follow ups