Hi all,
No-ones come back with any objections on this, so (as you might have noticed from commit messages) I've started to move things around. Please be aware of this if you are making any changes to defaults/*, alternatives/* or core.runtime/*, since all of these will move.

Since we do now have a stable snapshot with archetype up and working on the snapshot repo, what I'd also like to propose is that we bump the version number from 0.1.0-incubating-SNAPSHOT through to 0.1.1-incubating-SNAPSHOT. Obviously, we will at some point need to push out our 0.1 release, but I only want to do that when we've got our documentation in a better state. I see the reorg as a prereq to that because we can then put appropriate effort on documenting the different modules (ie, I intend to do less work on the 'default' runtime documentation cos I intend to put my energy into the new CDI/JSR-299 based runtime).

If anyone has an objection to me bumping the version number, let me know. Otherwise I'll assume lazy consent and action it in the next few days.

Thanks
Dan


On 27/02/2011 15:58, Dan Haywood wrote:
Hi all,

Over the last month or two I've been working through our various modules, ostensibly to work on their documentation. As part of this I've been using Structure 101 [1] to detangle the packages structures and make it easier for would-be contributors to understand the codebase. So far I've tidied up core.common, core.metamodel and core.progmodel. I'm now up to working on the core.runtime module... and it needs quite a lot of work.

What I'm actively considering is to write a new runtime, so that our current runtime moves out of core and into (say) org.apache.isis.runtimes.dflt. This new runtime could be a lot more lightweight than the current, because we could use other frameworks to do some of the heavy lifting that our current runtime does. Specifically: - context management of scopes (application/session/transaction) - ie the IsisContext class - could be managed by JSR-299 CDI (this is our roadmap anyway to implement, [2]) - rather than invent our own ObjectStore API to abstract over different persistence implementations, we could leverage DataNucleus (as suggested in ISIS-14, [3])

I think this would be less work overall than tidying up our current runtime. We could also more thoroughly test-drive the new implementation.

My thoughts is that the existing object stores would be moved so that they live "under" the existing runtime. The same is true (I think) for the bytecode implementations and also the remoting support.

However, the security and progmodel APIs, and also the viewers, live in the application layer (ie in "front of" the runtime) and so would be usable by both the existing and the new runtimes. This may require a little refactoring to remove dependencies on IsisContext; but I think refactoring these classes would be relatively straightforward.

~~~
I have, therefore, added a page to our wiki [4] suggesting a new directory structure and groupId/artifactId. I'm happy (as usual) to make these changes; but I don't want to charge in there without some discussion.

If we do this work, what I'll do is to fully document core, and but only lightly document the existing runtime, on the basis that there'll be a new runtime to follow.

Thoughts?

Cheers
Dan

[1] http://www.headwaysoftware.com/products/structure101/index.php
[2] http://wiki.apache.org/incubator/IsisProposal
[3] https://issues.apache.org/jira/browse/ISIS-14
[4] https://cwiki.apache.org/confluence/display/ISIS/MavenModulesMultipleRuntimesProposal

Reply via email to