[Discussion] Deploy the HSE-Libraries as a VIP
Proposal
I know, I'm probably going to start a longer discussion, but I ran into too many issues with having the HSE-Libs locally in a project source folder. @joerg.hampel has a strong opinion about this topic and his reasons are valid. For a long time, it was a good solution to have the HSE-Libraries direct in the project, just as a source distribution or as a git submodule. In these cases it works good. But now, we have more and more helper libraries which rely on the HSE-Libraries and developing and especially deploying them is very difficult and error-prone when having the HSE-Libs in every project and repository.
Example
The "Weldcheck-Win" project has the HSE-Libs locally and needs the external developed libraries "HSE-PLCcom" and "HSE-Channels", both locally installed, too. HSE-PLCcom itself needs the HSE-Libs and the HSE-Channels and has both locally in its Source-directory. The HSE-Channels lib needs the HSE-Libraries (at least one VI) and has it locally, too. I guess, now you can imagine the problems ;-)
How to handle all these dependencies (a customer project and three of our libraries). Especially when one or more libraries are under development together with the customer project. At the moment, I'm working alone on these project and even so it's not fun to bring changes in the HSE-Channels back to HSE-PLCcom and Weldcheck-Win. And it's all manually. I have no idea how to automate this with our CI pipelines.
If the HSE-Libraries were available as a VIP it would be much easier. I could make a CI pipeline for each library that creates a VIP. If a library or customer project needs another library, I can define all of its dependencies in a VIPC-file. Every VI that links to the HSE-Libraries uses the installation under vi.lib and no dependency problems will arise (hopefully).
Problem-Solving
One of the main points why we decided to install the HSE-Libraries in the source directory of our projects was the fear of broken dependencies with a newer version of the lib (broken backward compatibility). The solution to this problem is to make a VIP for every major version of our HSE-Libraries (e.g. ("HSE Libraries v2", "HSE Libraries v3" and soon "HSE Libraries v4"). We already use semantic versioning to have backward compatibility within one major version. If a project needs a special feature set of the HSE-Libraries, it can define something like "hse-libraries-v3 >= 3.4.1" in its VIPC-file. An older project, what was developed at the time of HSE-Libraries v3.1 will have no problems to use the newer library. An even newer project could define something like "hse-libraries-v4 >= 4.0.0" in its VIPC-file. This would install the v4 package of the HSE-Libs and all projects will work.
What do you think about all these?