HotDrink — GUI Programming with Dataflow Constraint Systems
Programming GUIs constitutes a large portion (some estimates say half) of all development effort. GUI programming is also an error-prone activity: we see daily UIs that contain defects, lack useful functionality, or are simply confusing—and are frustrating. The quality of GUIs remains low in many many applications because, we believe, too many aspects of a GUI’s behavior rests on the application
programmer.
In our vision of UI programming, the programmer specifies declaratively the data manipulated by a user interface and dependencies amongst the data as a multi-way dataflow constraint system. The UI’s (entire) behavior is derived from this specification—responses to UI events are managed by well-tested
reusable algorithms, not by ad-hoc event handling code written by the application programmer. As a result, we conjeture, the programming effort goes down while quality goes up.
The HotDrink library, a JavaScript framework for implementing GUIs declaratively, is the prototype implementation of our research ideas.
Project team: Jaakko Järvi (University of Turku), Mikhail Barash (University of Bergen), Knut Anders Stokke (University of Bergen)
Collaborators: Sean Parent (Adobe Systems Inc.), Magne Haveraaen (University of Bergen)
Past members: Gabriel Foust (Asst Professor, Harding University), John Freeman (Ripple), Mat Marcus
Selected publications:
- Magne Haveraaen, Jaakko Järvi: Semantics of multiway dataflow constraint systems, Journal of Logical and Algebraic Methods in Programming, Volume 121, 2021, 100634, https://doi.org/10.1016/j.jlamp.2020.100634.
- Knut Anders Stokke, Mikhail Barash, Jaakko Järvi: Manipulating GUI Structures Declaratively, GPCE 2020: Proceedings of the 19th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences, November 2020, 63–69, https://doi.org/10.1145/3425898.3426956.
- Gabriel Foust, Jaakko Järvi, Sean Parent: Generating Reactive Programs for Graphical User Interfaces from Multi-way Dataflow Constraint Systems, GPCE 2015: Proceedings of the 2015 ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences, October 2015, 121–130, https://doi.org/10.1145/2814204.2814207.
- Jaakko Järvi, Gabriel Foust, and Magne Haveraaen: Specializing planners for hierarchical multi-way dataflow constraint systems. In Proceedings of the 2014 International Conference on Generative Programming: Concepts and Experiences (GPCE 2014). Association for Computing Machinery, New York, NY, USA, 1–10. https://doi.org/10.1145/2658761.2658762. 2014.
- John Freeman, Jaakko Järvi, and Gabriel Foust: HotDrink: a library for web user interfaces. In Proceedings of the 11th International Conference on Generative Programming and Component Engineering (GPCE ’12). Association for Computing Machinery, New York, NY, USA, 80–83. https://doi.org/10.1145/2371401.2371413. 2012.