DANSE cvs

From DANSE

Table of contents

Proposal

Organize the DANSE cvs along the lines of the DANSE WBS.

DANSE CVS Login instructions

user-specific login:

 cvs -d cvs.cacr.caltech.edu:/srv/cvs/danse co danse

anonymous login:

 cvs -d :pserver:danse@cvs.cacr.caltech.edu:/danse login
 [password: danse]
 cvs -d :pserver:danse@cvs.cacr.caltech.edu:/danse co danse

Mapping of ARCS CVS Structure

user-specific login:

 cvs -d cvs.cacr.caltech.edu:/srv/cvs/arcs co arcs

anonymous login:

 cvs -d :pserver:arcs@cvs.cacr.caltech.edu:/arcs login
 [password: arcs]
 cvs -d :pserver:arcs@cvs.cacr.caltech.edu:/arcs co arcs

OLD ARCS CVS STRUCTURE (prior to 5/13/05)

 Cobra                 Jonathan Lin's ViPEr (demo) interface for DANSE, obsolete
 Server                Cobra Server (preinstall version) for cobra152, retired
 SofEtoDOS             Tabitha Swan-Wood's multiphonon correction code
 XTal                  Generic crystal structure class
 cobra152              ViPEr (demo) interface for DANSE, retired
 config                Link to config in ~pythia, obsolete
 graphics              Graphics components
   HippoDraw             Pyre HippoDraw
   IDL                   Pyre IDL
   ISAW                  Pyre ISAW
   Matlab                Pyre Matlab
   Matplotlib            Pyre Matplotlib
   gnuplot               Pyre gnuplot
   grace                 Pyre grace
   pgplot                Pyre pgplot
 gsl                   Grid Services Light
 ins                   Miscellaneous ARCS/DANSE code, obsolete
 mcstas                Pyre Mcstas
 packages              Miscellaneous ARCS/DANSE code
   ARCSTest              Tim Kelley's unit test structure-builder
   array_kluge           Converter for Python lists to and from C arrays 
   cctbx_adpt            Pyre cctbx, for computational crystallography
   fitting               Tim Kelley's least squares fitting framework
   fpset                 STL sets & multimaps with "built-in" comparison operator
   hdf5                  Maciej Brodowicz's Pyre hdf5, obsolete
   hdf5_cpp_1.6.3        NCSA hdf5 sources (v1.6.3), altered to compile with gcc-3.4.4
   hdf5fs                Pyre hdf5, for manipulation of hdf5 files
   ins                   Miscellaneous inelastic neutron scattering data reduction code
     annabs                Tim Kelley's annular absorption code
     histogram             Tim Kelley's histogram class
     instruments           Detector, Pixel, and other instrument classes (also ARCS.XML)
     reduction             Tim Kelley's data reduction code, development version
     reduction-0.0         Frozen version of reduction
     single_crystal        Tim Kelley's rewrite of JaeDong's single_crystal code
     topline               Data reduction code prior to major revision, obsolete
   mpitest               Test program for linking/include of mpi and config
   nexus                 Tim Kelley's Python version of the NeXus API
   nx5                   NeXus with the NeXus API replaced by hdf5fs
   nx5-0.0               Frozen version of nx5, obsolete
   phonons               Tim Kelley's Born von Karman code
     bvk                   Program to compute phonon DOS and dispersion curves
     bvkfit                Link to stable version of bvkfit (bvkfit-0.1)
     bvkfit-0.1            Program to fit DOS to inelastic neutron scattering data
     bvkfit-0.2            Development version of bvkfit-0.1
     cctbx_clients         Extending bvk to use cctbx, status unknown
     fct0.1                Group theory applied to force constant tensors
     lapacktest            Test program for linking/include of lapack and config
   pyIDL                 Simple API for IDL
   saidl                 Tim Kelley's Simple API for IDL, obsolete          
   sam                   Patrick Hung's Simple API for Matlab, divergent
   stdVector-0.1         Converter for Python lists to and from C++ STL vectors
   stdVector-0.2         Development version of stdVector-0.1
 phonon_calcs          Miscellaneous phonon DOS code
   multiphonon           Brent Fultz's multiphonon scattering code
   phononthermo          Brent Fultz's phonon thermodynamics code
 phonons               Tim Kelley's Born von Karman code, obsolete
 publications          Miscellaneous ARCS/DANSE publications
   ARCS_Soft_Project     Project Execution Plan for the ARCS software
   Big_Book              "Inelastic Neutron Scattering", with DANSE reference manual
   CONST_Proposal        DANSE construction proposal, as submitted to the NSF
   DANSE_design          DANSE design proposal, as submitted to the NSF
   DANSE_design.old      Near-final draft of the DANSE design proposal, obsolete
   IMR_MIP_NSF_2003.old  Early port of the DANSE white paper to an NSF proposal, obsolete
   NSF_IMR_MIP_2003      Original draft of DANSE CONST proposal, obsolete
   PyCppExt              "Writing C++ Extensions for Python", from the ARCS Wiki
   danse                 Early draft of the DANSE white paper, obsolete
   danse_more            DANSE white paper, as widely circulated
   texinputs             LaTeX inputs for DANSE/ARCS
 pythia-0.4            Link to pythia-0.4 in ~pythia, obsolete
 pythia-0.5            Link to pythia-0.5 in ~pythia, obsolete
 server                Cobra Server (arcscluster-specific backup), retired
 single_crystal        JaeDong Lee's single crystal mslice rewrite
 spin_dynamics         JaeDong Lee's spin dynamics code
 subgroups             DANSE subgroup-specific contributions
   abq                   Pyre Abaqus, for finite element analysis
   pdffit                Pyre pdffit, for full profile structural refinement
 templates             Link to templates in ~pythia, obsolete
 third_party           Miscellaneous third-party code
   twisted               Twisted web application server
 tutorials             DANSE tutorials
   bindings              Tutorials on binding Python, C, Fortran, Java
   build_procedure       Tutorials on 'config' (build procedure), includes swig and f2py
   native                Example code translated to Python, C, Fortran, Java
   pyre_component        Tutorials on converting python code to pyre component
   unittest              Tutorials on functional requirements and unit testing
 Museum                Retirement home for old packages

NEW ARCS CVS STRUCTURE (5/13/05)

 arcs                  ARCS developemnt cvs
   applications
   examples
   packages
     ARCSTest
     fitting
     hdf5fs
     nexus
     pyIDL
     SofEtoDOS
     array_kluge
     fpset
     ins
     nx5
     pyIO
     spin_dynamics
     cctbx_adpt
     graphics
     mcstas
     phonon_calcs
     saidl
     stdVector
     hdf5_cpp_1.6.3
     mpitest
     phonons
     sam
   publications
     ARCS_Soft_Project
     Big_Book
     PyCppExt
     texinputs
   tests
   Museum
     demo
       Cobra
       cobra152
       server
       Server
     packages
       hdf5
       ins
       nx5-0.0
       phonons
       single_crystal
       stdVector-0.1
 arcs_danse                  Content to migrate to DANSE cvs
   packages
     gsl
     subgroups
     third_party
     tutorials
     XTal
   publications
     CONST_Proposal
     DANSE_design
     danse_more
     texinputs
   Museum
     packages
     publications
       danse
       DANSE_design.old
       IMR_MIP_NSF_2003.old
       NSF_IMR_MIP_2003

Top-level DANSE CVS Structure

 danse-0.X             DANSE release #X
 danse                 DANSE development cvs
   help                (Introduction)
   internaldocs        (Vision and Goals)
   infrastructure      (Project Infrastructure)
   centralservices     (Central Services)
     framework           (Distributed Component Framework)
     visualization       (Visualization)
     ui                  (User Interfaces)
     dataservices        (User Layer Data Services)
   common              (Common Tasks)
     reduction           (Data Reduction)
     modeling            (Modeling of Data)
     simulation          (Full Simulations of Data)
     common              (Common Algorithms and Data Types)
   diffraction         (Diffraction)
   engdiffraction      (Engineering Diffraction)
   sans                (Small-Angle Neutron Scattering)
   reflectometry       (Neutron Reflectometry)
   inelastic           (Inelastic Neutron Scattering)
   outreach            (Education, Outreach, and Knowledge Transfer)
   Museum              Retirement home for old packages
 sandbox               Non-spamming practice area

Directories like infrastructure and centralservices can contain hyperlinks to other CACR project cvs repositories (such as config and pyre) as well as any new DANSE-specific developments. The help directory can contain help on using the cvs, as well as links *OR* scripts to build the released package at each milestone. The internaldoc directory can contain proposals and other internal documentation. The outreach directory can contain standalone documentation, tutorials, demos, and presentations.

Proposed propagation of packages to DANSE CVS

  1. Packages to keep on ARCS cvs: Cobra, Server, cobra152, config, ins, packages/cctbx_adpt(??? -- Shouldn't this also move to DANSE?), packages/hdf5, packages/ins/topline, packages/ins/single_crystal, (how about, if it doesn't get moved below, then it stays? -- That's the plan.)
  2. Packages to migrate to DANSE cvs: graphics/*, packages/hdf5fs, packages/ins/reduction, pkg/mpitest, pkg/nx5, pkg/phonons/bvk, pkg/phonons/lapacktest, pkg/pyIDL, pkg/sam, pkg/stdVector-0.2.
  3. Packages that can migrate to DANSE after some cleaning: packages/ARCSTest (better cpp scripts), packages/array_kluge (rename cArray?, clean), packages/fpset (do not inherit from STL).
  4. Organization of migrated packages within DANSE cvs: (FIXME)
  5. Organization of links to 'external' cvs packages: (i.e. pythia) (FIXME)
 danse
   help
   internaldocs
     Big_Book
    CONST_Proposal
    DANSE_design
    danse_more
   infrastructure
   centralservices
     framework
       gsl
       twisted ?
     visualization
       HippoDraw
      IDL (pyIDL as subdirectory)
      ISAW
      Matlab (sam as subdirectory)
      Matplotlib
      gnuplot
      grace
      pgplot
     ui
     dataservices
   common
     common
       Xtal
      cctbx_adpt ?
      stdVector
      instrument
     modeling
     reduction
     simulation
       mcstas
   diffraction
     pdffit ?
     pdffit2
   engdiffraction
     abq ?
   sans
   reflectometry
   inelastic
     SofEtoDOS ?
     spin_dynamics ?
   outreach
     tutorials
     PyCppExt ?
   Museum
 TODO
   packages
     ARCSTest
     array_kluge
     fitting
     fpset
     hdf5
     hdf5_cpp_1.6.3
     hdf5fs
     ins
     mpitest
     nexus
     nx5
     phonons
 OUT
   Cobra
   Server
   cobra152
   config
   ins
   packages
     saidl
   phonon_calcs
   phonons
   publications
     ARCS_SoftProject
     DANSE_design.old
     IMR_MIP_NSF_2003.old
     IMR_MIP_NSF_2003
     danse
   pythia-0.4
   pythia-0.5
   server
   single_crystal
   templates

What if something does not fit well into the current DANSE cvs repository structure? Then we find a suitable place for it in the repository, and alter the WBS to reflect this change.

Plans for the Structure of DANSE

Each subproject should have its own cvs repository, most likely hosted and managed by CACR. We would have to create 4 or 5 new CACR projects, one for each DANSE subgroup. These repositories will hold the development version of their code, and have their own group of developers with write permission. The development in each of the subgroups should be 95% orthogonal, so the DANSE subgroups really can be seperated into different CACR projects that may leverage each other. Thus, the danse repository would be a skeleton for documentation and stable releases for all the associated subprojects. The danse repository would be the repository most users would check out of, while the developers would check out of their own 'subgroup' repositories as well.

Thus, we should have seperate repositories for the subprojects instead of everyone developing within the 'danse' repository. Further, we should have danse as a release-oriented cvs repository, possibly with read-access only (maybe best as pserver)? Write access to danse may only be needed for whomever is the manager and validator of subgroup code responsible for promoting it to a stable release (I believe it is actually CIT's responsibility to have the subgroups produce version releases).

Stable versus Development Builds

Then we should, within the build procedure, have the development releases for the developer's subproject build in the place of the stable release for that subgroup.

FROM stable release repository:

 >$ cvs -d cvs.cacr.caltech.edu:/srv/cvs/danse co danse

this gets all the stable releases and documentation...

 >$ ls *
 danse/sans
 danse/inelastic
 danse/diffraction
 and so on...

The code will all be importable with python, based on the directory structure. Thus, a package 'foo' within danse/inelastic will build and be imported as...

 >>> from danse.inelastic import foo

FROM a development repository:

 >$ cvs -d cvs.cacr.caltech.edu:/srv/cvs/inelastic co inelastic

This will be built within the build procedure, and also be importable by python...

 >>> from inelastic import foo

However, we will want the developers to be able to replace the stable release for their subgroup with their own group's development release, thus each subgroup will need to have some build procedure magic in their top cvs directory node (-- this really doesn't concern the structure of the cvs system, but I'm just saying this for completeness). Thus for an 'inelastic' developer, in python

 >>> from danse.inelastic import foo

will also provide the 'development' grade code.

Personal tools
Document Uploads/Links