Scientific Goals

There is an increasing demand for web-based services that offer collaborative and off-line functionality, and this at unparalleled global scales. Realizing these qualities requires distributing previously centralized application logic and state both vertically and horizontally:

  • vertical distribution, in which code and data is replicated from the server to a client tier, is required for off-line functionality;
  • horizontal distribution, across instances of the same tier, is required for collaborative client functionality and for scaling of resource-starved server tiers.

Both forms of distribution bring about the essential complexity of maintaining the consistency and safeguarding the security of replicated or shared application assets, along with the accidental complexity of reconciling a myriad of heterogenous tier-specific technology. The Tearless project therefore envisions a future in which multi-tier web applications are developed, tested and maintained as a single artefact that spans all tiers. This tierless programming should relieve developers of distribution, consistency and security concerns. We will not pursue this vision through a new and potentially esoteric programming language. Instead, we will pursue a two-pronged solution of enabling technologies & development tooling. This enables the gradual incorporation of our technology in existing code, and maximizes valorization opportunities for different stakeholders.

Concrete Objectives

We will realize this vision by investigating the following intermediate enabling technologies:

  • programming constructs for implementing eventual consistency concerns;
  • programming constructs for implementing confinement-related security policies;
  • a transpiler for automatically splitting a tierless programs into tier-specific assets, along with implementations of appropriate provisions for eventual consistency and security through the above constructs.

We will investigate these technologies for JavaScript, ubiquitous on server and client tiers alike, in a manner that precludes the need for non-standard execution environments; through a shared dynamic and static meta-level architecture respectively. This enables the gradual incorporation of our technology, provided that it is applied correctly. Our enabling technologies will therefore be accompanied by the following development tooling:

  • a migration assistant for gradually renovating existing code to the tierless style;
  • an end-to-end debugger that upholds a tierless representation of tier-specific runtimes;
  • an end-to-end monitor for violations of security policies.

The overall research question that needs answering is whether the tierless development style does indeed overcome the challenges faced by stakeholders: making the leap towards richer client tiers with collaborative and off-line functionality, and towards server tiers capable of handling global scales. We will therefore validate our two-pronged solution of enabling technologies & development tooling using demonstrators inspired by business cases from potential stakeholders. While ambitious, the seeds have already been sown in disconnected prototypes of the academic partners. The project aims to realize their full strategic potential by integrating, consolidating and innovating further.