libRIO

From: barrand <barrand_at_lal.in2p3.fr>
Date: Mon, 26 Mar 2007 08:59:47 +0200

    Hello ROOT

   Looking at the agenda of your workshop, I see from the abstract of Philippe Canal that it is intended to introduce a libRIO in ROOT.

   And this poses me a problem since, from 2002, I deliver a Rio package used also in HEP context, with a libRio in it. And clearly your new libRIO library will clash with mine in all applications where people mix my things
(OpenScientist) with yours (then ROOT) and this on any
platform having a fancy case insensitive file system (then mainly Windows and MacOSX). I have done the technical check, and clearly a program cannot be linked, on a Windows and a Mac, with two differents libs being libXXX and libXxx.

   And it appears that at LAL, I have people that mix OpenScientist and your things within their Geant4 simulation (I warn them it was not a good idea to use your things, but well...). And I suspect that they are not alone in the world in doing that. I can also point out that I am going to receive this clash directly to the face within the LHCb event display named Panoramix (and not Obelix), which is supported on Windows. (We do not run yet on Mac since it appears that this common platform is globally out of reach of the LHC software).

   Then, since there is an all-together party at CERN about ROOT, I would like to suggest, as a matter of discussion for your conclave, to strongly think to

     NAMESPACE YOUR LIBRARIES    It is not the first time that I had a library name conflict with your things (I had already one with your libCore on Windows). And, put all together, it is a raw miracle that you did not finish to clash strongly on some operating systems by using, for your libraries, common names like :

     Core, Matrix, Html, Gui, SQL, New, Postscript,
     Thread, Tree, Hist, XMLIO, Graf, Spectrum, Reflex, etc...

A quick jump on Google shows that we receive hits when looking for libsql, libreflex, libgui, libgraf, libmatrix, libthread, etc... and that these hits do not concern your libraries. Then, continuing like that is clearly an astounding lack of engineering precaution / vision from your side.

   Then as a concrete, positive, and constructive proposal, I suggest that you strongly think to namespace your libs with something like :

       libROOT_<xxx>

since it seems that the name of your overall product is ROOT.
(For the casing I have a doubt since we find everywhere in the code
ROOT, Root or root (no rOOT, rOOt, rooT for the moment)). Then I let you decide, if at least you can do that, what is the name of your product).

   And clearly, namespacing with "R" is not sufficient.
(In fact "R" would not be consistent with the "T" that namespace
today the classes. But well, let us pass on that). (Moreover there is also a product named "R" around).

   Then, with the upper suggestion, it would look :

       libROOT_IO
       libROOT_Core
       libROOT_Hist
       etc...

and then you will have a strong guarantee to avoid, forever, clashes with the rest of the world. (Forever, because there is few people with some experience that would dare to name a software "root", which is a defacto misleading name on any UNIX).

   I could even suggest something nicer : mainly to have for the <xxx>, the name (with same casing) of the head directories found in your repository, and then :

       libROOT_io
       libROOT_hist
       libROOT_xml
       libROOT_fumili
       ...

But, well, this is probably too much to ask here.
(I mean, trying to do something nice and elegant).

   If not eared about a global namespacing protection of your libs, I hope anyway to be eared about a renaming of your libRIO (then in libROOT_io to show the example).

   And I remember that the Rio package had been presented at CHEP'04 through a poster and a paper and then, according the common way of doing in scientific business, I have the precedence of the name here. Someone can check also easily on the web, that a libRio is already in the Rio-v3r1.zip of the distrib of OpenScientist-10.0 done on November 2002 (then even two years before the CHEP'04). And that a libRio can be found under

    /afs/cern.ch/sw/contrib/OpenScientist/v15r0 installed in September 2005 on lxplus.

   Time for me to return to my things. The way is long to Tipperary (which is, despite the T, probably no more at CERN, in particular this week).

    Cheers

     Guy Barrand

Research Engineer at LAL/IN2P3/CNRS. Received on Mon Mar 26 2007 - 09:00:15 CEST

This archive was generated by hypermail 2.2.0 : Mon Mar 26 2007 - 23:50:01 CEST