Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National...

25
Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work performed under the auspices of the U.S. Department of Energy by Lawrence Livermore National Laboratory under Contract DE-AC52-07NA27344 Top Ten Reasons Why The CCA Specification Is NOT Ready for 1.0 11 October, 2007

Transcript of Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National...

Page 1: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

Lawrence Livermore National Laboratory

Gary Kumfert

UCRL-PRES-235389

Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551

This work performed under the auspices of the U.S. Department of Energy by Lawrence Livermore National Laboratory under Contract DE-AC52-07NA27344

Top Ten Reasons Why The CCA Specification Is NOT Ready for 1.0

11 October, 2007

Page 2: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

2UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

Motivation

Yes, this is a David Letterman-style “Top 10 List”• It is meant to be fun• But there are real issues that need to be addressed

Each item will...• have a 1-2 slide explanation• recommend actions

Expect many other issues to come out• all issues will be captured/tracked • on a wiki or Roundup or some combination

Page 3: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

3UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

Top 10 Reasons: Why CCA Is Not Ready For 1.0

10. Need to Implement CCA Review Board & Maturity Model

Page 4: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

4UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

10. Need to Implement CCA Review Board & Maturity Model

Motion 53 on Quorum • Passed Unanimously on May 8, 2007

1. Establishes a multi-stage specification maturity process

2. Institutes ad hoc task forces with charters, lifespan, documentation trail and named chair

3. Creates CCA Review Board (CCARB) to oversee quality of the specification and constitute & dissolve task forces

Motion 54 on Quorum now:

• Approves CCARB nominated by the Chair• Posted & Seconded Oct 2, 2007• Voting Ends Oct 23, 2007

Page 5: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

5UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

Stages Of Specification Maturity

10. Need to Implement CCA Review Board & Maturity Model

Completion Criteria:• Actually seat a CCARB• Have at least one task force go through entire process (Not

EventServices, which is too far ahead)• Have CCARB & histogram of all task forces (past and present)

accessible from cca-forum.org

Env & Toolkit Groups

Initiatives & Internal Apps

Tutorial & Outreach

TaskForce IdeaDraft

CandidateFinal

Page 6: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

6UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

Top 10 Reasons: Why CCA Is Not Ready For 1.0

9. SIDL Spec Should Not Be Preprocessed by Autoconf

10. Need to Implement CCA Review Board & Maturity Model

Page 7: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

7UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

9. SIDL Spec Should Not Be PreProcessed By Autoconf

Proposed Changes:• Abandon pre-Babel 1.0 compatibility• Abandon “variable version” specifications• Rename files to cca-v.v.v.sidl• Post all official versions prominently on cca-forum.org

@GOVCCA_SIDL_START_0@

package gov {

/** Common Component Architecture. ... */

package cca version @CCASPEC_VERSION@ {

@GOVCCA_SIDL_START_3@

@GOVCCA_SIDL_START_4@

@GOVCCA_SIDL_START_5@

...

cca-spec-babel/cca.sidl.in

Page 8: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

8UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

Top 10 Reasons: Why CCA Is Not Ready For 1.0

8. Exceptions Need Redesign

9. SIDL Spec Should Not Be Preprocessed by Autoconf

10. Need to Implement CCA Review Board & Maturity Model

Page 9: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

9UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

8. Exceptions Need Redesign

Enumerated error codes are poor design• Classic C++-tran• Not extensible

CCAException clutters almost every method signature Proposed Changes:

• Develop a hierarchy of exception types that are meaningful• Incorporate Babel’s implicit sidl.RuntimeException• Let BabelRMI worry about the Network Errors

enum CCAExceptionType {

Unexpected=-1, Nonstandard=1, PortNotDefined=2,

PortAlreadyDefined=3, ..., NetworkError=12 }

interface CCAException extends sidl.BaseException {

CCAExceptionType getCCAExceptionType();

}cca-spec-babel/cca.sidl.in

Page 10: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

10UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

Top 10 Reasons: Why CCA Is Not Ready For 1.0

7. Need EventService, CommandLineService, & MPIService

8. Exceptions Need Redesign

9. SIDL Spec Should Not Be Preprocessed by Autoconf

10. Need to Implement CCA Review Board & Maturity Model

Page 11: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

11UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

7. Need EventService, CommandLineService, & MPIService

These are all year 1 deliverables for TASCS EventService – on track

• Chair: Steve Parker• Blocked by CCARB formation

MPIService – stalled• Need a Chair• de facto implementations exist in frameworks

CommandLineService – stalled• Need a Chair• Needed by

MPIService (probably) Python? possible see Babel Issue 530

Page 12: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

12UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

Top 10 Reasons: Why CCA Is Not Ready For 1.0

6. Replace Parameter{Get,Set}Listener & ConnectionEventService With EventService When It Passes

7. Need EventService, CommandLineService, & MPIService

8. Exceptions Need Redesign

9. SIDL Spec Should Not Be Preprocessed by Autoconf

10. Need to Implement CCA Review Board & Maturity Model

Page 13: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

13UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

6. Replace Parameter{Get,Set}Listener & ConnectionEventService With EventService

We already have event-like services specific to• When port connections are made and broken• When parameters are set or read from

ParameterPort

Proposed Changes• Simplify spec by making all events through

EventService• Demonstrate EventService handling these system

events in a framework before final approval

Page 14: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

14UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

Top 10 Reasons: Why CCA Is Not Ready For 1.0

5. Parameter Port Is Too Complex

6. Replace Parameter{Get,Set}Listener & ConnectionEventService With EventService When It Passes

7. Need EventService, CommandLineService, & MPIService

8. Exceptions Need Redesign

9. SIDL Spec Should Not Be Preprocessed by Autoconf

10. Need to Implement CCA Review Board & Maturity Model

Page 15: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

15UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

5. Parameter Port Is Too Complex

158 methods Entire CCA 0.8.2 specification• 66 methods – core spec• 92 methods – ports

63 methods are just for ParameterPort & friends.

01

111122

385

4112

12

171233

3523

11

0 10 20 30 40

PortCCAException

ServicesComponent

ComponentReleaseComponentID

TypeMismatchExceptionTypeMap

AbstractFrameworkConnectionID

ComponentClassDescriptionGoPort

ConnectionEventConnectionEventListenerConnectionEventService

BuilderServiceComponentRepository

ServiceProviderServiceRegistry

BasicParameterPortParameterPort

ParameterPortFactoryParameterGetListenerParameterSetListener

# Methods Per SIDL Interface

Core

Spec

Page 16: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

16UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

Top 10 Reasons: Why CCA Is Not Ready For 1.0

4. Need Concept of a SubAssembly

5. Parameter Port Is Too Complex

6. Replace Parameter{Get,Set}Listener & ConnectionEventService With EventService When It Passes

7. Need EventService, CommandLineService, & MPIService

8. Exceptions Need Redesign

9. SIDL Spec Should Not Be Preprocessed by Autoconf

10. Need to Implement CCA Review Board & Maturity Model

Page 17: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

17UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

4. Need Concept of a Subassembly. Including Multiplicities, Nests, & Interconnects

Provides a Recursive Composability Model for Components

Component 2

Port 3 Port C

Component 1

Port 2 Port B

Port 1 Port A

Component 2

Port 5

Port 4 Port D

SubAssembly 1

SubAssembly 1

Port 3 Port D

Port 1 Port A

Two views of

the same thing

Page 18: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

18UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

Top 10 Reasons: Why CCA Is Not Ready For 1.0

3. Comments Are Long, Inconsistent, Out-of-Sync, Occasionally Wrong, & Sometimes Even Snide

4. Need Concept of a SubAssembly

5. Parameter Port Is Too Complex

6. Replace Parameter{Get,Set}Listener & ConnectionEventService With EventService When It Passes

7. Need EventService, CommandLineService, & MPIService

8. Exceptions Need Redesign

9. SIDL Spec Should Not Be Preprocessed by Autoconf

10. Need to Implement CCA Review Board & Maturity Model

Page 19: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

19UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

3. Comments Are Long, Inconsistent, Out-of-Sync, Occasionally Wrong, & Sometimes Even Snide

/** ... This version of the Port is so simple that mere mortal component writers could implement it...

*/

Describing BasicParamterPort

/** ...

* ::gov::cca::Services_Interface *svc = 0;

* svc = fwk->getServices( “instance0”, “AppDriver”, 0);

*/

A supposed C++ example in AbstractFramework’s doc-comment.

40 Line Introduction to ParameterPort

Doccomments appearas: • plain text • Javadoc • HTML.

createInstance( ... gov.TypeMap properties);

setComponentProperties( ..., gov.TypeMap map); }

Inconsistent naming conventions (e.g. from BuilderServices)

Page 20: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

20UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

Top 10 Reasons: Why CCA Is Not Ready For 1.0

2. CCA Conformance is Under-Defined

3. Comments Are Long, Inconsistent, Out-of-Sync, Occasionally Wrong, & Sometimes Even Snide

4. Need Concept of a SubAssembly

5. Parameter Port Is Too Complex

6. Replace Parameter{Get,Set}Listener & ConnectionEventService With EventService When It Passes

7. Need EventService, CommandLineService, & MPIService

8. Exceptions Need Redesign

9. SIDL Spec Should Not Be Preprocessed by Autoconf

10. Need to Implement CCA Review Board & Maturity Model

Page 21: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

21UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

Finding right balance between “inclusive” and “technically meaningful.”• Distributed Frameworks• CCA-Lite• The Rogue Ruby Implementer

Proposed Changes:• Define some hierarchy of conformance• Commit to some consistent vernacular that audience will

understand

2. CCA Conformance is Under Defined

“Compliance” to technical specification implies expectation of: • “interoperability” (e.g. IPv4, USB 1.1, 802.11g, etc.), or at least • “compatibility” (e.g. at source code level: MPI or POSIX).

“CCA-Compliant” should not deviate from this norm.

Page 22: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

22UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

Top 10 Reasons: Why CCA Is Not Ready For 1.0

1. CCA Manual

2. CCA Conformance is Under-Defined

3. Comments Are Long, Inconsistent, Out-of-Sync, Occasionally Wrong, & Sometimes Even Snide

4. Need Concept of a SubAssembly

5. Parameter Port Is Too Complex

6. Replace Parameter{Get,Set}Listener & ConnectionEventService With EventService When It Passes

7. Need EventService, CommandLineService, & MPIService

8. Exceptions Need Redesign

9. SIDL Spec Should Not Be Preprocessed by Autoconf

10. Need to Implement CCA Review Board & Maturity Model

Page 23: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

23UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

1. CCA Manual

THE COMMON COMPONENT

ARCHITECTURE

Completely revised for1.0 standards compliance

IN A NUTSHELLThe Official Guide

O’SMILEY

1 st Edition

Over a dozen copies in print

Fission Ares and Crag Pottswith A. Lotta Uddavolks

Page 24: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

24UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

So What Now?

Proposal• Gathering these 10, plus many others • CCARB should decide on Roundup, wiki, or both

More Info:• Understanding the CCA Specification through Decaf

(in process of updating to CCA 0.8.2 & Babel 1.0)

Page 25: Lawrence Livermore National Laboratory Gary Kumfert UCRL-PRES-235389 Lawrence Livermore National Laboratory, P. O. Box 808, Livermore, CA 94551 This work.

25UCRL-PRES-235389 Gary Kumfert, LLNL

Lawrence Livermore National Laboratory

Top 10 Reasons: Why CCA Is Not Ready For 1.0

1. CCA Manual

2. CCA Conformance is Under-Defined

3. Comments Are Long, Inconsistent, Out-of-Sync, Occasionally Wrong, & Sometimes Even Snide

4. Need Concept of a SubAssembly

5. Parameter Port Is Too Complex

6. Replace Parameter{Get,Set}Listener & ConnectionEventService With EventService When It Passes

7. Need EventService, CommandLineService, & MPIService

8. Exceptions Need Redesign

9. SIDL Spec Should Not Be Preprocessed by Autoconf

10. Need to Implement CCA Review Board & Maturity Model