New component or part format with embedded or linked symbol, footprint and 3d files
Description
Jon suggested in #6918 (closed) that I would take this into a new issue, so here it is.
I have also a much more complex and ambitious proposition for library files.
Create a new library Component format which utilizes the old formats and could be used optionally. The old formats would still be the standard and the base for the new format.
Each Component file would have a description file and optional symbol file, footprint file(s) and 3D file(s). Symbol, fp and 3D could be links to external files or embedded files. The description file would create the connection with the symbol and the footprint(s), describing also the pin connections. This way one could have the official KiCad libraries and create atomic libraries based on them without copying any data. It would appease those who think that in real EDA software libraries must be symbol and footprint coupled tightly together into one file as one component. It would allow having only one actual symbol file for several components (contrary to the current atomic approach where each atomic component is a distinct symbol file). Yet it would allow the current libraries continued as they are.
Each Component file could be a simple tar file. (Yes I love the simple concept of tar file.)
Now, if someone wants to have the 3D model embedded into the footprint, they could create a new library with Component files with embedded footprint and 3D model(s). Old style symbols could have those Component files assigned as footprint links, so it wouldn't break existing schematics, either. The schematic and board files would continue as before; the symbols, footprints and 3D files would be taken out from the component files when added to the schematic or the board.
KiCad Version
Version: (5.99.0-8122-g2b9f7d6150), debug build
Libraries:
wxWidgets 3.0.4
libcurl/7.68.0 OpenSSL/1.1.1f zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh/0.9.3/openssl/zlib nghttp2/1.40.0 librtmp/2.3
Platform: Linux 5.4.0-58-generic x86_64, 64 bit, Little endian, wxGTK, KDE, x11
Build Info:
Date: Jan 4 2021 04:05:15
wxWidgets: 3.0.4 (wchar_t,wx containers,compatible with 2.8) GTK+ 3.24
Boost: 1.71.0
OCE: 6.9.1
Curl: 7.68.0
Compiler: GCC 9.3.0 with C++ ABI 1013
Build settings:
KICAD_SCRIPTING=ON
KICAD_SCRIPTING_MODULES=ON
KICAD_SCRIPTING_PYTHON3=ON
KICAD_SCRIPTING_WXPYTHON=ON
KICAD_SCRIPTING_WXPYTHON_PHOENIX=ON
KICAD_SCRIPTING_ACTION_MENU=ON
KICAD_USE_OCE=ON
KICAD_SPICE=OFF
KICAD_STDLIB_DEBUG=OFF
KICAD_STDLIB_LIGHT_DEBUG=OFF
KICAD_SANITIZE=OFF