Paul:

I guess I'm looking at this from a completely different point
of view.  After coming up with my half-backed proposal for
changes to ComponentManager (I shouldn't make proposals after
being awake that long), I was rightfully shot down on the issue
of backwards compatibility.  Now its clear that the
compatibility question is technical debatable - after all,
if anyone really using a returned value of component as Component?
Bottom line - its contractual - and you don't break contracts
(forget about the technical issues .. its marketing principal
we need to worry about).  So option (1) isn't an option. We
have option (2) and option (3).  Before Pete sent his suggestion
I had been playing around with variants - one approach was to
come up with a specialisation of ComponentManager but that just
turned into Minestrone soup (specialising a class to add what
in principal should be super-type behaviour).  I tried a couple
of variants of this but constantly ran foul of the fact that
DefaultComponentManager has a parent ComponentManager which
implies lots if [if instanceof Component do X else do Y] stuff.
My conclusion from that was to drop the idea of Band-Aid
treatment (a) because it just didn't hang together, and (b)
Avalon is fundamentally very clean in the Band-Aid principal was
ranking very high on the "suck" scale.  Next step was to address
extension (ComponentManager2 or a other name in the same package)
or a new package.  I tried coming up with new package
names but frankly could not think of anything with the equivalent
elegance of the current framework packages - furthermore, I really
struggle trying to come up with some more meaningful class names
assuming continuation under the component package.  Put it down
to insufficient IQ - I didn't arrive at anything interesting and
that bugged me most on marketing grounds.

Five minutes later Pete posted his suggestions, one of which I
jumped on immediately - the framework/service package (with
adjustment to correct the spelling to Serviceable :-)).

Here is why I jumped ...

   (1) because it grammatically made perfect sense in the context
       of the overall framework
   (2) because I can market those terms without compromising
       anything on the component model - in fact enhancing it
       (see point 3)
   (3) because I can leverage the fact that the Avalon
       component model now encompasses legacy applications
       (evidence of which is already implemented and tested)

And most importantly for me ...

   (4) because I'm busy recruiting new Avalon advocates from
       a legacy (CORBA) community (that are reading these
       messages) and I need a clean story backed by a relevant
       set of interfaces and implementations (which we now have
       pending general agreement - example org.apache.orb.ORB
       can now be supplied by a manager to the components it
       manages while maintaining 100% CORBA spec compliance and
       incorporating the Avalon component model for logging,
       configuration, and contextualization).

Summary .. this isn't ComponentManager2!
The new package quite elegantly reflects the computation interfaces
needed by a "component" in the declaration of the contracts
concerning the service provision and service disposal aspect.

Cheers, Steve.


> -----Original Message-----
> From: Paul Hammant [mailto:[EMAIL PROTECTED]]
> Sent: Sunday, 10 February, 2002 17:18
> To: Avalon Developers List
> Subject: Re: ComponentManager interface
>
>
> Stephen,
>
> I'm not so sure.  We're trying to sell Component assembly, component
> orientated programming. With the proposal with Service as the
> replacement word, we've duplicated an entire package.  I thought
> wholescale class cloning was no-no, even at tool level.
>
> We have three choices:
>
> 1) Brave replacement of Component with Object return type on lookup(..).
>
>   Pros: small change
>   Cons: Not backwards compatible - lots of recompilation and possible
> casting needed for users of API
>
> 2) Package clone (as per proposal booked in).
>
>   Pros: backwards compatible.
>   Cons: Overkill duplication, confusion.
>
> 3) "2" suffixed interfaces
>
>   Pros: new new package,  backwards compatible.  Smaller amount
> of changes.
>   Cons: "ugly" digit suffix to interface names.
>
> I think (3) is a front runner.  For (2) the "medicine is worse than the
> cure".  (1) I would do for selfish reasons, but we'd upset various
> communities, possibly to the point of mutiny.
>
> However, I am not active in maint of framework.  I will leave the
> decision to others, but state that my highest concern is a timeline.  I
> will vote..... if (1) is vetoed I'll vote for (3) over (2) and I really
> believe that loading a gun and shooting a package to avoid a "2" suffix
> is over the top.
>
> - Paul
>
>
>
> >Paul:
> >
> >I don't agree with point concerning the absence of the
> >word "Component" - a component is an abstract thing - more
> >abstract than the computational descriptions we can put
> >into Java interfaces.  In fact I think the absence of the
> >word component in the interface name clarifies (for me) the
> >function from a computational perspective as distinct from
> >the role of the interface in the overall component
> >abstraction.
> >
> >Its Sunday afternoon and there are just too many big word
> >in that paragraph - time I had another glass of wine!
> >
> >Cheers, Steve.
> >
> >
> >>-----Original Message-----
> >>From: Paul Hammant [mailto:[EMAIL PROTECTED]]
> >>Sent: Sunday, 10 February, 2002 14:25
> >>To: Avalon Developers List
> >>Subject: Re: ComponentManager interface
> >>
> >>
> >>Peter,
> >>
> >>>>Composable2, ComponentManager2 ?
> >>>>
> >>>ewww - runaway, runaway ;)
> >>>
> >>I knew we we going round in circles dude....   You're the one pushing
> >>for 'Component becomes Object' (by implication) then backing away  ;-)
> >>
> >>I don't like Stephens new ServiceXXXX stuff.  I mean it is good. No it
> >>is perfect but for the absense of the word "Component".
> >>
> >>We are not without precident, all these from JDK1.4 :
> >>
> >>  LayoutManager2
> >>  GlyphPainter2
> >>  Parser2 (Crimson)
> >>  ElementNode2
> >>  NamespaceSupport2
> >>
> >><fx> ducks from Peter's bullets </fx>
> >>
> >>Packages Evolve.  Lets understand that.  We have no versioning built
> >>into Java in the sense that two versions of the same API could
> >>interoperate in the same classloader/classpath.  In ten years time we
> >>will have loads of dead packages (java.io is example) or loads of
> >>suffixed classes/interfaces.  We could migrate all functionality
> >>immediately to the "2" versions and for the original versions have a
> >>hand crafted proxy that routes all calls through to the new one.
> >>
> >>It is one strategy that will be taken with AWT in the end I guess.
> >> Sun/Netacape built Swing on top of the AWT primatives, but kept AWTs
> >>own heavyweight comps.  Sun could obsolete AWT and or have a near enough
> >>pure Java "AWT2" that AWT routes through to.  In fact AWT could route
> >>through to Swing, more or less completely hiding the experience.  In
> >>that version of the graphic toolkit all Swing would need from the
> >>iunderlying OS would be mouse, kbd and "rectangle reservation" graphics
> >>support.  Swing could sit small OSs that have no advanced graphics API.
> >> Sigh... Java's original Component model ;-)
> >>
> >>- Paul
> >>
> >>
> >>
> >>--
> >>To unsubscribe, e-mail:
> >>
> ><mailto:[EMAIL PROTECTED]>
> >For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>
>
>
>--
>To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
>For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>
>
>
>




--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to