Damien Metzler's posterous

Damien Metzler's posterous

Damien Metzler  //  

Oct 28 / 6:24am

OpenSource @ Work : opensocial integration in Nuxeo

When I saw that my blog was mentionned in the What's New release note of Nuxeo 5.3, I thought about writing something newer thant September 9th... So, this is it, when the RC1 was announced, Erid said : "OpenSource @ Work" about the opensocial integration in Nuxeo. So this post will be all about our collaboration with them and how all this took place. 

First of all, this has not been very easy... Since OpenSource software is often a meritocraty, we had to proove our merit on what we were doing. It all began in July 2008 when we choosed the Nuxeo platform to hold our iGoogle like intranet. In August, we were able to make a tiny demo, integrating WebEngine (first version a that time) with Shindig. We were able to add gadget and drag'n'drop them on collaborative space. I made a small screencast and sent it to Eric. He anwsered : we should find some ways to work together.

I was then invited to make a talk on WebEngine in september : video can be found here (sorry first the moves, this was my very first talk...). After this talk I met Thierry Delprat (CTO) and Florent Guillaume (Head of R&D) to show them what we built. First problem for us, we were using the first version of WebEngine that didn't include the JAX-RS API yet. Then the product was not integrated into DM and was only a WebEngine app. At that time, Nuxeo had lots of work on the 5.2 branch and did not have sufficient time to work on OpenSocial.

After that, I came back to my office and continued our work on the portal... still with WebEngine v1 (this has been a real pain). At Nuxeo Developper Day, in december 2008, i made another talk (video here) with a better demo. The day after, we worked with Jean-Marc Orliaguet (Nuxeo Theme Developper) about the different approaches we had :

  • For Jean Marc : a Gadget is a piece of interface (a fragment) that can be stateful
  • For me : a Gadget is a Document inside a collaborative space (I will surely write a post about all the possibilty of this model)

The two approaches are complementary since, the first one is from a UI point of view : i want to decorate the page with gadgets and the second one is from a collaborative view : users can share gadgets as other documents. I think that at some point we will find how to yield those different approaches.

In February 2009, Eric Barocca came to us to see we exactly what we were doing, and what were our plans. After that, Nuxeo created a Nuxeo-dev mailing list that we could use to ask questions. Leroy Merlin was then designated as a possible future contributor.

After that, Nuxeo created for us an Opensocial Mercurial repository so that we could commit our dev and that Nuxeo could study our code. We really began commiting in May 2009. At this period, we were completely refactoring the platform : use of GWT-ext for the D'n'Drop interface, use of WebEngine JAX-RS (at last !), real integration of Shindig as a Nuxeo Runtime Service. As a result of that, I've been able to integrate the GWT container into the JSF Nuxeo-DM interface and made a small screencast of a collaborative space into Nuxeo-DM giving the ability to put as many dashboards you want in all workspaces.

Shortly after that, Ian Smith began to work on our code. He and Thierry Delprat came to us to understand what were our plans and how it could be integrated in the future 5.3 release. Then the OpenSocial repository has been merged with the nuxeo-features one, well integrated and used to replace the old JSF based dashboard. In mid-october, the RC1 came out, and now the GA.

The main problem for working together is that the release timelines are not aligned. When Nuxeo freezes some code, we want to add some functions. Mercurial hels us a lot but it's not easy. I think that for resolving this, we'll had to learn how to work together with time and perhaps share some realease dates.

From the licensing point of view, Nuxeo and Leroy Merlin are both owner of the contributed code that is LGPL licensed.

As a conclusion, it's not very easy to join such a big project but all the team is very proud of it. I'm sure there will be real benefits from that :

  • Our code is reviewed by Nuxeo Architects and well integrated in the core distribution.
  • We had to make the generic code generic, and make the specific parts plugin of it.  I really think its a proof a quality and that i made us ask for the good questions.
  • Apart from making the code generic, it did cost us nothing
  • I think that the value of a portal is the number of app you can integrate into it. Theorically we have all iGoogle gadgets that are integrable (and it make a lot ;-) ). I other people contribute by making "Enterprise ready gadgets" on top of the Nuxeo Platform, we will gain benefit from it (if you want some ideas, call me ;-) )
  • As funny as it could be, as we have a Nuxeo Connect Support, we could post JIRA tickets about our own bugs (really funny :-p)

Dicussing with other IT friends, they said : "I'm not sure my company would agree to contribute to OpenSource software !".

We did it so :"Yes we can !", "Yes YOU can !"

FYI a gadget can be as small as a hundred lines of JS code (postit gadget)