The Virtuoso platform is built on Montage packaging and distribution technology. A complete treatment of Montage packaging is outside the scope of this overview, however some of the basics are as follows.
Montage is a package management platform built to allow developers to collaborate at scale for both commercial and non-commercial purposes. If you are familiar with Nuget packages, Montage packages are similar, except that in addition to dependency management, Montage also provides the following:
- “Heterogeneous” Dependency Graph Support: A Montage “Activity” (such as a Virtuoso host example project) may depend on packages being installed to multiple “Installation Targets”, including for example your host application project as well as system program installations. A tested Montage Activity can be used effortlessly, because it has ensured that everything is in place that is needed for the Activity to build and work correctly. Users of Montage Activities need not waste time tracking down and troubleshooting build errors due to missing build tools or libraries.
- License Management Support: Montage provides package merchants with all of the tools to easily set up paid licensed packages, including custom End User License Agreements. One merchant may publish a package requiring payment, which depends on another merchant’s package which also requires payment. The result to the merchant is an extremely low barrier of entry to write packages and generate revenue, with useful packages also referenced by other packages. The package user sees the cost of the entire package graph, and sees a consolidated, simplified license integration system.
- Package Merchant Tools: Merchants publishing software packages, as either libraries or complete applications, benefit from back-end usage metrics that assist with pricing and promotion.
- Marketplace: The centralized package marketplace promotes publication and discoverability of useful packages and content of all types.
With Virtuoso, “everything is a Montage package”, including the schematic editor and core libraries. Host applications are maintained as a “Montage Activity”, so that their build and runtime requirements are completely traceable, to ensure effortless and error-free sharing. Since a Montage Activity defines all installation requirements for an Activity to function, including system software installations, and since the Montage Launcher assists in automated installation of its dependency graphs, a user should be able to start with a new computer, and be up and running with any Montage Activity quickly with no confusion or frustration.
The WPF C#/.NET host plugin, which allows the Virtuoso schematic editor to create and update C# projects, is a Montage Package. The Standard libraries of port metadata, component metadata, and port and component implementations are Montage Packages. Each control in the host component toolbox, in general, is a separate Montage Package. Other merchants are able to develop and distribute Packages (including example projects) that reference these packages or other libraries.