← Back to team overview

kicad-developers team mailing list archive

Why we chose to put libraries in directories?


Hi Devs,

A (probably) dumb question of a programmer who tried to put himself in
the user's shoes:

- KiCad libraries (.pretty) are directories full of tiny files.
- Other libraries (Eagle, etc.) are just files.
- The Library Table dialog must support both, but there's no single
dialog that allows selecting both files and directories (or even faking
directories to look as files).
- [update] wxDirDialog seems to support the above ^^, but it doesn't
look like a standard file chooser dialog. This is confusing to users.
- Why do footprint libraries have the extension ".pretty"? What does it
convey to the user (it's a nice codename for programmers, though)?.
- Why the PROJECT class is compiled conditionally, exposing only PCB
libs to pcbnew and SCH libs to eeschema? This prevents having a single,
unified library configuration dialog accessible from all Kicad apps as
well as the Project Manager.
- Do we *really* need to expose all these environmental variables,
fp-lib-table paths, plugin options and so on in the main library
configuration dialog? This is extremely confusing. I'm not opposed to
support environment vars, but should they be as visible as they are now?
- How about adding support for .zip library files (zipped
.pretty/.sweet/.3dshapes directory)? This could significantly improve
the library loading speed as the scanner will no longer need to access
every single .kicad_mod/.kicad_sym file just to enumerate the
footprint/symbol it contains. It's quite annoying, in particular under
Windows or NFS/Samba (loading the standard FP library on my laptop takes
~20 seconds).
- Should we have the same interface for adding 3D model libraries
(directories/zipfiles with .STEP files) instead of a 3D model search path?

I'm asking because despite our efforts to improve Kicad's UX, the
library configuration is still quite difficult, even for experienced PCB
designers who are switching to KiCad from proprietary tools (see recent
posts on the Kicad Forum). I'd like to improve this during the V6
development cycle.


Follow ups