Experience report: ocsigen, a web programming framework

The evolution of Web sites towards very dynamic applications makes it necessary to reconsider current Web programming technologies. We believe that Web development would benefit greatly from more abstract paradigms and that a more semantical approach would result in huge gains in expressiveness. In particular, functional programming provides a really elegant solution to some important Web interaction problems, but few frameworks take advantage of it. The Ocsigen project is an attempt to provide global solutions to these needs. We present our experience in designing this general framework for Web programming, written in Objective Caml. It provides a fully featured Web server and a framework for programming Web applications, with the aim of improving expressiveness and safety. This is done by taking advantage of functional programming and static typing as much as possible.

[1]  Chuck Smith,et al.  WikiCreole:: a common wiki markup , 2007, WikiSym '07.

[2]  Gang Chen,et al.  Guarded recursive datatype constructors , 2003, POPL '03.

[3]  Christian Queinnec,et al.  The influence of browsers on evaluators or, continuations to program web servers , 2000, ICFP '00.

[4]  Yann Régis-Gianas,et al.  Stratified type inference for generalized algebraic data types , 2006, POPL '06.

[5]  Philip W. Trinder,et al.  Comprehensions, a Query Notation for DBPLs , 1992, DBPL.

[6]  Tim Berners-Lee,et al.  Hypertext transfer protocol--http/i , 1993 .

[7]  Giuseppe Castagna,et al.  CDuce: an XML-centric general-purpose language , 2003, ACM SIGPLAN Notices.

[8]  Peter Thiemann,et al.  WASH/CGI: Server-Side Web Scripting with Sessions and Typed, Compositional Forms , 2002, PADL.

[9]  John Hughes,et al.  Generalising monads to arrows , 2000, Sci. Comput. Program..

[10]  Stéphane Ducasse,et al.  Seaside — a Multiple Control Flow Web Application Framework , 2004 .

[11]  Vincent Balat,et al.  Ocsigen: typing web interaction with objective Caml , 2006, ML '06.

[12]  Emmanuel Chailloux,et al.  O'browser: objective caml on browsers , 2008, ML '08.

[13]  Mark Nottingham,et al.  The Atom Syndication Format , 2005, RFC.

[14]  Matthias Felleisen,et al.  Implementation and use of the PLT scheme Web server , 2007, High. Order Symb. Comput..

[15]  Alain Frisch,et al.  OCaml + XDuce , 2006, ICFP '06.

[16]  Roy T. Fielding,et al.  Hypertext Transfer Protocol - HTTP/1.1 , 1997, RFC.

[17]  Olivier Danvy Functional Unparsing , 1998, J. Funct. Program..

[18]  Daan Leijen,et al.  Domain specific embedded compilers , 1999, DSL '99.

[19]  Erick Gallesio,et al.  Hop: a language for programming the web 2.0 , 2006, OOPSLA Companion.

[20]  Jérôme Vouillon,et al.  Lwt: a cooperative thread library , 2008, ML '08.

[21]  Juan-Carlos Cano,et al.  HOP: achieving efficient anonymity in MANETs by combining HIP, OLSR, and pseudonyms , 2006, OOPSLA 2006.

[22]  Philip Wadler,et al.  Links: Web Programming Without Tiers , 2006, FMCO.