Make Distributed Programming Fun Again
The so-called callback hell (i.e. reasons why distributed programming is hard 3) has recently been solved by a new paradigm called reactive programming. This paradigm allows one to explicitly deal with asynchronously time-varying values in a declarative way. A traditional example of this is the following expression: (define minutes (/ seconds 60)) . Such a reactive expression will be re-evaluated by the language runtime as soon as the time-varying value on which it depends (i.e. seconds ) changes. Although reactive programming has proven to be a powerfull paradigm, it has yet to be applied in a distributed context.
In this thesis you will investigate whether reactive programming can solve the remaining two issues with distributed programming (i.e. the complex mental architecture and handling distributed failure). To do this you will design and implement your own distributed reactive language. This will require you to both extend the existing non-distributed reactive paradigm to a distributed one as well as introduce new reactive native constructs (e.g. constructs to deal with partial failure of a distributed component).
Concretely we foresee the following steps as a high-level roadmap:
- A literature study on reactive programming
- The adaptation existing reactive programming language constructs to deal with distribution
- The creation of new reactive constructs to deal with distribution-specific aspects (e.g. partial failure)
- The design and implementation of a full-fledged distributed reactive language (you can choose any existing distributed technology as a runtime for your language)
- A study assesing the advantages and drawbacks of your language compared to a traditional distributed language
- Bainomugisha, E., Carreton, A. L., Van Cutsem, T., Mostinckx, S., & De Meuter, W. (2012). A survey on reactive programming. In ACM Computing Surveys.
Czaplicki, E., & Chong, S. (2013, June). Asynchronous functional reactive programming for GUIs. In ACM SIGPLAN Notices (Vol. 48, No. 6, pp. 411-422). ACM.
Salvaneschi, G., Drechsler, J., & Mezini, M. (2013, June). Towards distributed reactive programming. In Coordination Models and Languages (pp. 226-235). Springer Berlin Heidelberg.