At JKI, we like to "eat our own dog food", which is just a fancy way of saying that we use our own products. Specifically, we use our own products to help us create our products. I've alluded to this before, but now I'll explain in more detail, now.
We Use VI Package Manager (VIPM) to Package, Distribute, and Install our Tools
At JKI, we use VIPM in the following ways during our LabVIEW development efforts:
- We create VI Packages of both our internal reuse libraries and our commercial toolkits.
- We share our VI Packages with the JKI team over the Internet using VIPM Enterprise Edition.
- We distribute our commercial toolkits to the community through the VI Package Network.
- We install VI Packages into LabVIEW (using VIPM) for use in our projects and products.
- We manage each of our project's VI Package Configuration files.
We use our Internal Reuse Libraries and Commercial Toolkits in our Products' Source Code
JKI's Software products, including VIPM, are written in LabVIEW. In these projects, we use our in-house software reuse library and commercial toolkits. For example, in VIPM's source code we do the following:
- We use our extensive reuse library for image, file, array, and all sorts of other common tasks.
- We use EasyXML for parsing and generating XML files used by VIPM.
- We use the JKI State Machine nearly everywhere that you might expect to find a while loop.
In a nutshell: We use our internal reuse library and commercial toolkits in nearly every product that we develop.
We use VI Tester to Test and Validate all our Products
VI Tester is a critical tool for validating that our software works correctly and helps us identify problems before we ship the software to customers. We use this powerful software testing framework in the following ways:
- We use it to test nearly every aspect of VIPM's source code.
- We use it to validate that EasyXML meets it's functional requirements and the XML specification.
- We use it to test and validate VI Tester.
Closing the Loop -- Using our Products to Create our Products
An interesting thing happened once we started using our products to help us create our products. We created a cycle where incremental improvements in one tool (product) had an amplified effect -- all of the other tools that were using it benefited from the improvements. This created a flywheel effect, building inertia with each improvement to our tools.
In some cases a tool became critical to the development of the tool itself. If that sounds confusing, I'll give you an example:
- We use VIPM to help us develop VIPM
- We use VI Tester to help us test VI Tester
It took us quite a while to get to this point. We've been working on VIPM for about 5 years and each release has gotten better and better. At some point we realized that VIPM was critical to the development of VIPM itself and, now, we couldn't imagine life without it.
Eating our own dogfood at JKI means that we have a lot of confidence in our tools and that we're invested in seeing them succeed. As a customer and user of JKI software, we hope this gives you confidence in our products, too.
What's Next?
It's hard to say for sure, but what I can say is that we've got a LOT of great tools in the pipeline. Our tools provide us with a very powerful platform for developing other LabVIEW tools and we're planning on releasing more of them soon. These new releases will most likely start out in the JKI Labs, so stay tuned.
Do you have any questions or thoughts about this article? Please feel free to leave a comment or contact us. We're looking forward to hearing your feedback.