As I have announced 2 years ago, I decided to move to a new company and to take new challenges. The website, www.ocamlcore.com, will soon be converted to a static website. As announced, this change will not affect at all the community services offered through ocamlcore.org (especially forge.ocamlcore.org), except that we will migrate to .ocaml.org DNS (soon) but we will keep the old DNS as well with some redirect.

I am very happy to have been able to run this company for 4 years. This was great and helps me to tackle various challenge in OCaml.

4 weeks ago, on Friday April 15th, the annual OCaml Meeting took place at Telecom Paris. OCamlCore (the company), organized this meeting for the fourth time. The event was quite a successful day. There were 65 attendees and 12 talks.

It offered a great opportunity to exchange ideas around OCaml and its open-source community. The schedule is available on the wiki.

For the first time, we had a long discussion about the web presence of OCaml. I was very happy about this because I think that the OCaml is not very well "rated" due to its web presence. The main talk was, of course, the one by Ashish Agarwal which presented a project to create a professional looking web portal. But the talk about OCamlCore.org also lead to an extended discussion about this, in particular about the interaction between github and the OCamlForge.

There is an increasing use of git among OCaml developers. This trend should be taken into account. Today, there is a lot of OCaml projects that choose github rather than the OCaml Forge. I think that github offers what most developers expect from such services. It allows them to start working directly, without unnecessary administrativia. The interface is nice looking (and probably 1000% more Web 2.0 than FusionForge).

However I still think, the OCaml community needs its own FusionForge instance:

git is not the only VCS around, and FusionForge provides other VCS (svn, darcs, mercurial)

even with 1000 OCaml projects on github, it will stay under the 0.1% of github — so OCaml will remain a very small community on github

github is a closed source (AFAIK) web service, the OCaml forge is still 100% open source

There are many solutions to enhance the interaction with github:

finish the activity-reporter, that will help to publish feeds about OCaml projects hosted on github

create a github umbrella project that gather all OCaml projects (e.g. an ocaml.org team on github), that will ease interaction with the OCaml Forge and planet

If the issue is really about a nice looking website, we can use gitorious. This is an open source project that provides almost all features of github. As far as I am concerned, I think a gitorious running on ocamlcore.org would be a very nice solution. It will required an integration with the account already created on the Forge, but it will be very nice.

OCamlForge team is open to any serious proposal. If you have ideas and enough motivation to realize them, we can offer you assistance by hosting your service on a *.ocamlcore.org subdomain. If you are ready to start, please let us know by mail.

Besides, we do need help to maintain the services offered on ocamlcore.org. Please contact us if you want to join!

Please also note that OCamlCore won’t be able to organize next year’s OCaml Meeting. If you liked past editions of the event, if you want to attend future editions, please consider organizing it! If you have time and energy to dedicate to the organisation of the Meeting, please send me an email and I’ll try to help with my experience. In other words : We are looking for volunteers to organize OCaml Meeting 2012.

This year group photo of participants:

I have upload all the slides on the wiki. I still need to publish the video of the meeting, but this is a long task.

Since 2 weeks, I have been busy working on the forge. I have decided that the FusionForge migration should be done before the end of the year and this is now a reality. The OCaml Forge is now running using FusionForge, not yet stable, 5.1 branch.

I have changed my mind concerning the forge. Rather than sticking to Debian stable GForge packages, we will use an half customized forge.

What’s new in OCaml Forge ?

You can also request to create a personal git repository for project using git.

It is now possible to customize your personal page and each project page. You can drag and drop boxes and even remove them.

The overall style of the forge should be better. It uses more CSS and more compatible CSS compatible HTML elements. This is something to test on the long run. We now use an unified theme for OCamlCore.org websites, contributed by Florent Monnier a long time ago (volunteers/ideas welcome to improve this visual theme).

It is now possible to use a wiki for your projects, you just have to activate it in the Administration panel -> Tools. It uses MediaWiki and the role of the wiki are synchronized with the forge accounts.

In order to make the forge a little more "Web 2.0", I have activated the Gravatar plugin. This means that you can get a personal picture in front of your name in your projects, like in the screenshot. If you get the "G" picture, it means that you don’t have an account on gravatar or that the email associated with this account is not set. The email used here is the one you define in your forge settings. Visit the Gravatar website to create an account or update your old one. Note that this is not mandatory, you can just keep the default icon.

FusionForge now offer an integration with Hudson. The extunix project administrator (ygrek) has helped me to see if it is working. Here is a "weather report" for the extunix project. You can browse the various build run on the Hudson tab. If someone want to contribute the setup of Hudson on the forge, contact me (gildor @antispam@ ocamlcore.org).

FusionForge now uses tags to sort project. The former trove map is still here but tags are now the default. They are freeform, so you can just use whatever you want.

There was a lot of bug fixing. For example, the tracker is now really better. You can create complex searches and save them. For example, see the "due in 0.2.1" search for OASIS bugs. You will probably find additional bugs. Don’t hesitate to report them to the Site admin bug tracking (see below).

Why use a customized version?

Because it is part of the Open Source ecosystem. The OCaml Forge should help the FusionForge community. The best we can do is to try and provide back patches. This is exactly what we have done with some enhancements to the plugin scmdarcs:

Multi repositories support

Scheduling of extra repository creation

The customized version will also allow us to quickly solve bugs discovered through the OCaml Forge.

We will try to do our best to provide back the improvements we will make on the OCaml Forge to the FusionForge community.

Checklist for hosted projects

Tag your projects, for example if you are using "_oasis" in your project, you can tag it "oasis"

Check that everything is still accessible, the upgrade can have created broken links, report them to us

Check that you use the correct SCM plugin, maybe you were using SVN or CVS because you don’t have Hg or Bzr option before, you can now switch back to display the SCM tab with a browser link in it

Activate the wiki if you need one

OCaml Forge in general

If you want to make some advertising around for the OCamlCore.org website:

The OCaml Forge is now serving 190 projects for 300 users. We reach our initial goals and have enough data to show that OCaml community is working. We will continue to serve the OCaml community and to give more visibility to OCaml projects.

If you want to help, you can open feature request or bugs against the Site Admin project. This is a place where we can coordinate for site wide changes. For examples, here is a non-exhaustive list of how you can help us:

Fill bugs concerning *.ocamlcore.org websites

Discuss how to spread the word: explain how you think we can make the OCaml community more visible

Start or move your project on the forge, even if you host your source code elsewhere (Github), don’t hesitate to use the OCaml Forge as a distribution or backup website

Checkout the FusionForge sources of forge.ocamlcore.org and help us to maintain them

OASIS is a tool to integrate a configure, build and install system in your OCaml project. It helps to create standard entry points in your build system and allows external tools to analyse your project easily. It is the building brick of OASIS-DB, a CPAN for OCaml.

This release takes almost 6 months to complete. This is a very long time, but the changelog matches the length. It closes 25 bugs and grants 31 feature requests.

A big part of the project was to match the need of the project OASIS-DB. The most visible part of this refactoring is the fully documented API and the new library oasis. This library is used to parse _oasis files and to manipulate its data. We use it in OASIS-DB but one can also use it to extract data and process it.

The other visible change for the user, is the command-line interface. We decided to use a lowercase name for the executable and a Subversion-like subcommand system. So the former command "OASIS -setup" is now "oasis setup". We manage now existing subcommand as plugins. We implemented also a set of new subcommands.

Among these subcommands, one is of a particular interest: "query". It parses an _oasis file and can return the value of any fields. For example: "oasis query Version" will return the version contained in the _oasis file located in the current working directory. It can be very useful to build shell scripts using OASIS. To have a complete listing of available fields, run "oasis query ListFields" on a particular files.

Most of the feature requests and bugs closed by this release are the result of the OCaml Hacking day demonstration and further work by other people. I would like to thank everyone that has submitted a bug or a feature request. The best way to make the OASIS project a great tool is to try it and tell us what is wrong with it — or what should be improved.

This release, as the one before, has been tested on Windows and Linux. The installers are now built on Centos 5.5, to allow wider compatibility.

Allow to redirect messages through a function and use a context to avoid global variables. This is an OASIS-DB website requirement, but we fallback to a global variable in oasis.base

Use the same policy as Debian for version comparison (copied from dpkg)

Add MIT, CeCILL licenses and make unknown license less fatal

Allow https, ftp, mailto, svn, svn+ssh for URL

Replace Str by Pcre

Don’t modify package data structure through plugins, we just issue warnings and error when something is missing. This is compensated by a better ‘quickstart’ that can automatically complete required fields (e.g. it adds ‘ocamlbuild’ as a BuildDependency for ‘ocamlbuild’ plugin).

Set default for test type to ‘custom’ plugin

Use a more simple lexer for _oasis

Warn if the use of ‘\t’ to indent lines is inconsistent in an _oasis file (e.g. mix of ‘ ‘ and ‘\t’)

Allow to use ‘flag’ as environment variables in _oasis (e.g. flag test can be used as Command: echo $test

oasis.base library:

Exit with an error code when tests fail

Don’t account skipped test

Delegate the "setup-dev" actions to the executable ‘oasis’ rather than embedding it into setup.ml

Add a ‘-version’ to setup.ml to know what version has generated the file

Add a ‘-all’ target that does "-configure", "-build", "-doc" and "-test" in one run

Add a ‘-reinstall’ target that ‘uninstall’ and ‘install’

Use the right command to delete file on Windows

executable ‘oasis’:

Use a subcommand scheme, like subversion. For example, it replaces the former "OASIS -setup" by "oasis setup". Each subcommand can be a small plugin

Add a "query" subcommand to extract data of _oasis from command line

Add a "setup-clean" subcommand that removes generated files and helps cleaning OASIS_START/STOP section of their content

This version is only a very early prototype. For now, the main focus was to adapt OASIS to the requirements of OASIS-DB. In particular, ocsigen brings additional constraints because the library is used at the same time by many users. For example, it implies to replace Str by Pcre for regular expression because the later is thread safe.

The login is connected to a stub so that everyone can login without password. OASIS-DB will use forge.ocamlcore.org authentification in a future version but this will also restrict access.

There is still a lot of things to do, but you can:

upload a tarball with or without _oasis file,

download a tarball from its original location or directly on OASIS-DB,

browse available packages,

render _oasis files using a subset Markdown for description (thanks to Mauricio Fernandez for this part)

OCamlCore, with support from the OCaml enthusiasts at Jane Street, is working on creating OASIS-DB, a CPAN for OCaml. The goals of OASIS-DB are to reduce the paperwork required to release and update an OCaml package, and to provide integrated management of library dependencies.

OASIS-DB is also intended to help packagers for a variety of systems, including Debian, Fedora, GODI and others, by:

In addition, we hope to ease integration with GODI by publishing packages using an alternative GODI repository, when translation of the _oasis file with GODIVA is possible. It will also integrate with other indices of OCaml packages, like the OCaml LinkDB and the OCaml Hump.

The project is almost a pure OCaml project. It uses ocsigen for its website and processes _oasis file in an uploaded tarball to publish a package. The project is in fact a sub-project of the OASIS project and reuses user information provided for this tool.

We hope that this project will provide the OCaml community with a great tool to manage a growing number of small libraries. Don’t hesitate to comment on our technical specifications, if you think we’re missing something.

This project will cover what was named "bocage" and "OASIS self-contained" during the OASIS presentation at OCaml Meeting 2010.

One year ago, OCamlCore has started a project to help creating a fully featured build system: OCamlAutobuild.

This system is designed to help upstream developers to standardize their build system around a few entry points that can be re-used by packaging system. It doesn’t create yet another build system but just provide a way to use one already existing — applying a standard to call it.

On Friday, 4th December 2009, OCamlCore was at the annual Caml Consortium meeting and gave a talk about OCamlAutobuild. Packaging issues was discussed before within the consortium and OCamlCore wanted to show the progress of its own project.

The conclusion of this presentation was:

Its name is too close to “automake”, which some people consider as old and full of black magic;

Will it really ease the work of packagers ?

The solution of the first point is to rename the project to “OASIS”. This is derived from the name of the central file used for OCamlAutobuild: _oasis.

The second point is more difficult to answer. We are planning to be able to produce GODIVA files by translating _oasis files. Using a plugin such as “StdFiles” we can meet the policy of GODIVA concerning upstream package (a script called configure, make all and make opt). However, GODIVA can only handle a subset of what GODI can process. This is a restriction but hopefully this will still help GODI maintainers.

Concerning cooperation with other packagers such as Debian and Fedora, I think we will only check that data from _oasis and from the packaging system are almost synchronized. For example, we will check that build depends in “debian/control” is enough to fulfill build depends in _oasis.

OASIS supports now OCamlbuild by default and is planning support for OCamlMakefile and OMake.

OCamlCore joins the Caml Consortium. As professional user of OCaml and strong believer in functionnal programming, this was a natural move. The consortium will bring more visibility to our continuous action on the OCaml market. It also show the strong commitment of OCamlCore in OCaml. We hope that this will help INRIA team.