{"id":217,"date":"2022-07-29T13:37:34","date_gmt":"2022-07-29T10:37:34","guid":{"rendered":"https:\/\/tt.utu.fi\/soft\/?page_id=217"},"modified":"2022-07-29T13:37:34","modified_gmt":"2022-07-29T10:37:34","slug":"hotdrink-gui-programming-with-dataflow-constraint-systems","status":"publish","type":"page","link":"https:\/\/tt.utu.fi\/sweng\/hotdrink-gui-programming-with-dataflow-constraint-systems\/","title":{"rendered":"HotDrink \u2014 GUI Programming with Dataflow Constraint Systems"},"content":{"rendered":"\n<p>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\u2014and are frustrating. The quality of GUIs remains low in many many applications because, we believe, too many aspects of a GUI&#8217;s behavior rests on the application<br>programmer.<\/p>\n\n\n\n<p>In our vision of UI programming, the programmer specifies declaratively the data manipulated by a user interface and dependencies amongst the data as a <em>multi-way dataflow constraint system<\/em>. The UI&#8217;s (entire) behavior is derived from this specification\u2014responses to UI events are managed by well-tested<br>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.<\/p>\n\n\n\n<p>The <a href=\"https:\/\/git.app.uib.no\/Jaakko.Jarvi\/hd4\">HotDrink<\/a> library, a JavaScript framework for implementing GUIs declaratively, is the prototype implementation of our research ideas.<\/p>\n\n\n\n<p><strong>Project team<\/strong>: Jaakko J\u00e4rvi (University of Turku), Mikhail Barash (University of Bergen), Knut Anders Stokke (University of Bergen)<\/p>\n\n\n\n<p><strong>Collaborators<\/strong>: Sean Parent (Adobe Systems Inc.), Magne Haveraaen (University of Bergen)<\/p>\n\n\n\n<p><strong>Past members<\/strong>: Gabriel Foust (Asst Professor, Harding University), John Freeman (Ripple), Mat Marcus<\/p>\n\n\n\n<p><strong>Selected publications:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Magne Haveraaen, Jaakko J\u00e4rvi: Semantics of multiway dataflow constraint systems, Journal of Logical and Algebraic Methods in Programming, Volume 121, 2021, 100634, <a href=\"https:\/\/doi.org\/10.1016\/j.jlamp.2020.100634\">https:\/\/doi.org\/10.1016\/j.jlamp.2020.100634<\/a>.<\/li><li>Knut Anders Stokke, Mikhail Barash, Jaakko J\u00e4rvi: Manipulating GUI Structures Declaratively, GPCE 2020: Proceedings of the 19th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences, November 2020, 63\u201369, <a href=\"https:\/\/doi.org\/10.1145\/3425898.3426956\">https:\/\/doi.org\/10.1145\/3425898.3426956<\/a>.<\/li><li>Gabriel Foust, Jaakko J\u00e4rvi, 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\u2013130, <a href=\"https:\/\/doi.org\/10.1145\/2814204.2814207\">https:\/\/doi.org\/10.1145\/2814204.2814207<\/a>.<\/li><li>Jaakko J\u00e4rvi, 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\u201310. <a href=\"https:\/\/doi.org\/10.1145\/2658761.2658762\">https:\/\/doi.org\/10.1145\/2658761.2658762<\/a>. 2014.<\/li><li>John Freeman, Jaakko J\u00e4rvi, and Gabriel Foust: HotDrink: a library for web user interfaces. In Proceedings of the 11th International Conference on Generative Programming and Component Engineering (GPCE &#8217;12). Association for Computing Machinery, New York, NY, USA, 80\u201383. <a href=\"https:\/\/doi.org\/10.1145\/2371401.2371413\">https:\/\/doi.org\/10.1145\/2371401.2371413<\/a>. 2012.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<div class=\"entry-summary\">\nProgramming 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\u2014and are frustrating. The quality of&hellip;\n<\/div>\n<div class=\"link-more\"><a href=\"https:\/\/tt.utu.fi\/sweng\/hotdrink-gui-programming-with-dataflow-constraint-systems\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &ldquo;HotDrink \u2014 GUI Programming with Dataflow Constraint Systems&rdquo;<\/span>&hellip;<\/a><\/div>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"full-width-page.php","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-217","page","type-page","status-publish","hentry","entry"],"acf":[],"_links":{"self":[{"href":"https:\/\/tt.utu.fi\/sweng\/wp-json\/wp\/v2\/pages\/217","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tt.utu.fi\/sweng\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tt.utu.fi\/sweng\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tt.utu.fi\/sweng\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/tt.utu.fi\/sweng\/wp-json\/wp\/v2\/comments?post=217"}],"version-history":[{"count":1,"href":"https:\/\/tt.utu.fi\/sweng\/wp-json\/wp\/v2\/pages\/217\/revisions"}],"predecessor-version":[{"id":512,"href":"https:\/\/tt.utu.fi\/sweng\/wp-json\/wp\/v2\/pages\/217\/revisions\/512"}],"wp:attachment":[{"href":"https:\/\/tt.utu.fi\/sweng\/wp-json\/wp\/v2\/media?parent=217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}