OCaml Forge


From Google Summer of Code coordination Wiki

Jump to: navigation, search

This is a draft proposal, if you want to apply remove this sentence and write your name in the field Student.


  • Mentor: Vincent Balat
  • Student: write your name here
  • Summary: Implementation of a modern and very dynamic interface for Ocsforge's bug tracker
  • Required skills:


The Ocsigen framework 2.0 allows to program very dynamic client server applications fully in OCaml in very few lines of code. It takes in charge automatically the communication between the server and the browser, and checks many things at compile time. One of the key feature of Ocsigen 2.0 is that it allows one to mix commonplace Web interactions (URLs, forms, links, bookmarks, back button) with dynamic client side features. In particular, the client-side program does not stop when the user clicks a link, sends a form, or presses the back button–yet the user still can save bookmarks on pages! This opens up a wide field of new possibilities, and should facilitate the emergence of new kinds of Web applications.

However, almost no Web site is currently using these new features. We propose to develop the first real size client/server Web application, making the most of what Ocsigen is providing. It will consist in a very dynamic interface to manage tickets and todo lists in a forge. This project will be part of the Ocsforge project whose goal is to build a forge in OCaml for hosting software projects. We believe that the high level of programming we have, and the very dynamic features Ocsigen is providing will allow to make something very different from the usual bug trackers, a lot more user friendly. It will also be a good test of the new features of Ocsigen itself.

Among the features we plan to implement:

  • a tree view of Ocsforge's tickets and projects
  • Easy folding/unfolding of tasks
  • Easy and quick navigation in the tree with ability to set bookmarks on the views
  • Automatic update of the tree
  • Filters on tickets
  • Calendar
  • Communication tools between developers
  • and many other possibilities