Re: [Fwd: Re: Wikipedia criticism about root]

From: cstrato <>
Date: Wed, 28 Jun 2006 21:48:05 +0200

Hi Andy

Before I comment on your (unfair) criticisms of ROOT, especially on your InsectNation page, let me tell you one experience that I had some years ago (I am using ROOT extensively since 1999 to write my own complex gui application):

When you go to Bjarne Stroustrup (you know he is the inventor of C++) homepage: today you will see that he mentions ROOT as one of the successful examples of using C++ besides many other applications. However, a couple of years ago Bjarne Stroustrup has mentioned only TWO (!) programs as successful examples what can be done with C++: - POOMA, which does use templates extensively, and - ROOT, which at that time did not use templates at all!! This acknowledgment of ROOT as great framework by the inventor of C++ speaks for itself!

Since one of your main criticisms of ROOT is its lack of using templates, let me tell you that this is one of the reasons why I like ROOT. For my opinion of using templates, read my comment in:

You donīt like the monolithic design of ROOT? Let me tell you that the most successful frameworks are based on monolithic design such as MacApp or NextStep (now MacOS X). See my comment in: which will also answer your question where ROOT got the "T" prefix on everything!

I completely disagree with your criticism on CINT, which I consider one of the most ingenous pieces of software ever written: CINT allows you to easily write simple macros, analogous to the R scripts, and run them immediately. If you want to adhere to C++ standard, you can simply compile the macro by typing "macro.C+" and you will get all error messages. I am developing all parts of my program (including the gui part) as CINT macros: When they do what I expect, I compile them with ACLIC to remove the errors, and then I include the code in my program. Since using CINT/ACLIC I see no need to use any debugger anymore (most of the time).

Since you write "the R project have produced a more powerful analysis framework...", read my comparison between ROOT and R in:

Besides not using ROOT, it seems that you have never used R with large amounts of data. Due to severe memory management problems of R most users of Bioconductor, a bioinformatics package of R, which I use almost daily, complain in the Bioconductor mailing list all the time, that they cannot analyse their data due to the memory problems of R!
These problems of S-Plus, which I used at that time, and now of R were the reasons that I was looking for an alternative, and luckily I found ROOT, which perfectly fitted my requirements, and I am NOT working in the HEP community.

You are confused whether ROOT is a file format, a stats analyis system or what. The same could be said about Appleīs HyperCard. Even Apple itself did not understand the power of HyperCard, but most users loved it. The same can be said about ROOT.


P.S.: Someone not using ROOT should not write an article on ROOT in Wikpedia!

P.P.S.: You are free to comment on my comments but do not expect me to answer your comments since I do not have time to waste.

Andy Buckley wrote:
> This one also seems not to have reached the list when I sent it earlier:
> Fons Rademakers wrote:

>>   I am aware of the comments and points of view of Andy, but did not 
>> feel inclined to remove them or move them to the discussion page 
>> myself since that could be interpreted as censorship by the authors.

> Well, now is a good time for discussion, then! I guess you're also aware
> of my more extensive criticisms at
> I was contacted a while ago by Philippe Canal about some aspects of this
> page, to which I replied but was never sure if they were considered
> valid criticisms or not. I would appreciate feedback on which of these
> are significant and which aren't (or have been fixed).
>> We are well aware of some of these issues, but they all have a good 
>> reason for being like they are for the time being (STL, doxygen, etc. 
>> did not exist when we started with ROOT, 

> The STL wasn't available in 1994 (when ROOT was started), but the draft
> did exist and standardisation came soon afterwards. Anyway, I would
> argue that that doesn't explain why ROOT still doesn't use the STL:
> CLHEP was started in 1992 and uses the STL extensively.
> Similar things could be said about CLHEP and Doxygen: conversion to use
> Doxygen requires little more than adding a few extra / symbols with code
> that's already adequately commented. This can be done gradually with
> little effort: much less than maintaining a custom C++ parser and HTML
> generator! Of course, I wouldn't mention this but for Doxygen's output
> being far more user friendly than that on the ROOT API pages: a
> significant factor in code where the API is very much exposed to users.
> And, of course, I still can't fathom why the TH1 classes "have a good
> reason" for having a GetZaxis() method :-)
>> the system is "monolithic" because all components or plugins use 
>> infrastructure provided by the core of the system, it is just as 
>> monolithic as the successful Java class library). 

> There is definitely a case for better choice of words on the Wikipedia
> page here. The library segmentation is quite reasonable and I can
> understand the reason for bundling many components together. However,
> it's unclear to me why projects that have no natural dependency on the
> ROOT core infrastructure (e.g. Reflex, Minuit++ and the math libraries)
> need to be bundled with ROOT rather than just linked against. I believe
> there may have been some issues with these packages breaking the ROOT
> "capitalised method names" convention, but that seems a case for a thin
> wrapper library rather than conversion and encapsulation of the original
> package.
> I remain confused about whether ROOT is a file format, a stats analysis
> system, a simulation framework or what. But to use any single piece (the
> file format being a good example) I have to use whole system. Guy
> Barrand rewrote the ROOT I/O system as a stand-alone library (Rio)
> several years ago, but for some reason this approach was dismissed and
> largely ignored.
> Unfortunately, I don't know of any single word that describes the above
> accurately. Perhaps because it's less of a technical issue and more a
> reflection of the attitude that ROOT should be *the* single-source
> analysis package for HEP. Encouraging use of interoperable data formats
> and "tool-agnostic" utility libraries would allow physics users to
> choose their interface of choice without compromising the results. At
> the moment, much of HEP computing still suffers from a culture of
> re-invention, and "assimilating" useful stand-alone packages only
> encourages this trend.
>> However, as you might know, ROOT is still evolving and over time some 
>> of these issues might be addressed.

> I understand that the majority of use for ROOT is for histogramming,
> statistical manipulations on data trees etc. Hence, it would be nice to
> see improvements in the histogram class structure, error combination
> code, etc. --- after 14 years of ROOT I find it surprising that these
> areas are not more "polished". This seems more urgent than ODBC support
> or development of apache modules...
>> Also the alternatives Andy mentions, AIDA, CLHEP, HippoDraw, JAS, etc. 
>> are themselves nothing more than first attempts and in that not even 
>> successful first attempts.

> I asked Paul Kunz, the author of HippoDraw, what he thought of this. He
> informs me that "It is not correct to say first attempt for HippoDraw.
> HippoDraw was first done in 1990 with Objective-C as the OO GUI language
> and C as the core. It was my second project in OOP at that time. The
> current C++ was designed to replace the C code about 4 years ago after
> over 10 years experience in OOP design." HippoDraw has over 800 active
> users in the Mac OS X community alone. Unsuccessful?
> Similar things could be said about CLHEP and JAS. If anything, CLHEP
> suffers from a development deadlock: I have opinions on this as well,
> but the wide use of CLHEP indicates that it has certainly not been an
> outright failure. The same applies to ROOT: in both cases there are
> improvements to be made.
> Not that it matters, but personally I find HippoDraw a relative joy to
> use --- enough to recommend it to graduate students in a recent course
> on data analysis. Particularly for writing custom applications, the
> histogramming class structures in HD and JAS/JAIDA make a lot more sense
> than the ROOT ones. Hence, I'm afraid, I don't use ROOT much anymore, so
> my apologies if I'm out of touch with recent developments.
>> If you or somebody else wants to update the ROOT wiki page, please be 
>> our guest.

> Yes, please do!
> Andy
Received on Wed Jun 28 2006 - 21:48:30 MEST

This archive was generated by hypermail 2.2.0 : Mon Jan 01 2007 - 16:31:59 MET