Members
Overall Objectives
Research Program
Application Domains
New Software and Platforms
New Results
Bilateral Contracts and Grants with Industry
Partnerships and Cooperations
Dissemination
Bibliography
XML PDF e-pub
PDF e-Pub


Section: Overall Objectives

Overall Objectives

Nowadays, distributed applications can be found on an ever increasing number of interconnected computing infrastructures, ranging from small scale embedded devices to personnal devices, including laptops, desktops, palmtops, and tablets, and finally to large scale data-centers and high performance computing infrastructures. In addition to this inter-platform heteregeneity, we also face higher levels of intra-platform hetrogeneity, with the advent of multi-core architectures, virtual threads, GPUs, and new virtualization technologies. Programming distributed applications in such an heterogeneous environment, with high level of confidence both in terms of performance and security, is still a challenge, and raises many questions.

The overall objective of Scale is to provide a unified programming language and execution model for such a large-scale multi-level parallelism. We want to contribute to the design of the programming languages that will be used to program large-scale distributed applications in 2020. The characteristics we want to put forward are: ease of programming and guarantees of correctness. For this purpose our approach mixes distributed systems, theory of programming languages, middleware implementations, and resource management. Guided by this interaction the Scale team contributes to the creation of safe and efficient environments for programming and running distributed applications.

The Scale team and its positioning

The strength of Scale is to put together researchers in programming languages, from a rather theoretical perspective, with researchers in middleware and object-oriented programming with a strong expertise on distributed systems and their applications.

During the last decade, the landscape of programming languages for distributed systems has changed. Actors and active objects have gained interest both from the industrial point of view, as illustrated by the success of Scala and Akka (http://akka.io ), and from the academic point of view, for example through the projects around ABS and Creol. Our new proposal, multi-active objects, gives a novel alternative in this world. It is expected to be more efficient and more easily applicable than academic languages, but with a better formalisation and more proved properties than the languages targeting industrial usage. In particular we believe we are able to provide the expertise allowing the transfer of academic results on active objects into language constructs and runtime support that can be adopted by industrial platforms like Akka.

The global objective to make safe programming accessible to most programmers directs the choice of the target programming language for our developments toward Java. This choice is not only the result of our expertise, but also because it is well known, accessible by most programmers, and also because the underlying JVM can be shared with other languages. This last feature opens interesting perspectives in terms of sharing and reuse of our software contributions. However, this choice is not exclusive. In particular, the approach we propose should be easy to transfer to other programming languages.

While we still rely on active objects as a medium-grain parallelism abstraction, we also propose new ways of parallelizing the execution inside active objects (fine-grain parallelism), and autonomic ways to deploy and run the coarse-grain entities composing the application. However, these various levels of programming and execution environments cannot be designed independently. They all rely on a small set of common abstractions. Typically the service of a request is a notion that can be reasoned about at all the considered levels. We think that providing such unifying programming and execution abstractions, and their formal specification, makes the originality and the strength of Scale , while unifying our contributions.

Finally, the Scale team wants to put a strong emphasis on safety for distributed applications. We want to apply our expertise about reasoning on language, programs, and protocols in order to ensure the safe execution of distributed systems and applications. The fact that we are able to prove the safe behaviour of applications that achieve performances comparable to unproven and unsafe distributed systems is probably the biggest strength of the Scale team. Concerning safety, our approach is threefold: 1) provide high-level programming abstractions that makes the writing of distributed programs easier (and thus reduce the chances to write bugged programs); 2) prove the correctness of the platform we propose, by proving both properties of the programming language and properties on the tools and protocols we use; and 3) provide tools so that the users can specify the behaviour of their application and verify that it is correct.

Research challenges and objectives

To summarise, the challenges we address in the Scale team are the following: