Dear Rooters
Since ROOT is currently undergoing an exponential growth phase with the continuous
addition of new packages, i.e. libraries, please allow me to make some suggestions
regarding a proposed re-organization of ROOT.
Since many years I am using R ( cran.r-project.org/ ) at work and ROOT at home,
thus I believe that I am able to compare both software systems, both having advantages
and disadvantages (see the attached file “ROOTvsR.jpg”).
Today I would like to concentrate on the package management system of R and suggest a
similar system for ROOT.
In principle the R system consists of a collection of packages which can be divided into:
1, Core packages: e.g. base, graphics, stats
2, Recommended packages: e.g. MASS, boot
3, Contributed packages: e.g. gam, tree ( cran.r-project.org/src/contrib/PACKAGES.html )
4, Special software systems: e.g. for bioinformatics ( www.bioconductor.org )
When you download and install R you will find that only the core and recommended
packages are installed which together constitute the “packages in the standard library”.
Additional packages can be installed on demand from within R with a simple command
“install.packages()”.
Looking e.g. at package tree: cran.r-project.org/src/contrib/D … /tree.html
you can see the following advantages of the package system:
- the basic R system has a reasonable size and can be maintained separately
- additional packages can be installed when necessary
- contributed packages each:
-
- have their own author(s) and maintainer(s)
-
- can be updated independent of the main R package
-
- can have their own license, e.g. GPL, LGPL, free for academic use only, etc.
-
- can have their own dedicated website with documentation etc.
Analogously to the R package system I would like to suggest that the ROOT system
could be devided into the following packages, i.e. libraries:
1, Core libraries
2, Recommended libraries
3, ROOT compliant libraries:
These are libraries especially created for ROOT with classes derived from TObject, and
adhering to the ROOT coding conventions
4, External libraries:
These are e.g. wrappers to external libraries for ROOT, or libraries with classes not
derived from TObject or not adhering to the ROOT coding conventions
Here is my suggestion for the different libraries:
1, Core libraries:
These include the ROOT core classes as shown in Figure 1-2 of the ROOT UserGuide,
and e.g. libGraph, libHist, libMinuit, libTree, etc
2, Recommended libraries:
These include e.g. libGui, libGX11, libProof, libTreeViewer, etc
3, ROOT compliant libraries:
These include libraries recently added to ROOT such as e.g.:
- the Geometry package libGeom, libGeomPainter
- the FOAM package libFoam
- the MultiLayerPerceptron package libMLP
- the Fumili package libFumily
- Toolkit for Multivariate Analysis (TMVA)
- libMinuit2, libSPlot, libMonaLisa etc
4, External libraries:
These include wrappers to external libraries such as
- TFFT, wrapper to FFTW3
- maybe RooCARDS, a wrapper to the Stuttgart Neural Network Simulator
- maybe a wrapper to the GNU Scientific Library
- maybe a wrapper to bonsai.ims.u-tokyo.ac.jp/~mdehoo … e/cluster/
and libraries with classes not derived from TObject or not adhering to the ROOT
coding conventions such as: - libMathCore and libMathMore
- libRooFit
The core and recommended libraries constitute the basic ROOT system which can be
downloaded from the ROOT website and is available from cvs. It is updated on a
regular basis.
Both ROOT compliant libraries and external libraries can be downloaded and added
on demand, having the following advantages:
- the basic ROOT system has a reasonable size and can be maintained separately
- additional libraries can be installed when necessary
- contributed and external libraries each:
-
- can have their own author(s) and maintainer(s)
-
- can be updated independent of the main ROOT system
-
- can have their own license, e.g. GPL, LGPL, free for academic use only, etc.
-
- can have their own dedicated website with documentation etc.
As I said this is a suggestion only based on my experiences with both R and ROOT.
Maybe others might be willing to comment.
Best regards
Christian