Home / documentation / Montage User Manual - 1.0.0

Montage User Manual

Why Is A Software Ecosystem Infrastructure Needed?

This is an important question, and the answer involves deficiencies in package management and the lack of a functioning market to facilitate the digital economy needed to drive the composable software architecture of the future.

  • Superior Package Management

    A company may wish to create a software application for a specific market vertical and develop it so that its community of users can extend it. Montage is an obvious solution to this problem, as it allows the company to not have to re-invent the package management aspects of the solution. The company would extend Montage with a new ecosystem to organize the packages and products, and create a new “installation target” definition where community content will be logically be installed.

    Programming language ecosystems (i.e. C#, Java, Python, etc.) typically have their own package distribution software of choice, such as Nuget, Maven, and pip. These package management tools are designed to manage distributing and installing the packages into the environment- or language-specific “installation target” (C# desktop project, Python environment, etc.). Chocolately is a tool that manages the installation of full software applications to the user’s computer. In this regard, the user’s computer itself can be logically thought of as the “installation target” for the Chocolatey software application packages.

    So what’s different about Montage? Each of these package management systems have their own notions about what a package is, what an installation target is, and what it means for a package to be installed to that installation target. These package management systems also generally support dependency resolution inside their respective installation targets. If one package depends on the other, the other package is also installed, but only inside the same “homogeneous” installation target.

    Montage is unique in that it is specifically designed to maintain abstract notions of packages, installation targets, and installers, so that it can incorporate these preexisting package management systems in its infrastructure support. It is designed to be extensible to support these and future package requirements. A Montage package installed into one type of installation target (for example, a C# project) can declare a dependency on another package (i.e., Microsoft Visual Studio) being installed to a different installation target, such as the computer’s “installed applications” installation target. This results in the concept of a Montage Activity as a heterogeneous graph of packages and installation targets. This activity’s dependency graph must be “unified” with all other activities, but the result is hyper-agile activities that can be installed, including all development tools, with a guarantee that the project will build and run. The result is dramatic reductions in setup time for even the most complex workflows, resulting in a natural, effortless, and intuitive experience for users.

    To learn more about Montage package management, click here.

  • A Software Package Marketplace

    Package management systems allow libraries to easily be shared and incorporated by reference into other libraries. The incredible scale of these package management systems is clearly demonstrated by Nuget’s package download statistics, currently easily averaging over 1 billion package downloads per week.

    These package management systems provide discoverability of the packages but offer no marketplace infrastructure for the licensed purchase of premium packages. Montage provides this infrastructure by allowing developers to effortlessly create and manage products that control download and execution policies. These policies can easily be changed even after packages have been deployed, allowing package authors to experiment with pricing models. To sell software, all that is needed is an ability to build useful packages/content and a bank account. Software ecosystems require licensing technology that is frictionless but flexible.

    But Montage licensing is designed as much for users as it is for merchants. The Montage platform allows users to manage all Montage licenses purchased by their organization in a single place. This creates a single, simple learning curve to manage licenses across ecosystems and merchants. Montage allows users to share activities involving software from many vendors, and even sell these useful activities, even if the user does not have the distribution rights from third party merchants. Montage ensures that other users of the activity have all licensing requirements for the third-party software satisfied. Montage licensing blends seamlessly into all ecosystems. This infrastructure takes the burden off individual developers, while leveraging the enormous network effects created from dependency graph formations.

    To learn more about Montage licensing, click here.