1 / 14

ROOT

ROOT. Development and Release Process. ROOT - An Open Source Project. The project is developed as a collaboration between: Full time developers: CERN, FNAL, MIT, JINR, SLAC, private Large number of part-time contributors

laureenr
Download Presentation

ROOT

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ROOT Development and Release Process ROOT Development and Release Process

  2. ROOT - An Open Source Project • The project is developed as a collaboration between: • Full time developers: CERN, FNAL, MIT, JINR, SLAC, private • Large number of part-time contributors • Several thousand users giving feedback, comments, bug fixes and many small contributions • Source available under the LGPL license ROOT Development and Release Process

  3. ROOT Development Process • We follow an Open Source development model • “Release early, release often” • Major releases 2 times per year • Minor releases every 4-7 weeks • Daily/nightly builds + regression testing + benchmarking (rootmarks) + coding rules checking • “Let user feedback drive the development” • Savannah bug reporting system (1.5 issue/day) • Roottalk mailing list (push, majordomo) • 9 posts/day, 1080 users • Roottalk forum (pull, phpBB2) • 13 posts/day, 1453 users • Rootdev (7 posts/day) • Annual workshop • Open cvs repository • Let users become developers ROOT Development and Release Process

  4. Many Supported Platforms • Support all possible hardware • 32, 64 bit, little, big endian • Support all possible OS’es • Windows, MacOS X, Linux, Unix (True64, HP-UX, Solaris, AIX, Irix, …) • Support all possible compilers • gcc, icc, VC++, CC/Solaris, xlC/AIX, cxx/True64, cc/Irix, aCC/HP-UX • Support different graphics systems • X11, Windows, Qt • Use minimum and standard set of tools to build (sh, tar, grep, awk, etc.) ROOT Development and Release Process

  5. The More Supported Platforms • The more robust the code will be • The more portable the code will be • The easier the porting to new platforms will be • Port to MacTel took 2 hours • The larger the potential user community • The more potential contributors ROOT Development and Release Process

  6. Core External Dependencies • ROOT Core external package dependencies: • libfreetype • libpcre • On Windows: • gdk and glib • Extremely portable C code • Stable versions distributed as part of the ROOT source • Statically linked to avoid run-time confusion • Packages not exposed to the user, internal usage only ROOT Development and Release Process

  7. Plugin External Dependencies • Many plugins are wrappers for external packages: • MySQL, PostgreSLQ, Oracle, Castor, dCache, AliEn, libxml2, libAfterImage, etc. • ROOT core works without these plugins • Try to use, as much as possible, system versions of these libraries • Use ./configure to detect libraries, headers and correct version ROOT Development and Release Process

  8. Version Control • Use CVS for version control • Public anonymous cvs access • One module “root” • Only package managers have checkin rights • Head must always build (no sliding HEAD tag) • Branches used for patching of major releases ROOT Development and Release Process

  9. Build System • Typical Open Source build system: • ./configure; make; make install • Not autotools based, but behavior and results the same • Flat Makefile, allowing fast and complete dependency determination and hence minimal and correct rebuilds and full support for parallel make (very important with the new multi-core machines) • make takes not more than 5-10 sec to check more than 4700 files to conclude “Nothing to be done” • Full build of 1.5 million LOC takes from 8m to a few hours (dual core AMD to obsolete old Sun Sparc) • Build efficiency is extremely important for programmer efficiency ROOT Development and Release Process

  10. Quality Assurance • Daily builds on all platforms • Daily running of extensive test suite • Daily monitoring of program performance and memory usage • Daily checking of coding rules • Daily generation of ChangeLog, source cross reference (LXR) and ViewCVS • Frequent running of valgrind and kcachegrind • Process not yet fully automated ROOT Development and Release Process

  11. Version Numbers • ROOT versions numbers have the form: • x.yy/zz[p] • Where • x is the main version number • yy the major number • zz the minor number • p the patch letter (optional) • yy and zz are odd for development versions: • 5.09/01 development • 5.09/02 minor release • 5.10/00 major release ROOT Development and Release Process

  12. Release Products • Binary tar files for about 20 platforms • Binary version on AFS for SLC3 • Source tar file • Documentation tar file in html format ROOT Development and Release Process

  13. Patch Releases • Important bug fixes will be back ported to major releases • The patch releases will only be provided as a source tar file (no binaries) • Patch release have a letter extension to the version number: • 5.08/00a, 5.08/00b, etc ROOT Development and Release Process

  14. Summary • Typical Open Source build system • Minimal dependency on external packages • Many platforms supported • Daily builds and Q&A ROOT Development and Release Process

More Related