A current trend in application development is one towards "Rich Internet Applications" (RIAs). RIAs share many characteristics of traditional desktop applications, with the extra complexity that they are built using web technologies. Nowadays developers build RIAs using a mixture of different technologies to satisfy application requirements (e.g. reactive, real-time, persistent, ...). However, we find that currently these different technologies are simply hacked together without considering the semantics of their interaction. For example, what happens when the output of a stream-based program is piped into a database, and the database is too slow to handle all data. Does the
application slow down? Does it crash? Is data lost?
Our goal is to build a framework that allows all of these different technologies to co-exist in an application. The main axis from which we approach the problem is to study the composition of imperative programs with reactive programs, since their interaction is currently poorly investigated. We propose to leverage the philosophy of "microservices" (which are currently exclusive to server-side development) to cleanly separate different technologies, and we provide a set of "composition operators" to glue them together in a semantically well-defined way. With our framework we hope to make RIA development easier, more systematic, and more uniform (by using the same technology on both the client and server), thus resulting in less bugs.