From Wikipedia, the free encyclopedia
Jump to: navigation, search
WikiProject Physics (Rated Start-class, Mid-importance)
WikiProject icon This article is within the scope of WikiProject Physics, a collaborative effort to improve the coverage of Physics on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
Start-Class article Start  This article has been rated as Start-Class on the project's quality scale.
 Mid  This article has been rated as Mid-importance on the project's importance scale.
WikiProject Software / Computing  (Rated Start-class)
WikiProject icon This article is within the scope of WikiProject Software, a collaborative effort to improve the coverage of software on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
Start-Class article Start  This article has been rated as Start-Class on the project's quality scale.
 ???  This article has not yet received a rating on the project's importance scale.
Taskforce icon
This article is supported by WikiProject Computing.

Criticism section[edit]

The criticism section needs to be edited to correct its neutrality, while retaining the valid aspects of the criticism. Please discuss any changes here. AndyBuckley 13:57, 27 June 2006 (UTC)

The main problem of the criticism section is that it is written by someone who is not using ROOT and ignore the advice

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

Such sort of things must be supported by serious solid published investigation rather by rumors. The Wikipedia article may have provided the correct reference to such investigation later on. Valeri Fine 6 July 2006 12:00 pm EDT

I object to that accusation: when I originally wrote the Criticism section, my points were motivated entirely by the experiences of myself and others in using ROOT. They're also the same points that led to me choosing to stop using it. So not so uninformed after all... to me that criticism reads more like:
"P.S.: Someone who doesn't like ROOT should not write an article on ROOT in Wikipedia!"
AndyBuckley 13:30, 3 August 2006 (UTC)

This article, and expanded criticisms, can be found in the RootTalk mailing list archive. There are two threads, starting with and . A threaded view of all posts in 2006 can be found at from which you can see all the posts in these threads by searching the page for "Wikipedia".

Other articles relating to ROOT criticism can be found at and AndyBuckley 12:59, 30 June 2006 (UTC) And also here: . AndyBuckley 13:45, 30 June 2006 (UTC) Some other observations about Root are available here:

It's been suggested on the RootTalk mailing list (by a ROOT developer) that the criticism section be entirely removed and only put back with community approval. That seems inappropriate and reeks a bit of censorship, but the tone certainly needs to be changed. Also, the criticism section is rather large compared to the bulk of the article. As it's hard to express the criticisms in a smaller space, perhaps less critical community members should bulk out the main sections and reword the criticism to use more neutral language. AndyBuckley 13:03, 30 June 2006 (UTC)

Right, Andy, listen i briefly scanned the ROOTTALK discussion and the criticism section in this article. Most of it has to go, this is not the place to put an academic discussion on software engineering. It is completely misplaced, since ROOT was not designed from ground-up as a textbook example but written by Fons and Rene along with them making experiences with OO/C++. But most important: None of the criticisms mentioned keep people from using or contributing to ROOT. It works and right now there is no alternative i know of (it is suggested that there are alternatives to ROOT. Please name one, i cannot think of any right now, except PAW which colleagues of mine continue to use). The section can be replaced by a brief description of the ROOT architecture. If it is not massively pruned by someone else i will do so, soon. gbrandt 19:14, 2 July 2006 (UTC)
Given that the "Criticisms" section is based on personal opinion rather then published material, and does not reflect a large concensus view of the situation it should really be taken out or dramatically reduced. Everybody is entitled to their opinion about ROOT, but this is surely not the place to publish it nor to even have a discussion about the subject (ROOT). Andy, please remove the section. MaartenBallintijn 16:05, 6 July 2006 (UTC)

I respectfully disagree. Anyone w/ a strong C/C++ background, having used (relatively) efficient and well-designed libraries in previous experience (MFC, OpenGL, and God help me, DirectX), will be befuddled by ROOT. The criticisms in this article are all relevant. In fact, I would include ROOT's often dubious and horribly ill-defined memory management as a criticism as well. These are all glaring, and when encountered enormously frustrating, flaws. These are not mere matters of opinion, mind you. They are obvious deficiencies in design that should be addressed in any discussion of what root is (ie, poorly designed and implemented). One thing I would however mention is the ROOT devs make a fairly decent effort at documentation, (very)mildly alleviating some of the 'unexpected' issues that arise. Duluoz

Allow me elaberate further. I'm a computer science major/physics minor (recently graduated) that took up an internship at Thomas Jefferson National Accelerator Facility. I'm currently involved in the Primex project, determaining the lifetime of the pi-0 meson. At this stage we're working on data anaylsis, which requires a heavy use of ROOT/Paw (depending on prefrence). Completely ignorant of either, I was told ROOT was C(++) based while Paw was FORTRAN based. Being raised on computers after the 70s, I have heavy OOP training, mainly in C++, so I decided to use ROOT. I regret that decision. ROOT isn't just badly recieved by some individuals; its out-and-out bad, by nearly every standard of software engineering. For non-CS peps, I can understand how the criticisms in this article appear rather harsh; but for us experianced in the field this is an obvious case of horrible, inexperianced, and ignorant understanding of object-oreintented design, and distributed software in general. If this was some internal project it'd be fine, but to make this travesty the 'standerd' in data anaylsis is just wrong. Why is file i/o 'globalized'? Never before, to my knowledge, has this step been taken, simply because no one has ever thought it was a good idea (and its not, for a myraid of reasons). Why is a C/C++ interpreter involved? Never has this language been intrepreted, for good damn reason. It's basically assembly code w/ slightly more familar syntax; only someone who doesn't know what they are doing would do this. And further, when anaylizing data, massive amounts of information is involved, too massive to have a subprocess handle (and far, far too slow). Integration w/ the standerd C++ library is poor at best, and that alone should discredit any idea that this is 'good' C/C++ sourse. Not to mention I've been trying to download the damn thing for personal use for about a week w/ no success (how hard is it to mirror the download?). Just because you figured out how to use it doesn't mean it's in any way good. I figured out how to use it and I -KNOW- its bad. Again, any article detailing ROOT should include this; it's not just personal opinion, its a fact about ROOT. Any edit to the criticism page should only be to add to it (including, I believe, ROOT's direly poor memory managment paradigm). Duluoz

Removal of Criticism[edit]

I'm highly disappointed to see the list of accurate, significant, and relavent criticisms where removed from the page, and replaced with a few sentences, essencially stating "Some people don't like ROOT", which is a gross mischaracterzation. Not only does the reek of favortism (as I'm sure some ROOT dev/associate was involved), it's contrary to fact. And it doesn't help matters that I have to time to write this b/c at this moment ROOT is making my work impossible to complete. I will resume a -detailed- expansion of the criticism section soon.

"Others would argue that these are design choices that make it a highly portable, self contained system that provides a comprehensive environment for data storage, analysis and data presentation." The 'Others' refered to here, besides not being referenced or sited, are definatly NOT computer scientists.Duluoz

I see that rather than offer any serious rebuttal to the widely recognized criticisms or ROOT, it has just been effectively removed. This is the standard "you can object, so long as you aren't given any time to offer a serious explanation of your objections" technique.

I think the phrase "to more immediate problems of data analysis" really shows the whole problem. This opinion would be fine, HEP has a long history of writing code that just "gets the job done." but ROOT was marketed as an introduction to object-oriented code. It has turned out to be a very poor introduction indeed, and has created a generation of programmers who think they understand OO but really just understand OO syntax (not even that if they use CINT!) This results in code which is the worst of all worlds: old-fashioned spaghetti code combined with all the extra overhead of pretending to be OO. Fortunately all the extra work ROOT has made for the community will undoubtably lead to more HEP jobs!

Also the whole paragraph arguing that "criticisms are rare" has got to go. If the ROOT developers are writing this, perhaps they should consider that they have a biased sample of user feedback, given that they are, you know, ROOT developers. In my experience, many people who use ROOT at least have vague feelings that it is making their life more difficult then it rightly should. Nearly everyone I know that writes code that other people use feel even more strongly that ROOTs poor design leads to productivity losses. I grant that it is less frequent that someone levels the criticism as succintly and accurately as Andy. --Savehep 11:46, 14 July 2006 (UTC)

The criticisms need to be removed unless a third-party source can be found. Citing the mailing lists, a primary source, violates no original research. Find some published ROOT bashing or the entire section must go since there is no verification. --Beefyt 02:45, 1 August 2006 (UTC)
If you put it this way, then the whole article is for deletion, for the very same reasons. As far as I know, there is only one published journal article on ROOT, and it's from the authors, so the critics may as well consider it POV. You cannot apply two different standards in the same place... and personally I believe that deleting the article would be a disservice, because ROOT is notable. On the other side, the criticism section now is full of weasel words, and not well written in general, and I believe it should be rewritten. --Sergio Ballestrero 06:53, 1 August 2006 (UTC)
Isn't a lot of this material from ROOT's website? I think we can judge to be a verifiable and neutral source on the features of ROOT. The website is not the primary source, the program is the primary source. Applying the same rule, if you want to report about the criticisms, then you can't use the criticisms themselves, you need another source. Your suggestion, while persuasive, assumes that the material in this article was obtained by examination of ROOT itself. --Beefyt 21:49, 1 August 2006 (UTC)
Well, given that there are clearly people contributing to this talk forum who believe that these criticisms are more substantial than just rumour. So if we're to consider the ROOT website as definitive and neutral (haha!), then would placing these criticisms on another web page count, too? Assuming that's the case, I've added a reference to my criticisms website, which has been on the web and known to the ROOT developers for about 4 years. If that doesn't count, what does? The text only mentions that ROOT has been criticised for these things: links to the mailing list and my page certainly verify that criticism has taken place. If anyone can suggest a way of publishing these criticisms in a way which would be "more acceptable", then please tell us how. Would writing the criticisms in LaTeX make them more "official"? :-) AndyBuckley 13:39, 3 August 2006 (UTC)
Honestly I don't know what WP's standard is for 'criticism' sections, but my instinct here tells me that AndyBuckley's site doesn't qualify as a source because it is neither verifiable nor neutral. Whether non-scholarly criticisms even belong in this article, I don't have the expertise to say, but I agree that "ROOT has been criticised" is worthy of inclusion. The specifics, however, by definition violate WP:NPOV, since their mention is sponsored solely those with POV (AndyBuckley included). If any editors free of POV care to include the specific criticisms, please speak up, otherwise I move that the section be eliminated or summed up with the sentence, "Despite its features, ROOT is often criticised as difficult to use," or some such. Wikipedia is an encyclopedia, not a catalog of your opinions. --Beefyt 05:36, 4 August 2006 (UTC)
I think the discussion, both here and elsewhere, indicates that there's more involved here than my personal opinions. For an example of other software criticism, see Criticism of Java, in which most criticisms are unreferenced, because they are factual. I think it would be fair to re-write the ROOT criticism in this style. Wikipedia isn't a catalog of opinions, but where there's been significant criticism it's fair to acknowledge that criticism has taken place (ROOTtalk links, critical web pages) and to enumerate the issues of complaint. AndyBuckley 14:53, 8 August 2006 (UTC)

Why ?[edit]

Let me explain again why: most importantly, this is *not* the place to discuss the merits of ROOT. The wikipedia guidelines are quite clear about that (Neutral point of view, No original research). There are several mailing lists and forums that are intended for discussion of ROOT, requesting new features etc. Indeed I've contributed reasonable amounts of code in ROOT and PAW, I've also contributed to and maintained large pieces of code build on top of ROOT (PHOBOS software, ANT). In addition, yes I have a strong background in CS too, and worked for Rational Software for a number of years.

What you seem to miss is that software is not like mathematics. A system like ROOT is designed to solve a need. OO techniques are a tool, not a goal. And once a system has grown and is widely adopted the cost of changing things becomes large. So, problems that affect users will still be changed, but changes that are aestatically pleasing are low on te list. Given the completely voluntarily adoption of ROOT by nearly all HEP experiments, Rene and the ROOT team have arguably made good choices. Can things be improved, of course. It would be great if you would use your insights and energy to contribute improvements, that way everyone gains. And if you feel you can make a better system, just start and convince someone to use it. Thats how ROOT started as well :-) MaartenBallintijn 19:19, 10 July 2006 (UTC)

Well, on a technical point, software is exactly like mathematics (well, good software at least). Computation theory is in effect specialized set theory, and algorithm design is highly akin to group theory (all made more distinctive w/ OO-programming), something I would think physicsist would appreciate. But, aside from that, what I wish to convey is that ROOT is not a software tool that happens, like all software, to have irregularites, but rather it is software that is riddled with code deficiencies and design flaws over and above accepted limits. That is, bad construction/implementation is characteristic of ROOT, not just a, as appears to be suggested, 'side-effect' of inexperiance with its use. I'm not nit-picking here; these issues are all, at best, ameturish, at worst rather idiotic. How the damn thing holds together at all is beyond me. Why it achieved wide-acceptance is likely the same reason Windoze is the dominant OS, ie not because people choose the best product but because no other choice existed, and those that made such decisions had little/no experiance in the matter.
To the 'don't complain, contribute' argument, I should like to say this software is so poorly constructed from the beginning that nothing short of a complete re-writing will acheive the level 'professional' acceptance I'm looking for.
But, all that is irrelavent I suppose. My objections are here, at least, and I've calmed down from the chaotic cognitive maze of insanity that ROOT loves inspiring in me, and after a week of building in my own safe-guards have found a way to reasonably use this trash to achieve my purpose. I'll let the article stand, and apart from the 'apologist' line at the end of the criticism section I can let it passDuluoz
You are right, if a bit harsh. It's seems clear from the discussion that the ROOT team doesn't realize just how widespread the dissastisfaction with ROOT is in the HEP community. It is common place to see people banging there heads against walls over some ROOT nonsense. Exactly in Microsoft fashion, many inexperienced users of ROOT think that the problem is them. It's not.--Savehep 16:40, 14 July 2006 (UTC)
No one needs to "make a better system". This is the whole point. There are already excellent tools out there that are *simple* and *reliable*. That's one of our main gripes about ROOT (if you hadn't deleted it.) It insists on reinventing the wheel badly in every case. The only problem is that so many collaborations have been suckered into using ROOT that it makes it difficult to go against the stream. I find it is still much easier to go against the stream and not use ROOT, or at least severely curtail it's usage.
Can someone please tell us a feature of ROOT that isn't easily available elsewhere? Don't try "persistence". I can't count the times my head has nodded listening to people whine about what version is needed for what reconstruced data set. The only reason that the RAW data is always available is that no one dares touch it. Oh man, and then theres all the packing of data into weird places rather than change the version. What a disaster. Don't try "3-D graphics". Those are completely useless unless you don't care about communicate anything quantitative.--Savehep 16:40, 14 July 2006 (UTC)
Savehep, you say that there are "excellent tools" - can you please indicate one ? Don't misunderstand me, I also have plenty of gripes with Root, starting with the very fact that crashes a lot more than PAW. But I have tried OpenScientist and HippoDraw, and they just don't cut it - and I don't like Java. I find myself still using PAW for interactive analysis as much as I can - which is frustrating in its own ways... Sergio Ballestrero 08:41, 16 July 2006 (UTC)
I am more concerned with analysis and calculation part then the graphical representation part. I am required to use ROOT plots for uniformity. Fortunately, I think that ROOT is bearable if all you have to do is very short graphical presentation of already calculated entities. I find that it's the extension of ROOT into the analysis itself that causes my head to spin! So the tools I was referring to are the C++ language, the GSL, and the STL.
Another good example is the tree which is a classic example of how ROOT requires you to pay extraordinary overhead (in coding effort) to get marginal or even no benefit. In the ROOT way of doing things, you need to get your data writing part to line up with your data reading part "by hand". You have to line up your addresses by hand! This is not object-oriented code no matter how much it is wrapped up as one. You don't need trees, just make up your own custom data classes and use iostream to read and write them. Compare this:
  typedef struct {int a, int b, float x, float y} mydata;
to what you would have to do to get this rolling in ROOT. First you would have to decide to (a) "pretend" that my integer data is a double so that I can use an ntuple--a very common choice--or (b) resign myself to using a TTree, so cancel any appointments for the next 2 days.
  //say a prayer that I didn't already use the name "mytree" since ROOT requires me to keep track of scope manually:
  TTree * tree = new TTree("mytree", "people generally write nonesense or the same thing here all the time");
  //now lets add all our data values:
  //first define our local variables here:
  int a, b;
  float x, y;
  //now add them by hand, don't make a mistake!!!
  t.Branch("a", &a, "a/I");
  t.Branch("b", &b, "b/I");
  t.Branch("x", &x, "x/I");
  t.Branch("y", &y, "x/F")
  // oops! I made a mistake!  Can you spot it?  ROOT won't.  Instead, you will be staring at a corrupt data distribution
  // at some later date.  Let's hope you thoroughly tested *every* variable before you launched a long job!!!
I can just dump my structure to file using iostream or even gzstream (zipped version). Then, by putting my data structure in a header file, any of my "reading" code will be notified of changes to my structure, and I will get compile-time notification if I delete a variable that is used in some other part of my code. There is no "accidental complexity" here, I need to change that code if I want to remove the variable. Modern languages almost completely elliminate such accidental complexity, at least until the ROOT team decided to add it back by hand...
--Savehep 16:20, 17 July 2006 (UTC)
Sergio, you say that you don't like Java. Well, you don't have to. You can use any scripting language that is implemented in Java as well. Pnuts, Python (as Jython) and Ruby (as JRuby) are all in a state where they can feasibly be used with Java-based software.--JanStrube 21:07, 18 July 2006 (UTC)
Marteen, I frankly disagree with you when you say that since experiments have adopted, then the choices must have been good. The way I have seen it, people went to Root out of despair for the complete failure of the LHC++ efforts, which were not delivering a working solution. I am also using Root out of despair :-/ Sergio Ballestrero 08:41, 16 July 2006 (UTC)

Application of ROOT[edit]

More generic than STL? Was this meant as a joke? Or just to make our heads explode? --Savehep 20:51, 19 July 2006 (UTC)

ROOT Formats[edit]

As a physics undergrad trying to learn how to use ROOT, it would be helpful for information on the different formats (such as TopNtuple) to be listed here. A google search hasn't turned up much, and since I'm just learning it I won't write it, but perhaps a ROOT expert could give some insight.

I've never heard of TopNtuple. From a Google search it looks like that's an ATLAS-specific term (correct me if I'm wrong). I don't think it is germane to this article. Josh Thompson 23:51, 22 May 2007 (UTC)

Again about removed criticism[edit]

Apparently, some reasonable points of criticism has been removed by this edit. Could anyone with good English restate it and take back to the article? Several references (maillist threads and articles) have been given above. I'm just a curious Wikipedia reader who wants to read a complete and neutral article about ROOT. (talk) 11:10, 16 January 2008 (UTC)

Criticisms Removed[edit]

The criticisms section was (again?) removed by this edit. I agree with this edit, since the criticisms did not reference reliable sources, and at worst the sources referenced the article itself. If another edit would like to revert this edit, please add a comment to the effect of "Do not remove this section under penalty of catapult," so this doesn't happen again. --Beefyt (talk) 21:30, 7 July 2008 (UTC)

The criticism section is really poorly written right now. The line "In documentation marked "read this first", the user is mostly told things like "the backbone of the ROOT architecture is a layered class hierarchy"." particularly stands out. I think that in order to learn ROOT that is the first thing that somebody needs to know. Once you understand the way ROOT is organized you can learn a ton from reading the class references. If you're going to criticize root then there are probably bigger fish to fry than this. The wording for the section in general is awkward as well. --Anonymous (talk) 11:30, 28 March 2009 (UTC)
I agree. The section seems way to focused on the concept of "this is too complicated for people who don't understand it" without citing any source except the documentation itself (Does this qualify as original research?). "the backbone of the ROOT architecture is a layered class hierarchy" is referred to entirely without context- it's on the "Architectural Overview" page, intended for someone new to Root but NOT to OO. Malahci (talk) 15:06, 26 June 2009 (UTC)
I removed what was left of the criticism section, as it explained only one (poorly expressed) criticism, and only briefly mentioned others. All of the references point either to Andy Buckley's website or to archives of his emails on the ROOT users talk page- this is hardly enough to include an entire section. Malahci (talk) 15:28, 23 July 2009 (UTC)

Version 6[edit]

It's June 2015, version 6 is out, CINT replaced by cling, what criticisms are still valid? Please kick the new version around. GangofOne (talk) 03:36, 13 June 2015 (UTC)