Robin,

Thank you for a great introduction. I'll inject just a few comments inline.

On Thu, Jul 14, 2011 at 2:22 AM, Robin Taylor <robin.tay...@ed.ac.uk> wrote:
> Hi all,
>
> A large portion of yesterdays meeting ended up being a discussion on
> async releases. Mark (Diggory) has for some time been strongly
> advocating this approach and has written extensively on the subject both
> on the wiki and in Jira. I think it is incumbent on us all to consider
> his arguments and comment thereon. So to give him a rest I'll chip in,
> albeit from a different angle.

Thanks, I thought my vacation would leave me well rested. But alas,
traipsing across the US with  6 yr old and a 11 month old turned out
to be as exhausting as it sounds.
>
> Some background - DSpace can currently be downloaded from Sourceforge
> either as a source code or binary release.
>
> The proposition (as I understand it) - Allow for releases of individual
> DSpace Maven modules outwith the normal 'complete' release that
> currently takes place roughly once a year. By a release I mean copying
> the DSpace Maven artifacts (jars and wars) to the DSpace Maven
> repository space to be publicly available.

This is the maven portion of the release, there are two
"distributions" that are released as well

(a) dspace-release-x.x.x : just the dspace "assembly" project that
brings together all jars/wars to build ones distro

(b) dspace-src-release-x.x.x : the above assembly + all maven projects
in trunk in source form, requires building all jars and wars needed
for DSpace.

If course, (a) requires more bandwidth to download officially released
binary jars of dspace and (b) packages local versions of those
jars/wars that I would describe as "unofficial local binary variants".

At this time there are two approachs to customize your DSpace build.

(1) use the source distro and change all the files you want and
rebuild the entire sourcetree

Pro: you can navigate to exactly the source that is being used and
override it directly.

Cons:

Maintenance and Tracking of customizations across DSpace versions
requires a developer with extensive knowledge of version control
systems, changes will often conflict with work ongoing in DSpace
releases.

Local institutional developers altering DSpace internals introduce a
conservative viewpoint into the community limiting the advancement of
the codebase because they actually prefer these customized parts of
DSpace to not change rather than see benefit of new development come
into the Community.

DSpace source release build process is too long for iterative development


(2) use an overlay (works with all webapp projects (xmlui, jspui, oai,
sword, lni, solr) and copy the source files you want to alter/override
into separate dspace/modules/xxx projects, building only those changes
you want.

Pros:

Only the code that you've changed need to be rebuilt

Build Process is shorter

Models how to extend DSpace via Addons, resulting in less
customization of DSpace internals and greater ease in upgrading a
DSpace instance (of course, this depends on the the local developer
not adopting the practice of overriding existing DSpace classes and
instead applying a process of implementing their own "Service Based"
approach to implement a solution.

Works well IDE's that use maven source artifacts to resolve the source
for a specific java class.
(m2eclipse and Intellij IDEA)

You can Check out separate modules and via the maven profiles in the
dspace/pom.xml you can build only the source components you want.

Cons:

Its not my opinion, but some in the community seem to think that it is
a hinderance if you either need to use an IDE or separately checkout
the code for the module you want to get source from (when doing the
bad practice of overriding classes directly, which we suggest trying
to avoid doing to ease maintenance of your customizations.

>
> So why do async releases ? There are a number of reasons, for example...
> 1. To fix a bug in module dspace-xxx we could just release that module.
> 2. Or make available new features without waiting for the annual
> release.
> 3. Or release entire new modules
> etc etc.
>
> So how would this work ? The important thing to note is that it is
> dependant on people using the binary release. If they wanted to pick up
> a newly released version of a module they would just need to change the
> version number of that module in the appropriate pom and rebuild their
> local version of DSpace.

Not explicitly, as i've said above, you can checkout or export the
source for a module into your build and have the dspace-release-x.x.x
build only that portion for your build.

> Even better, we could distribute the binary
> release with ranges of version numbers (Maven allows for <version>1.7.1,
> 1.7.2, etc) and then all they would have to do would be to rebuild and
> it would automatically pick up the latest version. It is worth noting
> that this is exactly what we already do for the language packs so this
> is not new.

I don't really recommend this, it works for language pack because they
are optional.
>
> The problem (as I see it) - this all falls down if people have the
> source code release. If people have the source code for a module in
> their local installation then that is what they should be deploying.
> Whilst it would be possible for them to change the dependencies in their
> poms to pick up newly released artifacts from the Maven central repo I
> don't think anyone would argue that it would be a good idea to have one
> version of the source code in your installation, but actually deploy a
> different one, too messy.

  I agree, but this wasn't a recommendation in the new build process.

>
> So, if you are a fan of the XMLUI and Maven overlays, a binary release
> might well be sufficient for you. You can of course still check out the
> code for any module that interests you from the DSpace SVN site.
>
> However, if you are a JSPUI user and/or want or need to see the source
> code in general, then you probably want a source code release. That way
> you don't have to familiarise yourself with the DSpace SVN site.

Not, this approach works with all webapps, not just XMLUI/aspects.
Overlays will be a powerful tool even in the new WebMVC and REST
projects.
>
> Could we continue to do both a source and binary release as we do at
> present ? Yes. Many of the modules that currently reside in trunk in SVN
> would be moved into the modules directory so that they could be released
> independently of one and other, and the assembly of the source code
> release would pick up the source code from there rather than from trunk.

Yes, a maven assembly can create something that looks a lot like
dspace-src-release-x.x.x

> The downside of continuing with a source code release is that it
> prevents us from unifying behind one approach and being able to make
> announcements relating to new releases (async or otherwise) that apply
> to everyone.

No, we can still have an officially sanction release, it would just
contain separately versioned submodules rather than all residing on
one version tree.  Maven's release plugin will even mediate assuring
that an aggregated release of all separately managed modules happens
and a build with complete and compatible release numbers can occur.

>
> Personally, I am still in favour of source code releases. I don't see
> DSpace as a framework on which people build their local customisations,
> I see it as a complete implementation which people take and do what they
> want with it.

I'd be curious about the statistics around this last topic, we
actually recommend dspace as a framework on which people build their
local customizations. Depending on the degree of complexity of those
changes, we recommend working within specific "levels" of
customization of DSpace.

(1) CSS Theming and branding
(2) XSLT/HTML alteration
(3) Customization and Creation of new XMLUI Aspects
(4) Creation of Custom DSpace "Services" to support new functionality.
(5) Alteration of core DSpace Code.

Each Leads to progressively greater complexity and maintenance of the
codebase and a need to merge local changes. We advocate starting and
trying to stay at the levels 1 - 4 and avoid doing (5).  When doing
(5), we recommend the the developer community be consulted to
determine if there is an opportunity for such changes to be
contributed to the next version of DSpace, thus reducing the
organizations maintenance burden.

>
> Phew! I'm knackered.

I'm just getting started ;-)

Best,
Mark

-- 
Mark R. Diggory
@mire - www.atmire.com
2888 Loker Avenue East - Suite 305 - Carlsbad - CA - 92010
Esperantolaan 4 - Heverlee 3001 - Belgium

------------------------------------------------------------------------------
AppSumo Presents a FREE Video for the SourceForge Community by Eric 
Ries, the creator of the Lean Startup Methodology on "Lean Startup 
Secrets Revealed." This video shows you how to validate your ideas, 
optimize your ideas and identify your business strategy.
http://p.sf.net/sfu/appsumosfdev2dev
_______________________________________________
Dspace-devel mailing list
Dspace-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dspace-devel

Reply via email to