140 likes | 180 Views
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
E N D
ROOT Development and Release Process 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 • Several thousand users giving feedback, comments, bug fixes and many small contributions • Source available under the LGPL license ROOT Development and Release Process
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
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
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
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
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
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
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
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
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
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
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
Summary • Typical Open Source build system • Minimal dependency on external packages • Many platforms supported • Daily builds and Q&A ROOT Development and Release Process