Finsemble: Getting Started

Getting Started


Finsemble helps developers build multi-window HTML5 applications for the desktop. Finsemble is built on top of OpenFin's secure container with Electron and Chromium. Finsemble's primary goal is supplying the missing pieces for multi-window coordination and collaboration, essential requirements for seamlessly behavior. From another angle, Finsemble in an application toolkit delivering a microservice architecture to the HTML5 desktop. This reflects Finsemble's secondary goal: desktop extensibility and framework agnosticism as the HTML5 and JavaScript ecosystem continues to evolve.

A good place to orient yourself to all the reasons we built Finsemble is our whitepaper: The Future of Desktop Applications. You should also read Finsemble Motivations, which is a higher-level overview of the framework.

To try out a Finsemble application on a Windows desktop, Beta users will find in their "Getting Started" email a link to the ChartIQ Finsemble Demo (although Finsemble is platform independent, both the Beta and Demo have only been verified on Windows).

Developers and architects should also look at The Finsemble Architecture Overview. The Finsemble Terminology section provides additional insight into the architecture.

The rest of this "Getting Started" tutorial is oriented to developers wanting to try out Finsemble.

Below explains how Finsemble is packaged.

  1. A seed project is provided to quickly get started with Finsemble. It includes examples to run, modify, and cut-and-paste from. The seed project also serves as a valid template for building your own Finsemble application.
    • If you are unfamiliar with Git or GitHub, see this Introduction to GitHub.
    • To install Git on Windows, download GitHub for Windows. This also a bash-style command terminal (Git BASH) for those who perfer a Linux or Unix environment.
  2. The Finsemble core is a NPM module kept in a private NPM repository. The seed project is already set up to reference the private NPM module (although, an NPM login is required for Beta users).

The following diagram illustrates the overall packaging:

  1. The seed project requires (i.e., imports) the core Finsemble module.
  2. Upon startup, the Finsemble core looks at configs inside of the seed project to see which components are spawnable.
  3. After startup, the seed-project and the core module function as a unified application (communicating though the underlying Event Router microservice). Getting Finsemble and Understanding Application Startup cover all you need to know for installing and running the seed project. You may want to also read about The Finsemble Build Process to understand what's going on when you type npm run dev into your terminal.

After installing Finsemble, developers should continue with the following tutorials:

The Finsemble CLI also provides a set of "getting started" commands, but building code stubs with the proper configuration settings.

Debugging Finsemble explains the pragmatic aspects of debugging under Finsemble, which is very similar to debugging under Chrome (with a few special cases).

A few special tutorials also walk the developer though the use of specific client APIs:

The following client APIs and microservices are supported in the beta release.

Finsemble Client API Description
........................................
Chat Client Provides multi-window Slack chat, through the Chat Connector microservice.
Dialog Manager Client Supports spawning user dialogs from any component. Also receives user input from a dialog.
Launcher Client Controls the starting and stopping of all components though the Launcher microservice.
Linker Client Dynamically links and updates common data elements shared between components, though the Linker microservice.
Workspace Client Manages groups of Finsemble windows, including where they are positioned, though the Workspace microservice.
Router Client Routes event messages between components and microservices, through the Router microservice
Human Interface Supports global intercepts for all human interactions (e.g., hot keys, button presses, gestures). This is very limited in the initial version -- corresponding microservice needed for broader functionality has not yet been implemented.
Storage Client Provides storage across all components and services, though the Storage microservice.
Window Client Enables a window's state to be controlled, including window size and position
Base Client Common base functions shared across all Finsemble components

Again, Finsemble is built on OpenFin's secure container for desktop HTML, although it is for the most part hidden within a Finsemble wrapper. Looking more at the OpenFin container and its JavaScript API will help understand how Finsemble works internally. It is worth noting that Finsemble installation automatically handles the OpenFin installation and dependencies.


Once again, Finsemble is built to be extended, but Finsemble's roadmap is a work in progress. A diversity of features and new APIs are now on the drawing board, both for our beta release and future releases. We welcome feedback as we continue to evolve.