The central concept behind Heron is that we create a full, browser-based web mapping application by telling it what to do, not how to do it. By specifying a configuration we tell Heron which components (like map panels, toolbars, layer trees etc) to create, what they should look like (colors, width, height etc) and what their layout should be (e.g. absolute or accordion).
We found that this concept, creating an app through a configuration, has a natural fit with browser-based web mapping applications built with GeoExt/ExtJS:
GIS applications often require standard widgets like map panels, toolbars, layer trees that may only differ in specific settings like the specific layers, colors etc. We just tell which components we need without explicitly creating them.
ExtJS (and GeoExt) uses a powerful Builder Pattern based on declaring (widget) components and any child widgets to be implicitly and recursively constructed and initialized by specifying a shorthand string called xtype with a set of component-specific properties.
Graphical User Interfaces (GUIs) are often layout and wired as a top-down tree following the Composite Pattern. Objects in JavaScript and JSON objects, allow specifying composite structures naturally with the added plus that additional behaviour (think of handler functions) can also be specified within the same JavaScript syntax.