It would be perfect if only small libs were bundled and 3d packages downloaded and cached on demand.
Are you sure you thought this throug? Would you really like to wait a considerable amount of time everytime kicad needs 3d models? I think the better option is to do it like most Linux installers. Provide separate packages for the program and data. (Data can even be split again.)
A minimalistic online installer that abstracts this could also be an option. (This could then even offer fine grained control over which 3d model libs are downloaded and installed.)
Are you sure you thought this throug? Would you really like to wait a considerable amount of time everytime kicad needs 3d models?
Sure, because it’s only once per actually used model, nothing stops it from being done in background. While models aren’t loaded no 3d renders, sounds perfectly reasonable. I don’t need thousands of pin headers in all imaginable combinations cluttering my laptop hdd which I’ll never use. I should rather say, out of which I use 5 or 10. Don’t get me wrong, having them is good, but only needed ones.
Separate packages are of course better than current all-in-one download for a minor bug fix, as was proposed earlier in this thread.
Some interesting facts:
- 3D models take about 4.7GiB uncompressed
- Out of that about 3.2GiB is taken by Connector_PinSocket and Connector_PinHeader models
- Connector_PinSocket and Connector_PinHeader models are created by scripts
Can we make such an assumption that if the models were created on the fly when used we would save at least 3.2GiB initial uncompressed size, about 2/3 of the 3D library size? And there would be no need to download such models at all, ever?
More interesting facts:
- STEP files take about 80% of the 3D library size
- STEP is needed only for mechanical CAD collaboration while WRL is for nice rendering
- Those who want to view 3D but don’t use CAD don’t need STEP files
Anyways, this discussion wasn’t needed at all if there were a small online installer where the user could select what to download and install. Or, as has been discussed in some other threads, if KiCad had an internal download/install manager for all content.
Writing an internal installer is a bigger task. Writing a NSIS installer with download options is probably smaller, but requires some learning first. However, it doesn’t need real (complicated) programming skills. You who are reading this, could you consider spending some time with NSIS installer system?
The 3d models are indeed scriped. However they are scrpted using the cadquerry plugin for freecad for model generation, freecad python api to manipulate the model and to export to step. Wrl is exported with a custom wrl exporter after freecad converted the mechanical model into a surface of triangle.
So generating models on the fly fr this script is not really feasible.
Note that the used step export is not really optimised for file size. There are for sure ways to get smaller step models using other tools then freecad. But we really want to have the full toolchain as open source.
Downloading on the fly would not work for PCs without network access or behind strict firewalls.
I’m not saying it should be impossible at all to download the entire library. I just say that being forced to download it is somewhat wasteful traffic-wise, hdd space-wise, and leading to slower download speed and at least for me personally it created several inconveniences because it turned out there was some housekeeping required before upgrades, and after upgrade from 4.0 and all paths renamed I had to update them if I want to do a minor change in my previous pcbs. But if it was cached locally 3d views for old designs would still work even after update.
Break into 3 part in the distribution, so download can be select as user wish by be easy and simplest way at least for now… Core.exe, StepModels.zip, Lib.zip, may event datasheet.zip some like that.
The libraries should not be in a simple zip archive. Typical users should not concern themselfes of how to install them. This really should be handled like it is in most linux distros where you simply install the packages you like and the installers take care of the rest.
(Only thing that the installers can not do is change user settings. Meaning the fp-lib-table and sym-lib-table can not be updated by them.)
Remember the library packages also have the default lib tables in them.
A simple zip archive does not need to be created as these can already be downloaded from the library download page and from github. Meaning this would be a duplication of effort.
Linux, you can define the other package/.zip as dependency. So it should automatically download it…
But for windows, msi/exe installation can be easily to break into zip/package, and it can detect where to download or obtain from local…
I my use case, I need no lib, no table. I just git clone the kicad lib, footprint on my local, and use it… Everyone difference right?
Also, should KiCad smart enough to still work if the lib table point to non-existent folder? It should in my opinion. Event should work with a mix mess of valid and invalid pointing…
KiCad alerts the user if some libraries aren’t found but continues working.
there we go. But it should let user to turn off that warning to avoid see it every single load right?
It does. One needs to disable that lib from the lib tables.
I though current distribute installation is already package thing from kicad library repositories, so it may already duplicate effort.
It is a difference if you distribute different installers for different platforms (makes sense as it increases usability)
Or if you duplicate the creation of a dumb zip archive. Again i am not against providing separate packages (read installers) for the libraries on windows. But these should be intelligent installers that well install stuff. Not simple zip archives that need to be manually extracted and copied to the appropriate directory by the user.
In the Windows environment, the LTSpice way would work with the libraries. Working at at the library granularity and just fetching updated ones.
In the GitHub sample below, only one file would have been refreshed recently
If large file/binary files like 3D, datasheet storage in LFS from the beginning of git history. We can actually use git LFS feature to download on file as needed. But KiCad need to detect the LFS fie (which simple), and active the git LFS download automatically.
Or using https://github.com/Microsoft/VFSForGit to archive similar thing without need KiCad to known anything. Only thing for this is, how many OS it can be compatible?