Ocsigen

Ocsigen is a research project aimed at developing new programming techniques for the Web. Its goal is to offer an alternative to Apache/PHP, based on cutting-edge technologies from research in programming languages. It contains a full featured Web server and a programming framework, called Eliom, that provides a new way to create dynamic Web sites. With Eliom, you program in a concise and modular way, with a strong type system which helps you to produce valid XHTML. Eliom handles sessions, URLs, and page parameters automatically.

Main features

  • Extensible Web server, implemented with cooperative threads
  • Extensions for serving static pages, CGI pages, for HTTP redirections, data compression, reverse proxy, access control, etc.
  • Eliom Web programming framework:
    • Continuation-based Web programming
    • Static checking of XHTML (using OCaml or OCamlDuce)
    • Automatic management of sessions
    • Concise and modular programming

Today, most web sites are written using old technologies, such as CGI scripts or (untyped) scripting languages embedded in html. This situation, was acceptable at the time when the web was mainly static. But today, more and more sites are highly dynamic, and web developers experience difficulties every day for creating and maintaining large pieces of code written in such languages. Inspired by theoretical research in computer science and logic, there are now new languages allowing to program in a cleaner way, drastically reducing the time of the debugging process. But up to now these technologies have not been fully exploited in the domain of web programming.

In particular, some recent research papers have shown that functional programming works very well for this domain (use of continuations or closures, continuation passing style ...). Accordingly, Eliom considers each URL as a function taking arguments and producing a web page. Clicking on a link or a form triggers execution of this function.

Related projects

Another significant issue addressed by Eliom is the generation of valid xhtml pages. The web relies on recommendations defined by the W3 consortium, and the only means to ensure universal availability of information is to respect these standards. Today, very few web sites are fully standard compliant. Eliom uses an advanced type system that guarantees that your web site will be valid (or very close).

Download

Ocsigen is available for download. It is free software (mostly LGPL). Have a look at the Quickstart instructions.

The project

Ocsigen is a collaborative open source project. It is the base for a research project of the PPS computer science laboratory, Paris Diderot university and CNRS. It receives founding from the ANR.

Mailing list

If you are interested in the project, you can register to our mailing list. You can also have a look at the archive of the list.

Objective Caml

Rather than being a new language itself, Eliom uses Objective Caml, one of the world's most advanced programming languages, which already contains almost all the features we need (at least for this first version). This choice of a concrete language already widely used (even in industry) allows the programmer to take advantage of all the libraries and tools developed for this language.

Objective Caml allows to program in a very efficient way, mixing several programming paradigms (functional, imperative, objects ...), and with a strong typing system that eliminates a lot of programmer errors that may cause problems at runtime. Programming with Objective Caml drastically reduces the time of the development/debugging process.

News

01/04/08 Ocsigen 1.0.0 released!

All the features we wanted for the first version are now implemented. Try it! Download from here, and have a look at the Quickstart instructions.

14/03/08 First release candidate of Ocsigen 1.0.0

Please test it as much as possible! The finale release is scheduled in a few weeks. See the changelog and download here.

11/01/08 Ocsigen 0.99.5 released

All main features now implemented for version 1. See the changelog and download here.

21/11/07 Ocsigen 0.99.4 released

New module accesscontrol and changing the order in which extensions are loaded (Warning: now the order of configuration options inside <site> is significant).

07/11/07 Ocsigen 0.99.3 released

New session mechanism in Eliom, new extension to compress data (beta version), experimental reverse proxy, significant changes in Lwt and Web server internals ... See the changelog and download here.

21/08/07 Ocsigen 0.99.2 released

New implementation of forms in Eliom, new module to run CGI scripts ...

15/05/07 Ocsigen 0.99.1 released

No major change

05/05/07 Ocsigen 0.99.0 released

New module for dynamic page generation, called Eliom, much more powerful, and many many new things! Use it and report all your comments to help us make version 1 as strong as possible! See the changelog and download.

14/03/07 Ocsigen 0.6.0 available

The Web server is now extensible. It means that you can write your own modules (like Apache's modules).

14/12/06 Ocsigen 0.5.1 available

Mainly bugfixes for various browsers and systems.

23/11/06 Ocsigen 0.5.0 available

New major version. We worked very hard to make a Web server as strong and powerfull as possible, with all features like HTTP 1.0 and 1.1 support, HTTPS, pipelining of requests, virtual servers, multipart uploading, etc. Please report any problem.

10/11/06 New server, new Web site

Welcome!

02/10/06 Ocsigen in Debian

Ocsigen is now included in Debian unstable, as an experimental package.

16/09/06 Ocsigen in Portland, Oregon

Ocsigen has been presented at the ACM Sigplan Workshop on ML. Have a look at the paper.

06/06/06 Ocsigen 0.4.0 is out

New major version. Reimplementation with Generalized Algebraic Data Types.

.