My advisor has recently begun to work with the ATLAS project. My first year of courses are almost over, and so I’m beginning the “Getting Started” process with ATLAS, as well. I am extremely impressed that ATLAS has its own wiki, which gives instructions to collaborators on how to get their account set up, how to start working with the analysis program, etc. If I’d had something like this when I was trying to finish up my research with Fermilab, I’d have been golden.
Being able to follow a procedure to get everything set up is great, don’t get me wrong. But I’m running into a problem. I followed the procedure for modifying their HelloWorld program. And it didn’t work. That particular page didn’t come with troubleshooting instructions. With the help of my advisor, we got it working (as is so often the case with computers, we can’t see anything that I did wrong the first time). But, see, what if I were the advisor? Or what if my advisor weren’t so willingly helpful? What if I didn’t have Linux-knowledgeable lab-mates?*
The ATLAS wiki has appendices with basic Linux commands. That’s nice. They’re really basic commands. They don’t explain how they integrate with what you’re trying to do in the instructions. More importantly, I think, they don’t tell you how not to use the commands. Let me try an example to see if I can’t be more concise.
Go to your testarea and check out the AthExHelloWorld package:
> cd testarea/15.3.0
> cmt co -r AthExHelloWorld-01-02-00 Control/AthenaExamples/AthExHelloWorld
Navigate to the src directory
> cd Control/AthenaExamples/AthExHelloWorld/src
and edit the C++ file HelloAlg.cxx for instance by adding this to the initialize() method:
ATH_MSG_INFO ("Hello ATLAS User");
and save the file.
Now build this package:
> cd ../cmt
> cmt config
Go back to the UserAnalysis package and rerun Athena:
> cd ../../../../PhysicsAnalysis/AnalysisCommon/UserAnalysis/run
> athena.py HelloWorldOptions.py
You should now see this somewhere in the output:
HelloWorld INFO Hello ATLAS User
Okay, so if I do everything exactly as printed in that procedure, where is the likely culprit when my output doesn’t contain the indicated line? What did gmake…make? Where I can find a visual diagram of the folder (directory, whatever) hierarchy?
So, I was thinking it would be really handy if the wiki incorporated some sort of mouseover functionality. If I mouseover the word gmake in this procedure, it could tell me what file is being executed. Even better, there could be a note about what happens if I accidentally use the gmake command in the wrong directory. (Does anything bad happen? How badly can I manage to break this setup just through my own lack of familiarity with the system?)
I don’t deny that becoming familiar with the operating system and jargon of this research community is vital, and is often best done through a hands-on approach. But I think including resources directly where they’re relevant, instead of just generically tacked on at the end of a website, is going to make that process a lot more efficient. And, frankly, there are enough people working on this project who are intimately familiar with the intricacies of Linux and Athena for whom it would be relatively simple, if time-consuming, to add these little helper notes.
Maybe I’m being lazy. But you know what? I’m an experimental physicist. I want to get my hands dirty and do research. I think it’s reasonable of me to ask that I not need a computer science degree (or equivalent tinkering time) in order to do that research.
*While experiences will vary, my experience with getting help from non-faculty people** who “get” Linux has thus far been overwhelmingly negative. It has been my experience that the go-to Linux person in a group has spent so long using the system that the syntax, steps, and functions are intuitive for them, and they haven’t yet developed the ability to properly explain to a newbie what needs to be done. More often than not they will simply steal the mouse or keyboard from you, because it is – correctly – faster for them to just fix it themselves. I understand the feeling. I’ve tried to help my grandparents troubleshoot minor problems in Windows. I have used some form of Windows OS for literally as long as I can remember. So I get it, and explaining it is hard. But I also try to keep in mind that if they don’t do it themselves, they’re not going to remember what they did, and so they’re not going to be able to modify what they did to adapt to new problems in the future. Thank you, Linux fankids for being a valuable resource. But screw you for being impatient.
**I say non-faculty people because faculty, in general, have spent a lot more time teaching or explaining to subordinates and in my experience have much more highly-developed methods for passing on the needed information without coddling.