You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by Stephen McConnell <mc...@apache.org> on 2003/07/25 19:44:35 UTC

Re: [Proposal] AMTAGS Pt. 2 (the opt-out clause)


Berin Loritsch wrote:

> Again, I am splitting this up into three threads.  The first one is 
> already
> under way.  Each thread represents a different level of concern.
>
> In this thread, we are dealing with the context, logging, and 
> configuration
> meta tags.  I personally do not have a strong oppinion against them.  
> I can
> see value for their existence.  As the context and configuration 
> aspects are
> fairly Avalon specific, I don't mind them being in the Avalon 
> namespace.  I
> do request that they be specified as *optional* meta information.  


* Optional to implement?

  That's fine - it just means that the container
  documents that fact that it does not provide
  support for the particular tag and includes at
  least some form of graceful failure if a
  component declares a unsupported constraint.

* Optional to recognize?

  That would defeat the purpose of the specification.
  We would simply be regenerating another insufficient
  specification.

So what exactly do you mean by optional?

> The logging attribute is more generic, but there is little point in 
> defining a new namespace just for that concern.
>
> Part of the reason why I am somewhat hesitant about them is because of 
> the
> cry for simplicity.  PicoContainer, Fortress, ECM, and Phoenix (with the
> exception of the configuration tag) all live quite happily without them.


How do container specific APIs, container specific context entries, and 
container specific casting constraints add to the simplicity of working 
with Avalon technologies?  Is this not falling back into the AMTAGS V1 
trap - the insufficient specification that won't deliver on its promise.

>
> While they make certain things like dynamic assembly a workable reality, 


These tags have nothing to do with dynamic assembly. 

>
> I wonder how many developers will agree that they *have* to use it.


A developer does not *have* to anything unless they need to express a 
constraint - such as a context entry with a key, castable to a 
particular class, or the assumption that a context object can be cast to 
another interface.  Developers don't *have* do any of this - presuming 
they are happy with the concept of container lock-in.

>
> I like validation, and I think we should provide hooks so that developers
> interested in validation and verification of their system can let it take
> place automatically.  On the other hand, I don't think we should make it
> a mandatory thing for those developers with very simple needs.  I.e. it
> helps reduce the complexity of writing components for those who don't 
> want
> that complexity. 


I understand the "mandatory" thing you suggesting here.  There is 
nothing mandatory for the developer.  They have choice.  The context 
where mandatory should be discussed is with respect to the 
responsibility of a container to recognize the full suite of tags.  
Developers simply get to leverage what makes sense in their environment.

>
> I believe this is a reasonable request. 


:-)

> My second concern has to do with the implications on implementation.  As
> long as I can choose any method I like to validate the context entries or
> configuration, all is well.  I don't want to be forced into a contract
> between context entry dependency declaration and context entry 
> definition.
> The AMTAGS should be strictly applied to making the component writer's
> life easy. 


What's your point?  If a componet author states he wants a widget and 
he's going to ask for it using the key "widget" - then a container 
should either fulfill this request or fail gracefully.  The contract we 
are talking about is container "recognition" - recognizing that you can 
or cannot fulfill the expectations that a component has on a container.

Steve.

-- 

Stephen J. McConnell
mailto:mcconnell@apache.org
http://www.osm.net

Sent via James running under Merlin as an NT service.
http://avalon.apache.org/sandbox/merlin




---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@avalon.apache.org
For additional commands, e-mail: dev-help@avalon.apache.org


Re: [Proposal] AMTAGS Pt. 2 (the opt-out clause)

Posted by Leo Simons <le...@apache.org>.
Steve,

Stephen McConnell wrote:
> That would defeat the purpose of the specification. We would simply
> be regenerating another insufficient specification.

<snip/>

>  Is this not falling back into the
> AMTAGS V1 trap - the insufficient specification that won't deliver on
> its promise.

could you please spend an afternoon reading about extreme programming,

http://www.extremeprogramming.org/

for example. Disregard the cheesy name. You really don't get it. Any 
specification not developed according to at least some of the principles 
underlying XP (in particular, incremental development) is going to be 
subject to overspecification. Overspecification is worse than 
underspecification.

Of course, if you actually follow XP-style methodology, the need for 
specification goes away as the specs are encoded in the unit tests.

"AMTAGS V1" does not promise anything. Nor should V2 or V3. You guys 
should just write avalon-meta and implement it in our three containers 
without worrying toooo much at this point as to whether an attribute 
will be optional or not and how exactly that is to be worded.

The real world will show what parts will go unused in the majority of 
systems, and those parts you can then dub optional.

all IMNHSO.

cheers!

- Leo



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@avalon.apache.org
For additional commands, e-mail: dev-help@avalon.apache.org


Re: [Proposal] AMTAGS Pt. 2 (the opt-out clause)

Posted by Stephen McConnell <mc...@apache.org>.

Berin Loritsch wrote:

> Stephen McConnell wrote:
>
>>
>>
>> Berin Loritsch wrote:
>>
>>> Again, I am splitting this up into three threads.  The first one is 
>>> already
>>> under way.  Each thread represents a different level of concern.
>>>
>>> In this thread, we are dealing with the context, logging, and 
>>> configuration
>>> meta tags.  I personally do not have a strong oppinion against 
>>> them.  I can
>>> see value for their existence.  As the context and configuration 
>>> aspects are
>>> fairly Avalon specific, I don't mind them being in the Avalon 
>>> namespace.  I
>>> do request that they be specified as *optional* meta information.  
>>
>>
>> * Optional to recognize?
>>
>>  That would defeat the purpose of the specification.
>>  We would simply be regenerating another insufficient
>>  specification.
>
>
> It would still be sufficient for some--just not everyone.  Seriously 
> though,
> the difference between recognition and implementation is somewhat 
> blurred.
> What is the true difference between recognizing information to ignore 
> it later
> and simply not recognizing it at all?  Its just semantics.
>
>> So what exactly do you mean by optional?
>
>
> I mean optional to define.  The AMTAGS proposal is about the component 
> writer's
> declarations to the container.  What the container does with it is 
> really up
> to the container (to a point).  IOW, I just don't want to force users 
> to declare
> an @avalon.context.entry for each value they use if it isn't important 
> to them.


There is nothing here forcing a user to do anything. All we are dealing 
with is the provision of mechanisms whereby component authors can 
migrate.  If component author does not want to migrate - then they can 
work within the semtics of a container.  If the component author wants 
container independence, then we are providing a framework to assure 
independence.  The choice rests with the component developer.

>
> For instance, I am coming from a Fortress/Phoenix world where these 
> tags don't
> currently exist.  


Declaration of context dependencies esist in Phoenix by implication and 
transformation.  Phoenix declares meta-info in a <blockinfo> 
descriptor.  The result of expansion of a block info descriptor is the 
creation of a Type defintion that includes all of the Phoenix 
assumptions concerning context entry dependencies (a process that is 
automated under the meta-info package).

> If I now have to go back and add the meta info for all the
> context entries just so that they can work again, then I have a problem.  


No - you will not have to change a thing (unless you want thos 
components to run in containment environments other than Fortress).

> If my existing functional components don't have to be altered then I 
> am happy.


Good - they don't have to be altered.
I'm happy your happy!

>
>
>>
>>> The logging attribute is more generic, but there is little point in 
>>> defining a new namespace just for that concern.
>>>
>>> Part of the reason why I am somewhat hesitant about them is because 
>>> of the
>>> cry for simplicity.  PicoContainer, Fortress, ECM, and Phoenix (with 
>>> the
>>> exception of the configuration tag) all live quite happily without 
>>> them.
>>
>>
>> How do container specific APIs, container specific context entries, 
>> and container specific casting constraints add to the simplicity of 
>> working with Avalon technologies?  Is this not falling back into the 
>> AMTAGS V1 trap - the insufficient specification that won't deliver on 
>> its promise.
>
>
> Nothing.  I am just starting to chew on how to do the same thing 
> without developer declared meta data.  I don't even have a vague idea 
> yet, but there has to be a way to make things work without having to 
> half think about it.


There is a page that Aaron put together about context assumptions.  On 
this, Fortress has a rather preponderouse number of context entry names 
that it uses.  If I consider all of that, and if I consider Merlin 
management of context declarations (using the @avalon.entry tag), I can 
deliver Fortress based components and containers running in Merlin - if 
and only if those entries are published.  This could probably be 
simplified by tools much in the same way the a Type defintion is 
magically generatd from the <blockinfo> descriptor.

>
>
>>> I wonder how many developers will agree that they *have* to use it.
>>
>>
>> A developer does not *have* to anything unless they need to express a 
>> constraint - such as a context entry with a key, castable to a 
>> particular class, or the assumption that a context object can be cast 
>> to another interface.  Developers don't *have* do any of this - 
>> presuming they are happy with the concept of container lock-in.
>
>
> Of course if there are standard context entries, then they don't *have*
> to use it, and they won't be locked in to a container.


Just a small point here - when I refer to standard context entries I'm 
referring to the usage of standard names.  I am not implying or 
suggesting that a standard context name must be made available.  As 
such, the obnligation remains for a component author to declare a 
context assumption if they want to be able to migrate - we just simplify 
things by providing the commono standard names in which case they don't 
need to play around with container specific meta-data.

>
>>> I like validation, and I think we should provide hooks so that 
>>> developers
>>> interested in validation and verification of their system can let it 
>>> take
>>> place automatically.  On the other hand, I don't think we should 
>>> make it
>>> a mandatory thing for those developers with very simple needs.  I.e. it
>>> helps reduce the complexity of writing components for those who 
>>> don't want
>>> that complexity. 
>>
>>
>>
>>
>> I understand the "mandatory" thing you suggesting here.  There is 
>> nothing mandatory for the developer.  They have choice.  The context 
>> where mandatory should be discussed is with respect to the 
>> responsibility of a container to recognize the full suite of tags.  
>> Developers simply get to leverage what makes sense in their environment.
>
>
> I'm glad.
>
>>
>>> My second concern has to do with the implications on 
>>> implementation.  As
>>> long as I can choose any method I like to validate the context 
>>> entries or
>>> configuration, all is well.  I don't want to be forced into a contract
>>> between context entry dependency declaration and context entry 
>>> definition.
>>> The AMTAGS should be strictly applied to making the component writer's
>>> life easy. 
>>
>>
>>
>> What's your point?  If a componet author states he wants a widget and 
>> he's going to ask for it using the key "widget" - then a container 
>> should either fulfill this request or fail gracefully.  The contract 
>> we are talking about is container "recognition" - recognizing that 
>> you can or cannot fulfill the expectations that a component has on a 
>> container.
>
>
> Right.  As things are defined right now, there is no problem.


Cool.

Cheers, Steve.

-- 

Stephen J. McConnell
mailto:mcconnell@apache.org
http://www.osm.net

Sent via James running under Merlin as an NT service.
http://avalon.apache.org/sandbox/merlin




---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@avalon.apache.org
For additional commands, e-mail: dev-help@avalon.apache.org


Re: [Proposal] AMTAGS Pt. 2 (the opt-out clause)

Posted by Berin Loritsch <bl...@apache.org>.
Stephen McConnell wrote:

> 
> 
> Berin Loritsch wrote:
> 
>> Again, I am splitting this up into three threads.  The first one is 
>> already
>> under way.  Each thread represents a different level of concern.
>>
>> In this thread, we are dealing with the context, logging, and 
>> configuration
>> meta tags.  I personally do not have a strong oppinion against them.  
>> I can
>> see value for their existence.  As the context and configuration 
>> aspects are
>> fairly Avalon specific, I don't mind them being in the Avalon 
>> namespace.  I
>> do request that they be specified as *optional* meta information.  
> 
> * Optional to recognize?
> 
>  That would defeat the purpose of the specification.
>  We would simply be regenerating another insufficient
>  specification.

It would still be sufficient for some--just not everyone.  Seriously though,
the difference between recognition and implementation is somewhat blurred.
What is the true difference between recognizing information to ignore it later
and simply not recognizing it at all?  Its just semantics.

> So what exactly do you mean by optional?

I mean optional to define.  The AMTAGS proposal is about the component writer's
declarations to the container.  What the container does with it is really up
to the container (to a point).  IOW, I just don't want to force users to declare
an @avalon.context.entry for each value they use if it isn't important to them.

For instance, I am coming from a Fortress/Phoenix world where these tags don't
currently exist.  If I now have to go back and add the meta info for all the
context entries just so that they can work again, then I have a problem.  If my
existing functional components don't have to be altered then I am happy.


> 
>> The logging attribute is more generic, but there is little point in 
>> defining a new namespace just for that concern.
>>
>> Part of the reason why I am somewhat hesitant about them is because of 
>> the
>> cry for simplicity.  PicoContainer, Fortress, ECM, and Phoenix (with the
>> exception of the configuration tag) all live quite happily without them.
> 
> How do container specific APIs, container specific context entries, and 
> container specific casting constraints add to the simplicity of working 
> with Avalon technologies?  Is this not falling back into the AMTAGS V1 
> trap - the insufficient specification that won't deliver on its promise.

Nothing.  I am just starting to chew on how to do the same thing without
developer declared meta data.  I don't even have a vague idea yet, but
there has to be a way to make things work without having to half think
about it.


>> I wonder how many developers will agree that they *have* to use it.
> 
> A developer does not *have* to anything unless they need to express a 
> constraint - such as a context entry with a key, castable to a 
> particular class, or the assumption that a context object can be cast to 
> another interface.  Developers don't *have* do any of this - presuming 
> they are happy with the concept of container lock-in.

Of course if there are standard context entries, then they don't *have*
to use it, and they won't be locked in to a container.

>> I like validation, and I think we should provide hooks so that developers
>> interested in validation and verification of their system can let it take
>> place automatically.  On the other hand, I don't think we should make it
>> a mandatory thing for those developers with very simple needs.  I.e. it
>> helps reduce the complexity of writing components for those who don't 
>> want
>> that complexity. 
> 
> 
> 
> I understand the "mandatory" thing you suggesting here.  There is 
> nothing mandatory for the developer.  They have choice.  The context 
> where mandatory should be discussed is with respect to the 
> responsibility of a container to recognize the full suite of tags.  
> Developers simply get to leverage what makes sense in their environment.

I'm glad.

> 
>> My second concern has to do with the implications on implementation.  As
>> long as I can choose any method I like to validate the context entries or
>> configuration, all is well.  I don't want to be forced into a contract
>> between context entry dependency declaration and context entry 
>> definition.
>> The AMTAGS should be strictly applied to making the component writer's
>> life easy. 
> 
> 
> What's your point?  If a componet author states he wants a widget and 
> he's going to ask for it using the key "widget" - then a container 
> should either fulfill this request or fail gracefully.  The contract we 
> are talking about is container "recognition" - recognizing that you can 
> or cannot fulfill the expectations that a component has on a container.

Right.  As things are defined right now, there is no problem.

-- 

"They that give up essential liberty to obtain a little temporary safety
  deserve neither liberty nor safety."
                 - Benjamin Franklin


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@avalon.apache.org
For additional commands, e-mail: dev-help@avalon.apache.org