I am presenting at the CLA Summit in Krakow. As soon as I get the video of the presentation (if there is one), I will add it to this post.
This time I am focusing more on the different approaches to organizing a large project in LabVIEW. My personal preference is to use project libraries and the approaches that I present can apply not only to DQMH projects or Actor Framework projects but to any LabVIEW project that is organized using LabVIEW Project Libraries or LabVIEW classes.
The demonstrations are the same I intended to use for my presentation at GDevCon1, but that I did not have time to show in more detail there.
Using SubModules, SubRepositories or SVN externals to organize your libraries
What I am proposing is for you to create a repository for each project library that will be used in multiple repositories. You might also choose to follow this approach so different LabVIEW programmers can work in different repositories. Then you can have the project library be in its own repository and have the project repository load it as a submodule. You can clone or download the example at github.com/DelacorLLC/GDevCon1_CML-DQMH.git and follow along with the demonstration video below where I show you how to add the Acquisition DQMH module as a subrepository of Libraries, which it is in itself a subrepository of CML-DQMH repository.
The video below shows how it looks like to clone a repository that has sub-repositories. Note how the sub-repositories are specified at a specific revision. This means the repositories themselves can be at a different revision than the one the main repository is pointing to. Also, note how the name of the repository can have a different name than the folder you clone it to.
If you would like for us to discuss how to do the same with Mercurial (Hg) or SVN, let us know via the comments and we will cover this in a future blog post.
Using JKI VIPM packages to share project libraries
The same code above is built using packages, where each DQMH module is saved in its own submodule (or subrepository) and built into packages. The calling code calls the PACKAGED code, not the original code.
You can find an example at github.com/DelacorLLC/GDevCon1_VIPMDemo
Package DQMH Module as PPL
Edit [February 7th, 2020]: If you are having problems when you try to use DQMH built as a PPL, there is a bug in LabVIEW (BUG ID 968709) that doesn’t rename the namespace of the typedef inside the Queue refnum inside the private data of the class. The workaround is to make sure you don’t remove the block diagram of the enqueue VIs when building the PPL.
Matthias Baudot from StudioBods, another DQMH Trusted Advisor, created a video that illustrates the steps to package a DQMH module into a PPL. He presented about this and a lot more about PPLs during his presentation at NI Week 2018 called Use PPLs to Build and Deploy Large, Scalable Applications and Get a Head Start on GLLs in LabVIEW NXG. The video below starts at the point (37:05) where he showed this demonstration.
You can find an example at github.com/DelacorLLC/GDevCon1_PPLDemo