[ 
https://jira.duraspace.org/browse/DS-976?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=21409#action_21409
 ] 

Mark Diggory edited comment on DS-976 at 8/2/11 8:20 PM:
---------------------------------------------------------

One of the first comments, I would like to see a clear specification of what an 
Addon is, which we have been working on for some time.  If this is a design 
dialog, it should reflect the past activities goals and requirements as well.

Original Asynchronous Release Requirements.

1.) Addons are jar or war projects that contribute a library + dependencies and 
or a webapplication overlay to the maven build process
2.) Addons should avoid classpath overrides of existing DSpace core classes.
3.) Addons need to be added to the maven build process (so that transitive 
dependency analysis and replicable builds are possible).

This said, all of DSpace and any additional libraries are a modular set of 
maven projects, dspace-services represents the foundation of modularity for the 
next generation of DSpace and as such is a set of "conventions" on hwere to 
place default configuration and spring configuration files such that DSpace can 
find them int he jars/wars and enable the addon via the service manager.  Thus 
at this time, Maven +  the Service Manager represent the core tools we have to 
support our needs when creating addons for DSpace that only require the 
addition of the dependency.

Per our meeting yesterday, I made the following recommendations for clearly 
defining "levels" whereby a maven plugin might insert dependencies into the 
build poms. They were:

a.) restructure the "cli" library dependencies inserted into lib to be a 
separate modules project, see the following for an example, the goal is to make 
it the case that one addition to dspace/modules/pom.xml will support the 
addition of a dependency jar to all modules projects inheriting the maven pom

http://scm.dspace.org/svn/repo/dspace/branches/dspace-async-release/dspace/modules/

b.) Define rules for adding to modules, cli, xmlui, etc such that it can be 
clearly documented how to add addons to dspace in a clean and predictable 
manner.  Note for instance, we probibly do not want to have dependencies we add 
to modules/pom.xml showing up in the solr webapp. So it is probibly wise to 
drop its  inheriting from the modules parent.

http://scm.dspace.org/svn/repo/dspace/trunk/dspace/modules/solr/pom.xml

Alternatively:

c.) We could add an empty "api" or "common" jar project that supplies 
dependencies for all "dspace" webapplications excluding "solr", additions to 
the dependencies of this project would be transitively associated and built 
into all other projects.

-----

The most dead simple mechanism to support asynchronous addition of addons after 
the release (those that might be considered "supported") would be to add it as 
a comment in the pom and give instructions on how to turn it on in the 
documentation by uncommenting the clause.

-----

This said, I highly recommend that if a simplified approach to achieving true 
asynchronous build/install process for addons is to be explored (ie, the 
insertion of addons into the deployment directory of DSpace independent of the 
main maven/ant build, that we should be clearly identifying the requirements 
and targets roadmap that will support a preexisting stable solution for 
providing such addons to DSpace. A few important requirements I can think of:

1.) Any mechanism to register additional addons into the deployment outside of 
the normal dspace build process should not destabilize current build practices 
and the use of maven poms to define addons and the ability to use this 
mechanism for replicable builds and for debugging purposes.
2.) Any mechanism that will alter the contents of the lib, WEB-INF lib should 
assure that dependencies from the original build are not removed or shaded on 
the classpath
3.) Any attempts to complete webapplication overlays or similar overlays on the 
configuration/etc directories should be "undoable" such that the addon can 
easily be removed from the deployment easily.

I suggest that we should probably limit the initial work of "supplying addons 
after deployment" to only refer to addon jars with no other dependencies 
(meaning that all dependencies already present in DSpace should/would be marked 
as "provided" and that the versions of those dependencies should always be 
aligned with those already in force within DSpace.  This would eliminate a 
great deal of transitive dependency processing requirements and limit changes 
to only be additions to the lib and/or WEB-INF/lib directories.

Likewise, I recommend not approaching webapplication overlaying and/or 
alteration of existing configuration files in this process. But, if overlaying 
were to be provided, it should be limited to only additions.

----

An approach to doing this might be possible using maven, assemblies and the 
assembly process to write a deployment to a target ${dspace.dir}/lib, 
${dspace.dir/webapps/xmlui/WEB-INF/lib and so on.  The current release process 
utilizes these (albiet we are working to shift to move the release assemblies 
back into the source tree).

http://scm.dspace.org/svn/repo/tools/maven/dspace-assembly-plugin/trunk/src/main/resources/assemblies/

      was (Author: mdiggory):
    One of the first comments, I would like to see a clear specification of 
what an Addon is, which we have been working on for some time.  If this is a 
design dialog, it should reflect the past activities goals and requirements as 
well.

Original Asynchronous Release Requirements.

1.) Addons are jar or war projects that contribute a library + dependencies and 
or a webapplication overlay to the maven build process
2.) Addons should avoid classpath overrides of existing DSpace core classes.
3.) Addons need to be added to the maven build process (so that transitive 
dependency analysis and replicable builds are possible).

This said, all of DSpace and any additional libraries are a modular set of 
maven projects, dspace-services represents the foundation of modularity for the 
next generation of DSpace and as such is a set of "conventions" on hwere to 
place default configuration and spring configuration files such that DSpace can 
find them int he jars/wars and enable the addon via the service manager.  Thus 
at this time, Maven +  the Service Manager represent the core tools we have to 
support our needs when creating addons for DSpace that only require the 
addition of the dependency.

Per our meeting yesterday, I made the following recommendations for clearly 
defining "levels" whereby a maven plugin might insert dependencies into the 
build poms. They were:

a.) restructure the "cli" library dependencies inserted into lib to be a 
separate modules project, see the following for an example, the goal is to make 
it the case that one addition to dspace/modules/pom.xml will support the 
addition of a dependency jar to all modules projects inheriting the maven pom

http://scm.dspace.org/svn/repo/dspace/branches/dspace-async-release/dspace/modules/

b.) The most dead simple mechanism to give a reference that a module could be 
added to dspace for build purposes would be to add it as a comment in the pom 
and give instructions on how to turn it on in the documentation by uncommenting 
the clause.

This said, I highly recommend that if a simplified approach to achieving true 
asynchronous build/install process for addons is to be explored (ie, the 
insertion of addons into the deployment directory of DSpace independent of the 
main maven/ant build, that we should be clearly identifying the requirements 
and targets roadmap that will support a preexisting stable solution for 
providing such addons to DSpace. A few important requirements I can think of:

1.) Any mechanism to register additional addons into the deployment outside of 
the normal dspace build process should not destabilize current build practices 
and the use of maven poms to define addons and the ability to use this 
mechanism for replicable builds and for debugging purposes.
2.) Any mechanism that will alter the contents of the lib, WEB-INF lib should 
assure that dependencies from the original build are not removed or shaded on 
the classpath
3.) Any attempts to complete webapplication overlays or similar overlays on the 
configuration/etc directories should be "undoable" such that the addon can 
easily be removed from the deployment easily.

I suggest that we should probably limit the initial work of "supplying addons 
after deployment" to only refer to addon jars with no other dependencies 
(meaning that all dependencies already present in DSpace should/would be marked 
as "provided" and that the versions of those dependencies should always be 
aligned with those already in force within DSpace.  This would eliminate a 
great deal of transitive dependency processing requirements and limit changes 
to only be additions to the lib and/or WEB-INF/lib directories.

Likewise, I recommend not approaching webapplication overlaying and/or 
alteration of existing configuration files in this process. But, if overlaying 
were to be provided, it should be limited to only additions.

----

An approach to doing this might be possible using maven, assemblies and the 
assembly process to write a deployment to a target ${dspace.dir}/lib, 
${dspace.dir/webapps/xmlui/WEB-INF/lib and so on.  The current release process 
utilizes these (albiet we are working to shift to move the release assemblies 
back into the source tree).

http://scm.dspace.org/svn/repo/tools/maven/dspace-assembly-plugin/trunk/src/main/resources/assemblies/
  
> Simple Asynchronous Add-on Facility for DSpace 
> -----------------------------------------------
>
>                 Key: DS-976
>                 URL: https://jira.duraspace.org/browse/DS-976
>             Project: DSpace
>          Issue Type: New Feature
>            Reporter: Richard Rodgers
>            Assignee: Richard Rodgers
>             Fix For: 1.8.0
>
>
> Placeholder for design ideas, proposals and discussions around supporting an 
> asynchronous release process for add-ons, which are functional extensions to 
> DSpace.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://jira.duraspace.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

------------------------------------------------------------------------------
BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA
The must-attend event for mobile developers. Connect with experts. 
Get tools for creating Super Apps. See the latest technologies.
Sessions, hands-on labs, demos & much more. Register early & save!
http://p.sf.net/sfu/rim-blackberry-1
_______________________________________________
Dspace-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/dspace-devel

Reply via email to