Home / documentation / Introduction To Virtuoso - 1.0.0

Introduction To Virtuoso

Composable Abstractions

Virtuoso represents composable no-code platform engineering infrastructure, designed to build next-generation Golden Path workflows through composable, fully orchestrated software abstractions. This begins with the Virtuoso Core Framework and the schematic editor. The schematic editor provided by the Core Framework represents a single high-level environment where capabilities of arbitrary complexity can be effortlessly downloaded, installed, dragged, dropped, configured, and connected. Like any new programming language, the concept must be experienced through direct use for the full understanding and appreciation.

A foundational requirement of Virtuoso's infrastructure is to provide no-code abstractions on top of existing pro-code workflows. That is, the output that Virtuoso produces from its high-level visual programming environment is a fully-formed pro-code application ready to be built and run. You can use Virtuoso to design an application, then completely uninstall Virtuoso, and the application should build and run exactly the same as a traditional pro-code workflow. This satisfies key characteristics of the Golden Path not satisfied by conventiional no-code platforms. By flowing down to traditional pro-code toolsets and build systems, there is no lock-in or architectural limitations. The overall workflow is augmented with the power of no-node abstractions without any of the limitations. 

The second requirement is that Virtuoso is architecturally designed to be extensible to any pro-code pipeline. The relationships between the high-level abstractions and the specifics of the pro-code programming language and build tools are standardized and extensible, so that anyone can extend the Core Framework to create no-code workflows for other pro-code pipelines or even non-coding related outputs from the visual design environment.

The third requirement is that "no-code" capabilities in Virtuoso represent high-level fully orchestrated capability abstractions that require absolutely no understanding of how they work, or what is needed to get the capability working. This requirement means extremely high levels of automation and orchestration. A no-code component or port represents an abstraction of a capability which may require software applications, SDKs, or drivers to be installed to the computer. No-code users should not be expected to hunt down packages and install them. All orchestration and setup of the capabilities, including any tools needed to build them, must be fully orchestrated. On-premise orchestration is fundamentally a much harder challenge then cloud orchestration. Montage natively provides on-premises orchestration.

We can now review the major elements of Virtuoso, step by step. A user wants to build an application. First, they select a supported host platform,which is a specific main application type that the no-code visual programming environment represents, such as C#, C++, Python, Ruby On Rails, etc. In the image below, the user first selects a host platform from the available installed host platforms. Each host platform is itself a modular, discoverable Montage package. Once the host platform is selected, they can select a host template that someone has created for that host plugin. Host templates are also separate modular, discoverable Montage packages that anyone in the ecosystem can create and share (and sell!). 

This "New Project" interaction is a part of the Virtuoso Core Framework, as we are in the process of selecting one of an unlimited number of host types provided by the Virtuoso ecosystem. Once the host and host template are selected (in this case a C# Windows Presentation Foundation application in Visual Studio), a popup window allows you to select an empty folder to create the new project in, select the .NET framework version as appropriate, and specify a solution name and project name. This popup interaction is an extension of the Virtuoso Core Framework, not part of the Core Framework, providing the specific interaction needed to complete project creation for the selected host plugin. This is an important architectural point for users wanting to extend the Virtuoso no-code environment to different uses and outputs. The selected project is then created from the template, renamed, and re-instantiated. 

The host plugin then creates the host application, which is opened in the schematic editor provided by the Core Framework. The schematic editor represents the high level environment where a toolbox of no-code capabilities (1) can be dragged and dropped onto the schematic editor and connected to other capabilties (2). Each capability can be configured by a completely custom property editor designed specifically for that capability (3). This design is then pushed to the pro-code IDE or pipeline (4).

This specific "Hello, World!" example shows two very simple capabilities: a momentary pushbutton and an LED. The momentary pushbutton has a "Clicked" boolean output, and the LED has an "Is On" boolean input. Although this is a very simple application, it represents all elements of the differentiation process. The momentary pushbutton represents a differentiated capability with it's own development and release cycle. Once the capability has been fully developed, tested, and released, it is ready to be configured and composed with other capabilities, in this case an LED. In the case of the LED, after instantiating the LED there is a further differentiation step of selecting what color the LED should be and providing a display name. These two components are both provided by a Montage package with package ID of "Virtuoso.StandardLibrary". This package includes a dozen or more components, each with a custom property editor application. Other packages from other content creators can be installed to the same environment, instantiated, configured and connected to these capabilities, with each property editor for each component developed by different teams integrated into a single environment. 

The momentary pushbutton and LED are about the simplest components imaginable, but components can represent arbitrary complexity. Many components do not require configuration, but some component property editors can provide extensive tooling to customize the specific behavior of the component. It is the responsibilty of the no-code component creator to provide the Golden Path for each individual component to maximize usability.

 

 

 

 

 

 

On this page: