Section: New Results
Orchestration of Web applications
Modern Web applications are composed of numerous heterogeneous actors (users, distant servers and services, IoT devices, etc.) interacting together by means of asynchronous events. The harmonious interaction between these actors is called orchestration. JavaScript, the mainstream language for writing Web applications, enables programmers to orchestrate events with an asynchronous event-loop. However, event-loop based orchestration is known to be a difficult problem leading to programs which are difficult to write, read and maintain. To address this problem, Hiphop.js, a domain-specific language (DSL), has been developed during the last two years. It extends JavaScript by means of temporal constructors allowing explicit synchronization, parallelism and preemption. These constructors are inspired from the Esterel synchronous language.
During this year Hiphop.js has gained in maturity. First, a development environment has been developed. It is now possible to debug Hiphop.js programs by visualizing the code source during the execution, inspecting instructions state and signals value. Moreover, it is possible to queue reactions in order to analyze step-by-step the global state of the program between each reaction. The debugger can also be used and controlled remotely, using a simple Web browser. It is an important feature since Hiphop.js applications can run on different types of devices, especially smartphones or headless devices, on which debugging is impossible. Besides, in order to have a deeper integration with JavaScript and to make the adoption of Hiphop.js easier for new users, a new syntax has been designed and implemented.
A short paper describing HipHop has been accepted for publication at the SAC'18 symposium.
Finally, Hiphop.js is used in the context of a music show during the MANCA (http://www.cirm-manca.org/manca2017/) festival in Nice. It is used to orchestrate the composition of lights and songs during the show. Moreover, the public can interact with musicians by the means of smartphones, playing specific songs during delimited periods of the performance. Those interactions are implemented using Hiphop.js.