This article contains content that is written like an advertisement. (May 2017) (Learn how and when to remove this template message)
|Initial release||July 10, 2012|
17.0.11 / July 19, 2017
Montage development started under Benoit Marchant and his team while at Motorola Mobility, from August 2010 to July 2012. The project was open sourced on GitHub in July 2012 under a BSD license. Montage is currently maintained by a Silicon Valley startup whose employees include Marchant and core members of the original development team.
In 2010, when Marchant had the opportunity to join Motorola Mobility to work on a new framework for mobile, he took the lessons learned at Apple to build Montage from the ground up using the model–view–controller (MVC) design pattern to partition a Montage application into logically distinct units. Although still evolving, with many more components on the roadmap, Montage has been used to build production-ready applications.
Transposing the designs and patterns of native application frameworks onto the field of web-based application development is nothing new. Where Montage differs from its predecessors (such as Cappuccino, for example) is that it doesn't try to introduce a new syntax for the web. Instead, it uses a Cocoa-like API to create a clean layer of abstraction on top of the web stack using modular, self-contained components, real objects and collections, and an API that allows you to observe changes on these objects and their properties or collections.
Montage builds on ECMAScript 5, HTML5, and the CommonJS module system popularized by Node.js. It provides the functionality to build graphical user interfaces providing access to both a set of opinionated UI components as well as standard DOM interface components. However, instead of using a templating system like Mustache, for example, Montage lets developers craft user interface components as stand-alone web pages. An application is merely a component’s template opened directly in a web browser. The template contains a DOM skeleton and may require some CSS, but it comes to life with the inclusion of a component object model, distinct but connected to the DOM.
Montage also provides string and value manipulation, serialization, and other functions that are not directly tied to the graphical user interface. It uses getters and setters to bind properties, so it maintains performance even as the number of bindings grows. It implements a managed draw cycle, a key part of the Montage architecture, that separates read and write operations at scheduled intervals, so it doesn't compromise performance. And it uses event delegation to manage event handling and dispatching to improve application performance.
Part of the MontageJS ecosystem are tools that provide a better developer-optimized experience. These include an initializer, Minit, which generates starter template applications and components, as well as a module system intended for front-end development of web applications using NPM-style packages called MR (short for Montage Require).
Montage also comes with a command line tool that translates a developer-optimized experience into a user-optimized experience called Mop (short for Montage optimizer). Mop outputs production-ready Montage applications by reducing the overall file size of the application and creating bundles that can be preloaded or distributed among multiple downloads, to reduce the number of requests and allow developers to release Montage applications with restrictive Content Security Policies.
Montage depends on standardized browser features and works best in modern browsers, including Google Chrome, Firefox, Safari 5+, Internet Explorer 10, Safari Mobile, and Android browser.
- July 10, 2012 - 0.11 - first public release
- November 12, 2012 - 0.12
- June 10, 2013 - 0.13
- December 9, 2013 - 0.13.9
- January 16, 2014 - 0.13.11
- February 25, 2014 - 0.14
- March 6, 2014 - 0.14.4
- March 12, 2014 - 0.14.5
- May 3, 2014 - 0.14.10
- Kowal, Kris; et al. "Ninja power: open-source HTML5 toolset aims to enable richer Web apps". Ars Technica. Condé Nast.