Tim et. al.,

The http://scm.dspace.org/svn/repo/modules directory is intended by me to be
the "archetype" for how and where we should be maintaining literally all the
modules of DSpace including portions of DSpace API.  I understand at the
moment it looks a little bit chaotic, but what needs to be understood is (as
Tim has suggested) that we can organize things within this space to assure
we are appropriately grouping the modules. But what is most critical is the
support for individual svn project spaces and release histories for each
module.

I argued extensively during my redesign of dspace to use maven in 2006, that
many of the individual dspace-xxx modules should have had their own svn
project spaces (trunk/branches/tags) so that they could have separate
releasing, but the group pushed back excessively on creating more than on
trunk at that time.  This was not only disappointment to me, but most of our
forward motion ceased after the excessive debate and breaking dspace-api up
further was never brought to fruition.  It took my next initiative to move
the SVN repository off of Sourceforge to OSS hosting that finally got a top
level directory in place and allowed us to start creating individual
separate projects.  And, now we have a "modules" and "sandbox" space within
the repository. This is where the experimental growth and creation of new
addons for DSpace is happening, if your not understanding what is going on
in these directories, ask questions and we will do our best to describe why
and how specific projects exist.

I have to be critical that DSpace Services have no reason to be in the main
DSpace trunk.  It is a standalone tool with no dependency on dspace-api,
this was how it was designed to be. Placing it under trunk actually defeats
all the benefits of releasing separately.   And to be honest, none one
should be locally altering the implementation of the Service Manager
codebase in the customization of your DSpace instance.  This doesn't mean
other committers in the group can't alter the code and
contribute improvements to it, everyone is certainly welcome to contribute.
Its very serious, you shouldn't be touching this code if you are just
customizing your local DSpace instance, this is why its source is separate
from the distribution and has separate release cycles.

---

Based upon the alternate proposal, I feel that something is being
misunderstood about the goals of the Domain Model and
original Asynchronous work.  The Domain Model (
https://wiki.duraspace.org/display/DSPACE/Refactoring+the+DSpace+Domain+Model)
 being created as a Addon Project is specifically designed to
allow asynchronous release of addons that may be later released as part of
the formal DSpace release. The Domain Model, Its corresponding Services and
DAO, need to be maintained quite separately from the release trunk to
facilitate the asynchronous release process.  This is because versioning
these API outside of the trunk will allow the following features:

a.) Because the Core API (which really have not changed since DSpace has
been initially released) doesn't actually need to be rereleased every single
version of DSpace, it can be depended on as more stable than the underlying
implementation(s), which are currently the target of considerable criticism
and interest in reimplementation.  Likewise, because it is a "Contract", we
can institute policies of maintaining backward and/or forwards compatibility
across new DSpace releases.

b.) Because of this "Contract", users of the Domain Model wil be insulated
from changes to the internal DSpace implementation, their work will be more
stable and require less source code merging than the current approach of
direct alteration of the codebase or direct overriding of core
implementations.

c.) Because the Core API would reside outside of the trunk, Addons can be
released using it as a dependency and then depended on in the trunk without
having to be released / maintained within the trunk. This allows for 3rd
parties to have an easier time releasing their addons to DSpace.  Likewise,
this allows addons maintained in separate organizations to be contributed
and released with DSpace without having to drag them into the trunk.

Gaining this capability is the absolute reason we are currently striving to
complete the work.  To give you an example, in 1.6 we were forced to copy
dspace-statistics into the trunk because it needed to depend on dspace-api
and be depended on by other trunk modules like the dspace-xmlui-api.  By
eliminating the need to depend on dspace-api and instead on an external
release of dspace-core-api, we will be able to move dspace-statistics back
out of the trunk and release it on its own version, and include that version
into the dspace-xmlui-api/webapp etc. By creating dspace-core-api outside of
the Trunk, we are creating a whole new way to interact with the DSpace
Domain Model and its underlying implementation.  Developer working on DSpace
in this new situation only need to checkout the parts of DSpace that they
are interested in.

On Thu, Mar 31, 2011 at 2:06 PM, Tim Donohue <tdono...@duraspace.org> wrote:
>
> In other words: We need to make source code easier to work with (or at
> least more logical), and not add unnecessary complications or
> frustrations to our development processes.
>
> Just my quick thoughts on this. Definitely feel free to disagree with
> anything I've said. I want this to be an open discussion of ideas, so
> that we can continue to work quickly towards a common decision around
> many of these proposals/vague ideas that have been hanging around for
> far too long.
>
> - Tim


I am very confident about contributing the Core Domain Model and Services.
 I have been working on Asyncronous release for the last year and this work
is not as much"coding" as it is the culmination of a great deal of code
analysis and research. I will be consolidating the proposals to reflect that
they are, in fact, one in the same.  I fear that because many do understand
the original intentions, they are not understanding the necessity of the
work.  I will also argue that the changes are not unduly complex and are
meant to actually improve the organization of the codebase and make it
easier to maintain your customizations, addons, etc.  Likewise the work
gives the community a template for how the service manager should be used in
the DSpace application.

For the minor price of altering one line that looks like "public class
Foo implements SomeInterface" in the DSpaceObject Classes, we get a
explicitly defined API / Contract for the DSpace Domain model. The work to
add the Domain Model will actually be an easy merge for those who have
customized core dspace classes, as it is literally only changing one line of
code per class in dspace-api.

Best,
Mark

-- 
Mark R. Diggory
@mire - www.atmire.com
2888 Loker Avenue East - Suite 305 - Carlsbad - CA - 92010
Technologielaan 9 - 3001 Heverlee - Belgium
------------------------------------------------------------------------------
Create and publish websites with WebMatrix
Use the most popular FREE web apps or write code yourself; 
WebMatrix provides all the features you need to develop and 
publish your website. http://p.sf.net/sfu/ms-webmatrix-sf
_______________________________________________
Dspace-devel mailing list
Dspace-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dspace-devel

Reply via email to