What should 1.0 env be? (note implicit assumption that spec-only is not enough)
We need to start defining what's in, what's out, and why.
Release date
1.1 Pre-Scidac2
1.2 During Scidac2
Binding
2.1 Babel 1.0
2.2 Neo,Classic,Lite
Specification Features
3.1 Multiplexed uses ports
3.2 Fault tolerance
3.3 ParameterPort
3.4 GuiBuilderService
3.5 Event-service
3.6 Framework-particular event definition
3.7 Rule-processing for events service
3.8 ComponentRegistry
3.9 CreationService
3.10 MxN (PCI?)
3.11 FrameAccess
? (better support for creating containers of component assemblies).
Conformance Testing Suite
3.99 Needed
Supported reference implementation(s)
4.1 SPMD/MPMD library-style components (ccaffeine)
4.2 Distributed (?)
4.3 All-in-one
4.4 Windows posix
4.5 Windows native
4.6 Binary distributions
4.7 RMI-over-mpi
4.8 Performant RMI
Supported components
5.1 MPI
5.2 ParameterPortFactory
5.3 GUI
5.4 Parallel-to-distributed adaptor
Supported tools
6.1 V 0.1 Eclipse/Babel/Cca plugin(s) release bundle
6.2 V 1.0 Proxy generators (performance, log-debug)
6.3 Chasm
6.4 Generating static executables
Unsupported
move from above items and add more here.
Notes
- Write requirements document for CCA 1.0 by end of SciDAC1
- 1.0 should include essential features to be a good general-purpose component architecture. Features not essential in this respect can be added later.
- Spec needs to be stratified into "core" and "optional" features
- Some features should remain optional to maintain the simplicity of implementation for those who don't need the whole kitchen sink. But if they're implemented, we specify interface.
- Ben's section 5 "Supported Components" should probably be optional standards
- Need requirements for both the specification itself and the surrounding framework/environment
- Need to provide users with a matrix of conformance tests and CCA implementations
- Need to decide requirements for "reference" implementation
- Maybe spec+tests are enough to define CCA 1.0. Drop idea of "reference" implementation in favor of just having a bunch of implementations, which implement some or all of the CCA spec (see matrix, above).
- Is HPC-only okay for reference?
- What about distributed?
- Does Ccaffeine have too much legacy baggage to be a good reference implementation
- From-scratch cleanroom Babel-based reimplementation? Good idea, but perhaps expensive? Maybe start from Ben's Java alternative framework, convert to Babel & C?