Programming Support for Fault-Tolerant Distributed Live Applications
Final Report Abstract
The corona pandemic has made digital remote work and collaboration the norm for many people and industries, and it is clear that many of these changes are here to stay. However, developing distributed workflows especially involving live collaboration is challenging and costly, and even expert software development teams choose a centralized architecture to simplify the required coordination. The need for expert software teams, and the need for costly centralized infrastructure leads to the current situation where only a few large providers offer such applications. Smaller companies – especially those without a specific focus on software development and large data centrers – are unable to compete. Privacy issues with centralized architectures are widely known, but the resulting costs are hidden to users. In particular, centralized providers are able to collect data across many of their services, thus building digital profiles of their users. This data is then used by centralized providers to insert themselves as a “man in the middle” between businesses and their customers. The most widely known example is advertisement, where centralized providers force businesses to pay them a premium fee to advertise to potential future customers. But centralized providers are also inserting themselves more and more into all interactions between businesses and their customers. For example, a local German business that wants to communicate with its customers using WhatsApp has to pay 6.7 cent per conversation to Facebook, even though both the business and its customers still have to pay and maintain their own devices and pay their ISP for internet access. Having themselves inserted into enough such business relationships put centralized providers into a dangerous position where they can define how businesses interact with their customers – something that should be governed by laws and not third party companies. This project addresses these issues by significantly reducing the challenges and thus cost of developing distributed live applications. This is done as a programming language extension called REScala that allows developers to “speak” about complex distributed systems involving many cooperating devices in an unreliable network as if it was a simple local program with local data. In REScala, developers specify the possible interactions of a user with the application, and REScala ensures that all results of such interactions are automatically integrated into the currently visible application state. For developers, this is similar to programming a spreadsheet where changes to one cell automatically change any dependent cells, we call these automatically updating values “reactives”. Any changes to remote systems are then also incorporated into the normal updates to the local reactives – just that it may take longer for them to arrive due to the network delay. The main advantage of the programming model offered by REScala is that it enables experts for distributed system development to specify strategies to systematically handle all faults such as lost messages and crashed devices. These strategies are then automatically employed by the runtime without any addition development or operational cost. Surprisingly, the shift in the programming model offered by REScala, which asks developers to specify the goals of their software instead of the individual steps taken to ensure that goal, is also easier for developers to reason about than traditional approaches. This enables all developers, especially those not well versed in distributed systems’ development to develop reliable applications at moderate cost, which ultimately enables both users and businesses more direct interactions, running software on devices under their control, while still enjoying the conveniences of digital collaboration.
Publications
-
A fault-tolerant programming model for distributed interactive applications. Proceedings of the ACM on Programming Languages, 3(OOPSLA), 1-29.
Mogk, Ragnar; Drechsler, Joscha; Salvaneschi, Guido & Mezini, Mira
-
“From Debugging Towards Live Tuning of Reactive Applications”. In: Workshop on Live Programming Systems. LIVE. 2019
Ragnar Mogk, Pascal Weisenburger, Julian Haas, David Richter, Guido Salvaneschi & Mira Mezini
-
ReactiFi: Reactive Programming of Wi-Fi Firmware on Mobile Devices. The Art, Science, and Engineering of Programming, 5(2).
Sterz, Artur; Eichholz, Matthias; Mogk, Ragnar; Baumgärtner, Lars; Graubner, Pablo; Hollick, Matthias; Mezini, Mira & Freisleben, Bernd
