Jim Marino wrote:

On Jul 3, 2006, at 5:34 AM, ant elder wrote:

One of the big reasons for me is summed up well in Sebastien's proposal:

"This will get our community members involved in building the runtime
together and will lead to a wider knowledge base that makes it possible to
quickly implement new functionality in the future. It will also build a
community knowledge base that is ready to help new community members come on
board quickly."

I struggle with understanding the what and why of parts of the sandbox code and hope bringing small bits over one step at a time will help with this.

Could you outline specifically what you don't understand. Perhaps we could do another code walkthrough like we did about a month ago?

Why don't you like this approach? Sure it may take a bit more time but if in the long run we end up with more people understanding the runtime that seems
like time well spent even if we end up with most of the trunk being just
whats in the sandbox today.

The key point is I like Jeremy's approach better. The thought of merging M1 with the sandbox code (Sebastien's proposal) doesn't seem to fit based on my technical knowledge of both code bases. More importantly, Jeremy's approach strike me as better. Since I have outlined my reasoning in previous posts (not just technical) why I think it is better,I won't repeat them here, as it will just confuse the ongoing threads.



My proposal is not to merge M1 and the core2 sandbox. I am proposing to start a new fresh code stream and build the runtime through baby steps. We may be able to reuse some pieces of existing code, but more important is to engage our community in this exercise and integrate the new ideas that will emerge from this.


Here's an example where I'm struggling with both M1 and the core2 sandbox and thinking that we can do better if we start with a new fresh stream: our (recursive) assembly metadata model.

- M1 does not implement the recursive composition model and would require significant changes to support it. Core2 is an attempt to implement it but I'm not sure it's quite right, and also think that it can be simplified.

- M1 used Lists to represent relationships, Core2 uses Maps, I think M1 was better since it allowed to keep the order in the relationships.

- Core2 only defines implementation classes for the model, I think we should have interfaces + default implementation classes instead, like we had in M1, to allow for alternate implementations of the model.

- Over usage of Java Generics breaks flexibility in some cases, for example Component<I extends Implementation> will force you to recreate an instance of Component to swap its implementation with an implementation of a different type (and lose all the wires going in/out of the component).

- Core2 defines ReferenceDefinitions (without bindings) and BoundReferenceDefinitions (with bindings). IMO there are Reference types and Reference instances and both can have bindings.
or Reference.

- I think that Remotable should be on Interface and not Service.

- Scope should be defined in the Java component implementation, separate from the core model.

- Java and WSDL interfaces should be defined separate from the core model, we need to support multiple interface definition languages supported by plugins, not in the core.

- Implementation should extend ComponentType IMO instead of pointing to it, and we may even be able to simplify and just remove Implementation. Also I am not sure why we need to distinguish between AtomicImplementation and CompositeImplementation.

- Support for Composite Includes is missing, this is a significant part of the recursive composition model (half of it, one of the two ways to nest composites).


This list is not exhaustive... Another idea would be to externalize support for Composites in a separate plugin not part of the core service model (since there may be other ways to compose services in addition to an SCA composite, with Spring or other similar programming models), I'd like to know what people think about that.

I just checked in sandbox/sebastien/m2-design/model.spi a set of new interfaces. This is just an initial strawman to trigger a constructive discussion and ideas on how to best represent the recursive model. I also need help to define a scenario (not unit test cases, but an end to end sample application) to help put the recursive composition model in perspective and make sure we all understand it the same way.

Comments, feedback and help are welcome...



So, to turn it around a bit, as I've already outlined some of my reasons for liking Jeremy's approach more, do you have additional reasons other than you are having difficulty understanding the sandbox code and your feeling it will be a worthwhile exercise in knowledge sharing? Regarding the later, I think it's better (and more inclusive) to make a concerted effort to modularize and bring people into the sandbox code as that will allow all of the ongoing initiatives (particularly the ones showing Tuscany value add) to continue alongside the knowledge transfer.

Regarding the former, could you outline specifically what you are having difficulty following in the sandbox code so I can try and address it either through explanation or simplification of the code?

 ...ant

On 7/3/06, Jim Marino <[EMAIL PROTECTED]> wrote:

Why would we try this approach as opposed to the one Jeremy proposed,
i.e. moving what is already in sandbox to a branch or even trunk?
Since there are a number of initiatives people are already working on
in the sandbox codebase (e.g. Spring support, deployment,
conversations, data binding, OSGi support, support for new Java C&I
annotations, support for pluggable annotations) it is seems that
making improvements to that according to scenarios people are
interested in will be a nice way to move things forward involving as
many as possible.

Jim

On Jul 3, 2006, at 4:45 AM, ant elder wrote:

> On 6/30/06, Jean-Sebastien Delfino <[EMAIL PROTECTED]> wrote:
> <snip/>
>
> 2. Stage the assembly of our M2 runtime.
>> I propose that we start a fresh stream for M2 and  build the runtime
>> through
>> baby steps, in parallel with the scenario work. This will get our
>> community
>> members involved in building the runtime together and will lead to
>> a wider
>> knowledge base that makes it possible to quickly implement new
>> functionality
>> in the future. It will also build a community knowledge base that is
>> ready to
>> help new community members come on board quickly.
>
>
> This approach appeals to me. Could we just give it a try for a
> little while
> when everyone is back on Wednesday? If it doesn't work out then all
> the
> other code will still be available in SVN to try another approach.
>
>   ...ant


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




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




--
Jean-Sebastien


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

Reply via email to