CodeDevelopment: Difference between revisions
Jump to navigation
Jump to search
Line 16: | Line 16: | ||
* is it amenable to a tutorial? | * is it amenable to a tutorial? | ||
* how will run on OSG without /mu2e/app? | * how will it run on OSG without /mu2e/app? | ||
* should there be a different build time vs run time environment? | * should there be a different build time vs run time environment? | ||
* is checkout setup different from re-setup? | |||
* what windows does the user have open? | |||
* can all dependencies be checked automatically? | * can all dependencies be checked automatically? | ||
* what does switching between prof and debug look like? | |||
* how does an analyzer switch between pre-built releases? | |||
* what build commands are supported for user code, how much are they forced to be coordinated with offline? | |||
* are there clear lines of code responsibility? | * are there clear lines of code responsibility? | ||
* who coordinates pieces and tags and validates the whole (and how)? | * who coordinates pieces and tags and validates the whole (and how)? | ||
* is it amenable to code reviews and pull requests? | * is it amenable to code reviews and pull requests? | ||
* does it support out-of-source builds? | * does it support out-of-source builds? | ||
* what do paths look like? do they include "mu2e"? | * what do paths look like? do they include "mu2e"? | ||
* what does validation do - continuous and nightly | * what does validation do - continuous and nightly | ||
* what is the maintenance effort required? | * what is the maintenance effort required? |
Revision as of 22:35, 26 December 2017
Introduction
A page to write some principles and questions for code development.
Use Cases
Each level incorporates the levels above.
- user - setup pre-built code and run utilities and standard mu2e fcl. Example: compare filter rates by modifying fcl, make a gdml file, run tutorials. Needs simple and fool-proof procedures.
- analyzer - checkout, build user code against pre-built offline, commit changes. Example: user makes ntuples from personal code or Stntuple makes an ntuple. Needs user code well-incorporated with offline - possibly using the same build system, possibly coordinated directory structures and commands. Fool-proof user-to-offline dependencies.
- junior - make localized modifications to offline, test and commit them, as in specific product maintenance. Examples: fix a bug in an algorithm, add an accessor. Needs quick and reliable partial build of arbitrary pieces. Needs to catch dependency mistakes. Needs to switch quickly between prof and debug.
- senior - make larger and more widespread changes, test and commit them. Examples: modifying major include files, reco sequences, products. Probably needs full build of offline. Needs quick checkout and build.
- expert - infrequent complex development - move code between packages, build prototype products with offline, build trigger code.
Some Issues
- is it amenable to a tutorial?
- how will it run on OSG without /mu2e/app?
- should there be a different build time vs run time environment?
- is checkout setup different from re-setup?
- what windows does the user have open?
- can all dependencies be checked automatically?
- what does switching between prof and debug look like?
- how does an analyzer switch between pre-built releases?
- what build commands are supported for user code, how much are they forced to be coordinated with offline?
- are there clear lines of code responsibility?
- who coordinates pieces and tags and validates the whole (and how)?
- is it amenable to code reviews and pull requests?
- does it support out-of-source builds?
- what do paths look like? do they include "mu2e"?
- what does validation do - continuous and nightly
- what is the maintenance effort required?
- does it follow KISS?
- does it fit into a long-term plan?
- does a major change like introducing the calibration database cause unnecessary disruption?
- is git history preserved?