The internal architecture of Forward as a client-side MVVM framework - Costas Zarifis
Web and mobile applications deliver live visualizations that are information-dense and continuously updated. Common examples include real-time traffic maps, analytics for machine/sensor readings, financial data streams and Business Intelligence dashboards. To implement these visualizations, a developer typically uses MVC frameworks and components, which provide performant APIs for incrementally updating the visualizations, but are laborious and error-prone to use. This has led to the recent emergence of MVVM frameworks (such as Google’s AngularJS and Windows Phone 8) that improve developer productivity by enabling visualizations to be declaratively specified, but incur performance penalties (and energy penalties in the mobile setting) because they employ full re-computation of the visual state.
The FORWARD application framework adopts the premise of MVVM frameworks and enables high productivity for all stages of an application’s development: reporting/visualization (which is this presentation’s focus), user interaction, and user input collection. It extends beyond the state-of-the-art to resolve the visualization performance issues, and to further increase productivity. In addition to declarative templates for visualizations, FORWARD provides a declarative architecture for wrapping existing MVC components (that provide incremental APIs) into state-based components that input diffs. The declarative approach enables FORWARD to employ automatic optimizations, where FORWARD incrementally propagates diffs from data sources to visualizations and automatically chooses the appropriate renderers. The provided analysis shows that FORWARD’s algorithms have superior big-O complexity to the current state of the art and finally the lines-of-code measurements show that the performance gains are accompanied by productivity gains.