Hi, is it possible for multiple users to work with one sym-lib-table file stored on a server location?
(KiCad 5.0.1-4 on Win10 Pro 1803)
Symbol and footprint libraries are stored on the same server location, KiCad path variables are set accordingly.
‘Worst’-case-scenario:
Two user create a new symbol and save it in a new library at the same time and update the sym-lib-table via ‘Manage Symbol Libraries…’.
Desired would be that on continuing with the schematic layout each other user would now be able to access the newly created libraries…
Until now we work with an outdated EAGLE v5. On stepping over KiCad and presenting it our managers it was decided to replace EAGLE with KiCad.
I think I searched intensely this forum and found of course info about Environment and KiCad paths, but could not figure out how to separate user individual environment and shared use of the sym-lib-table…
The sym lib (and fp lib) table is always stored inside the users config directory. I would guess you could use sym links to point that to a central location. I however doubt it is worth the risks connected with this. After all it will not really happen all that often that you add new libs. (If users check at the start of a new project if new stuff is available that should really be enough. You could even develop a small script that runs periodically and does this for you.)
Sharing the libraries them selfes is however easily possible. I would however really suggest the use of some version control system for that instead of directly pointing to a server file. (Version control can then protect you against two users writing at the same time which could corrupt the files.)
remember projects have their own project local lib tables. Make sure you find a workflow that ensures consistent use of these.
Personally, I do have both my sym-lib-table, fp-lib-table, and personal libraries on DropBox. I use links to point to the DropBox library tables. But, I’m one person and will only ever be accessing the tables from one computer at a time.
For workgroups, I like Rene’s suggestion of using some sort of SVN to allow users to make changes and then push their changes to a repository. Either have a script (or daily ritual) of pulling from the repository at a sensible interval. You should probably only have two people who are organizationally allowed to check in changes, a primary librarian and a backup for when the primary is out (vacation, sick, business travel, etc).
If you are basing your libraries on top of V5 official libraries, I highly recommend using git.
Our setup is such that each user of KiCad has three local library repositories (symbols, footprints, 3Dmodels). These repositories can be one way synced with official KiCad repositories and two way synced with our internal repositories. As sym-lib-table is part of symbol repository it gets synced (though here are where most of merge conflicts are, but they are usually trivial to resolve). And you could create a symbolic link to link this sym-lib-table file into KiCad configuration folder.
May I ask how exactly You go about sharing libraries trough Dropbox? I’ve been trying to do that many times, but given up on it. I’m using a Mac at home, and a Windows computer at work. Very handy to keep working with the same files at both locations. Been doing that successfully with Eagle for years. And Arduino, MPlab etc too.
I don’t share these files with other users, so no problems with more than one saving at the same time.
Which part are you struggling with? (Read the part below and maybe ask specific questions.)
With eagle you setup a path to your libs and it automatically adds all the libs it finds in that path (version 6 knowledge. I have no clue if version 9 functions the same way.)
This gives you 0 control over what you want to have setup.
Kicad on the other hand gives you library tables. These are a bit more work up front but also give you a lot more control over what happens. (you can even give libs a different nickname than their filename. you can choose which lib takes priority, …)
Both are good for different reasons. The two philosophies are not really compatible with each other so the devs need to decide on either one or the other. (Trying to get something in between might not satisfy either side of the userbase)
Your library table would need to be inside of the dropbox folder to get the behavior you want.
Pointing kicad to it can be done using so called symbolic links (created via the right click context menu within your file browser. Sadly the exact wording depends on the language used by you OS.)
The files you need to point to dropbox are found in your users home directory. (windows vista and later: C:\Users\username\AppData\Roaming\kicad, osx: /Library/Preferences/kicad)
The specific files are sym-lib-table and fp-lib-table.
Replace both of them with a symbolic link to the real file that is inside your dropbox folder.
The tables would also need to use path variables instead of using global file system paths. So setup a personal path variable for your personal libs. When you then add your libs using the browse button kicad will automatically use that path variable.
You can get inspiration about that from the official library tables. They use path variables for the reason of being easy to share with users of different operating systems.
I use the dropbox background process to keep the local dropbox folder on each computer synchronized. KiCad on each computer only accesses their local dropbox folder. I’m only doing it on Windows computers. I don’t know if throwing Mac (or even Linux) in the mix messes things up.
So far, so good. Next step is to edit the tables so they point the Dropbox location. At the moment they point to the Dropbox at my Windows computer (C:\Users…) wich of course doesen’t work on the Mac.
I have to read up on path variables. You put me on the right track, so many thanks.
Adding new projects on either computer is fine, and shows up on the other. The problem lies with the schematics. When I open a schematic file on the opposite computer, the symbols shows up as question marks.
That’s right. The final step that I forgot to mention. I’m not using OS evnironmental variables, rather I’m using the KiCad “Configure Paths…” preferences menu item. Each computer used the same path names, but point to where locally those path names should resolve to. For example, on one computer KICAD_USER_TEMPLATE_DIR points to a folder on my D: data drive within the local dropbox folder on that drive. But on another computer it points to a folder in the local dropbox folder in it’s normal place in C:\users<username>\etc…
Note that these path names only exist within KiCad. I can’t use them in (for example) the links to the library tables.