Draft Proposal for Improving Development Process
- Problems with current development process/system
- Problems encountered at remote centers
- Proposal for a new process
- Team concerns about proposal
- Notes from proposal review meeting (Feb 26, 2004) - additional notes
Proposal for a New Development Process
(Updated March 18, 2004) - notesNotes from meeting with (Wright, Kunz, Sargent, Nesnas, Nov 24, 2003)
- Make module release no longer requires releases of compiled binaries and libraries. Release code with binaries and libraries only at major milestones in the development process (e.g. yearly or bi-yearly)
- Limit the use of Link Modules to 3rd party libraries (ext_ modules) that CLARAty no modify
Disable direct commits on the main branch. To commit, the system will ask the user whether he/she wants to make a release or move the changes onto a branch- Enable direct commits to main head of CVS repository. Allow branching for a non-release point in main by adding appropriate tag (details TBD)
- Major developments on new features or major bug fixes are implemented on a separate topic branch (e.g. sync stereo, flattening device hierarchy, estimation, etc).
- Usage and minor bug fixes are all done on the main branch by making releases directly from the main branch. People can use "cvs" update to get the latest software.
- Distinguish and tag code appropriately between these two concepts: released, and tested
- Release modules with source code only. Release process should include at least:
- Tagging CVS repository
- Capturing module dependency and updating the database
- For releases, only require sufficient build and test to reasonably prove that the changes introduced are operational
- Reduce the number of actively supported targets
- Introduce an automated build and test process for all targets; once this succeeds for a module, it will be tagged as tested (results from the nightly build after passing automated test. Additional tag hw-tested after tested on relevant platform.
- Release modules with source code only. Release process should include at least:
- With the exception of 3rd party (ext_) modules, all sandboxes will include the necessary source code.
- System prevents you from releasing a module in your sandbox that depends on other modules that you have modified. To release a module, you have to start releasing from the top of the dependency tree. System produces an ordered list of modules that need to be released.
- Open issue - how to get people to realize that they are on a branch and how to easily move them to the main branch when appropriate
- Improve current recursive makefile: speed up the compile time, and abort on errors
- Explore having a build manager / same person doing tools and build
- Keep two builds of the system: last night and tonight and ping pong.
- When automated test fails to catch a bug, write a test case to capture such future occurrences.
- Future addition: allow release of a module without requiring the release of modules that depend on it. The system will build against the proper modules from orig checkout
- Speed needs improvement on all yam latest
- Fix makefile to behave Makefile -k . Abort on errors unless specifically using a -k option but report error at end
- Modules that are independent of each other can be easily checked out with a test (2004-13-1)
Problems with AFS
- Centers and universities experience severe speed performance problems with AFS file access
- AFS does not work behind a NAT
- Requires individual accounts for external users and a psuedo badge for each
- Explore use of pserver and non-AFS dependency (or have a dual option: AFS and pserver)
Problems with Current Development Process
- The system is very complex and large
- People are struggling to get up to speed on the development process in a timely manner
- The YaM model appears to not match the current CLARAty development model. Some members feel that CVS is better and more efficient than the current system (Sargent, Bajracharya)
- Maintaining the process is an overwhelming responsibility - need to allocate more resources and raise the FTE level
- Progress is not made rapidly
- Lack of commonality of general and test data formats - need more standards in file/serialization formats and support for PDS
- Problem inherently complex and made more so with distributed hardware. Changes are difficult to make
- Current makefile system does not behave properly. If the build fails, the makefile continues its work.
- Too many passwords for website, database, code access, etc.
- Access to large disk space at reasonable cost proved very difficult with AFS
- Release process too complex (only few people have been able to release modules)
- Need to staff the position for tool development maintenance (0.5 FTE)
- Lack of a build process manager
- What we do is very different: flexibility and modularity is very expensive
- Difficult to see what is in CLARAty to find out what exactly is in modules
- Modules are at too fine granularity
- Broken release process
- People are on a branch for too long. Need a line in the sand that work together.
- Building and testing on all platforms is very difficult
Other Problems
- Change to navigator on K9 get checked in, how does this affect R8, R7, etc.?
- IP issue (SLOG tracker), mesh tracking
- Time constraints for properly investigating 3rd party libraries
- Impact of changes
- Capture things into FAQ
- How to transition (merge divergence).
- HTrans and DH parameters. Transforms
- Frame needs work