MAUS DEVELOPMENT A. Dobbs, Software Workshop, CM43 MANAGING THE CODE MAUS version controlled with Bazaar MAUS distributed using Launchpad: https://launchpad.net/maus Development code branch: bzr branch lp:maus/merge Release code branch: bzr branch lp:maus Merge branch managed by gatekeepers – “MAUS Maintainers” R. Bayes, A. Dobbs, D. Rajaram, C. Rogers, Y. Karadzhov Release branch managed by gatekeepers – “MAUS release managers” A. Dobbs, D. Rajaram, C. Rogers Automated test server (Jenkins): http://test.mice.rl.ac.uk/ 28/10/2015 MAUS DEVELOMENT, A. DOBBS, CM43 2 DEVELOPMENT SUBGROUPS Core MAUS and API (A. Dobbs) Geometry and CDB (R. Bayes) Detectors: Global Tracking (M. Uchida) CKOV (A. Liu) EMR (F. Drilesma) KL (M. Bogomilov) TOF (D. Rajaram) Tracker (P. Kyberd) G4BeamLine (J. Nugent) 28/10/2015 Monte Carlo (C. Rogers) Online Reconstruction (C. Rogers) Unpacking (Y. Karadzhov) …… MAUS DEVELOMENT, A. DOBBS, CM43 3 WRITING CODE FOR MAUS Clear Write for other people to understand (clever is not always better) Lots of comments explaining what you are doing throughout, sensible names Document all classes, members, functions with Doxygen comments Obey the Style Guide (pass the style tests) Reliable and Efficient Do not tolerate compiler warnings, watch your build and fix No (more) memory leaks Fail with error message or throws, not seg faults Modular code with well defined interfaces (Encapsulation principle) As efficient as possible (e.g. consider loop structures carefully) Thoroughly Tested Unit tests (keep line coverage at 80% or more, check with cpplint and pylint) Integration tests Stress your code, look for ways to break it Documentation (Doxygen, User guide, Workbook, MICE note…) 28/10/2015 MAUS DEVELOMENT, A. DOBBS, CM43 4 COLLABORATIVE DEVELOPMENT Set up an account on Launchpad, add an ssh key, login from Bazaar locally Use ‘feature branches’ Make a fresh copy of lp:maus/merge for every distinct job you are working on – don’t have a onesize fits all dev branch you do everything in Keep your branches up to date with the central merge branch (pull down changes regularly): bzr pull lp:maus/merge or bzr merge lp:maus/merge Consider how the changes you make will affect others, now and later (e.g. you improve an ugly interface but 5 five people’s analysis codes stop working – was it worth it?) 28/10/2015 MAUS DEVELOMENT, A. DOBBS, CM43 5 SUBMITTING CODE FOR MERGE Push your feature branch to Launchpad under your account: bzr push lp:~username/maus/foo Run the code through Jenkins and iterate until it passes (ask if you need an account on the Jenkins server) Make sure to include integration tests – must be called explicitly in the Configure part of your Jenkins jobs, not part of install_build_test.bash script Propose your branch for merging via Launchpad 28/10/2015 MAUS DEVELOMENT, A. DOBBS, CM43 6 MAUS MAINTAINERS R. Bayes, A. Dobbs, D. Rajaram, C. Rogers, Y. Karadzhov Allowed to merge code into the central merge branch Responsible for only accepting suitable code for merging Responsible for any Jenkins breaks that occur as a result of their merge Responsible for preserving the branch commit history Pull down a clean copy of lp:maus/merge, merge in changes, then push back Do not pull changes from lp:maus/merge into a local dev branch then push this back – overwrites commit history of merge branch 28/10/2015 MAUS DEVELOMENT, A. DOBBS, CM43 7 REMAINING STEP IV WORK Finish optimisation of final tracker track fit Complete efficiency and performance study of tracker software and publish Finish CKOV work Finish Global tracking and efficiency studies Add data quality check flags for all detectors Sort out any remaining issues with coordinate system translations Add event viewer to MAUS as a third party Expanded tests (focus on integration tests) Finish new Online Reconstruction framework Fix memory leaks and other remaining bugs (still finding them fairly regularly) 28/10/2015 MAUS DEVELOMENT, A. DOBBS, CM43 8 IDEAS C++11 support now on in merge branch (multithreading, smart pointers, auto, lambdas…) May convert from Bazaar and Launchpad to Git and GitHub (better systems, price in short term in porting code and learning new system) Possibly upgrade build system (SCons slow and less favoured, CMake used by ROOT, GEANT4, same costs if covert as above) 28/10/2015 MAUS DEVELOMENT, A. DOBBS, CM43 9 MORE INFORMATION MAUS Developer Documentation wiki: http://micewww.pp.rl.ac.uk/projects/maus/wiki/MAUSDevs Detailed guide to setting up and using bazaar, branching from the merge branch, submitting code, etc: http://micewww.pp.rl.ac.uk/projects/maus/wiki/Bzr_usage Coding style: http://micewww.pp.rl.ac.uk/projects/maus/wiki/Coding_style Doxygen guide: http://www.stack.nl/~dimitri/doxygen/manual/index.html 28/10/2015 MAUS DEVELOMENT, A. DOBBS, CM43 10
© Copyright 2026 Paperzz