This page describes the existing open source development frameworks for web applications, with the goal of identifying one that would fit our needs for the demexp web client.
Most of these frameworks follow the MVC model.
| Name | Website | Licence | Ajax or RIA | Language | Comments |
|---|---|---|---|---|---|
| Ex-nunc | http://www.ex-nunc.org/ | MIT | Not yet | OCaml | I like the attitude of ex-nunc developers |
| WDialog | http://wdialog.sourceforge.net/ | GPL | No | OCaml + XML for page description | Support dialogs (set of pages) with information between dialogs. No i18n. |
| mod_caml | http://merjis.com/developers/mod_caml | LGPL | No | OCaml (bytecode only) | Work within Apache web server (tied to Apache). |
| OCamlNet | http://sourceforge.net/projects/ocamlnet | license | Not included | OCaml | Provides CGI, FCGI, SCGI, AJP, and Apache “mod” connectors. mod_caml style template |
| Ocsigen | http://www.ocsigen.org/ | GPL | Under devt | OCaml (or OCamlDuce) | Uses its own web server |
| Django | http://www.djangoproject.com/ | BSD | Not yet | Python | Built-in support for localization. Works with own DB or SQL |
| Quixote | http://www.mems-exchange.org/software/quixote/ | CNRI OPEN SOURCE LICENSE AGREEMENT FOR QUIXOTE-2.4 | Yes | Python | Used to make lwn.net |
| Turbogears | http://www.turbogears.org/about/index.html | MIT licence | Yes, good integration | Python | - |
| Catalyst | http://catalyst.perl.org/ | Unkown, free software | Yes, by plugins | Perl | Close to Ruby On Rails, Maypole, Spring. |
| Maypole | http://maypole.perl.org/ | Same as PERL itself | No | Perl | - |
| Ruby on Rails | http://www.rubyonrails.org/ | MIT licence | Yes, Ajax on Rails | Ruby | - |
| Ozone | http://www.ozoneframework.org/ | LGPL | No | PHP5 | - |
| Pagekit | http://pagekit.org/ | RICOH SOURCE CODE PUBLIC LICENSE | No | Perl | - |
| PRADO | http://www.xisc.com/ | BSD | Yes | PHP | - |
| CivicSpace | http://civicspacelabs.org/home/civicspace/features | GPL | ?? | ?? | - |
| Deme | http://www.groupspace.org/ | Affero General Public License | Yes | ?? | - |
| Moodle | http://docs.moodle.org/en/Features | GPL | ?? | PHP | Moodle is oriented towards building pedagogical web sites. However, it could be useful for the way it considers social constructionism: social group constructing things for one another, collaboratively creating a small culture of shared artifacts with shared meanings (see http://docs.moodle.org/en/Philosophy). |
| OpenLazlo | http://www.openlaszlo.org/ | Common Public License Version 1.0 | Yes | LZX: Javascript + XML | Use Java for compilation of applications |
| Zend Framework | http://framework.zend.com/ | BSD | ?? | PHP | No support of i18n |
| Neko | http://nekovm.org | LGPL | No | Neko | small embeddable VM with Apache module |
| haXe | http://haxe.org | GPL | Yes | haXe | target three platforms : Javascript/AJAX, Neko (for Server-side) and Flash (SWF). High level OO language with many modern features (type inference) |
Some Frameworks that were not worth considering (e.g., based on Java, non-free, etc.) did not make it into the above list. Here they are:
An introduction: http://quixote.ca/overview/paper.html
The Debian package (in main): http://packages.debian.org/stable/web/quixote
Good points about Quixote:
Bad points:
| Functionality | WDialog | Ex-Nunc | Ocsigen | mod_caml |
|---|---|---|---|---|
| Continuations based framework | No | No | Yes | No |
| Static validation of xhtml | No | No. Run time validation planned | Yes | No |
| i18n support | Basic support in CVS version | No | (use a i18n library such as ocaml-gettext) | Use an external library |
| Database backend | No | Using external library | (Using external library) Advanced support under development (2007-2008) | (Using external library) |
| Session through hidden form fields (POST) | Yes | Yes | Yes | Yes |
| Session through URL parameters (GET) | Yes (through Cgi interface) | Yes | Yes | Yes |
| Session saving | Memory, external daemon, client hidden fields, database | Memory, client hidden fields | Using closures in memory, and/or database on hard disk. Cookie at client side | Cookie and database |
| Validation of typed script parameters | No | Yes | Yes | No |
| Script form | XML description + OCaml code | HTML that contains OCaml code in special tags | OCaml code to describe the logic of the site. Ocaml functions generate pages (no specific template system). | HTML templates, separate from OCaml code |
| Script interaction | OCaml functions called with simulated events | ?? | OCaml function calls | OCaml function calls |
| AJAX support | No | Not yet | Under development (2007-2008) | No |
| Protection against HTML injection | Yes | Yes | Yes | Yes, in templates |
| Protection against SQL injection | No | No | Yes, if using for example PG’OCaml or ocamldbi for database access | Yes, if using PG’OCaml or ocamldbi for database access |
| Development status | 2.1.2 | ?? | version 1.0 | 1.4.0 (CVS version) |
| Community | very small | none | small | ?? |