Skip to main content

WEB sIte conception language

Final Activity Report Summary - WEBSICOLA (WEB SIte COnception LAnguage)

The development of websites is a domain which gathers the efforts of an ever-growing number of programmers. It is an activity that involves dealing with both dynamic contents and complex architectures. Additionally, the degree of interactivity of large web-sites is constantly increasing in order to appeal to users. As a consequence, web-sites are not anymore mere containers of hypertexts, becoming true applications with a complex interface. In spite of this evidence, websites are still programmed in html-embedded languages (as in php, asp, zope or jsp technologies) or in general-purpose languages (as Perl, Python, C, Java, OCaml, lisp, etc), that use the common gateway interface (CGI) technology. Such tools are conceived to help the programmer's task, providing libraries, classes, modules, visual editors and other useful facilities.

However, even in html-embedded languages, computations are expressed in a general-purpose programming language, often interpreted and not compiled, and always without any static analysis of either the program behaviour or any possible program result. For example, the dynamically generated xml/html code that is sent to the user browser has not been statically analysed. As the current technology only offers palliative tools to help programmers, we believe that the development of a complex and dynamic website deserves attention as a specific domain. We think that this kind of development requires a specific programming language with a particular type system and semantics model in order to encode, describe and check correctness of as many application aspects as possible.

The members of the project researched and developed programming languages for rapid creation of secure and efficient websites.

The WEBSICOLA project has been developed along two main axes. On one hand, we have studied the design of the language itself, involving both the syntactical and the semantics aspects. On the other hand, we have studied and built a platform suitable for implementing WEBSICOLA in a more high-level and convenient way than with traditional functional languages such as the ML or Haskell families.

These two lines of research generated two valuable results: first we obtained an implementation of the WEBSICOLA model called Rimmel; secondly, we further abstracted the WEBSICOLA model into a language called FICX (and its extension FLAC).

To implement the language we have chosen to syntactically extend OCaml, a strongly and statically typed language, with the features needed by WEBSICOLA. This syntactic extension layer - that we have named Rimmel (acronym of Rimmel Is a Meta Meta Language) - has been first implemented with the Camlp5 preprocessor, and is now being rewritten with Camlp4, the powerful official implementation supported by INRIA. This choice permits us, as Rimmel developers, to reuse the OCaml free tool set (Campl4, Ocamllex, Ocamlyacc, ...) and permits the final users (at the moment us as developers of WEBSICOLA) to adopt a mix of functional and logic programming.

The WEBSICOLA model has been further extended by developing on top of it another language called FIXC, which may be viewed as abstraction of WEBSICOLA. FIXC gives a formal framework for a dynamic adaptability while allowing for a full static control of the software, guaranteeing an error-free execution process. FIXC combines together the easiness of component-based languages, and the industrial interest of a web language.

FLAC is in turn an extension of FIXC that it suitable for any type of programming rather than only web programming. FLAC is a component based programming language that allows dynamic internal adaptations without the two classic drawbacks: dynamic adaptations may remove or add requested or provided services, while types are statically checked.