Ate replied to me last week but it looks like it only went to rave-dev@ -- 
forwarding to dev@shindig too...

>-----Original Message-----
>From: Ate Douma [mailto:a...@douma.nu]
>Sent: Friday, February 03, 2012 3:57 PM
>To: rave-...@incubator.apache.org
>Subject: Re: [PROPOSAL] Maven project enhancements to improve
>embedding and extending shindig-server (for Apache Rave)
>
>On 02/03/2012 05:56 PM, Ciancetta, Jesse E. wrote:
>> Hi Ate,
>>
>> I've spent some time today trying to replicate the changes in your patch in
>my own local repository and so far haven't had much luck.
>Ugh, I'm sorry for the trouble I caused.
>I really thought I had the patch fixed the second time around, but of course I
>should have tried it out locally on a clean checkout first, mea culpa.
>
>> I'm wondering if instead of submitting a patch which tries to show the end
>result, if maybe you wouldn't mind specifying the SVN move commands one
>would need to execute to shuffle things around and then also attaching a
>patch just showing the files that are truly new/modified (probably just
>pom.xml files I'm guessing).  I've also got a few questions/comments about
>the structure you proposed (sorry if some of this is obvious -- I haven't ever
>really tried to restructure anything in SVN and am not all that familiar with
>Maven)...  I'm going to copy/paste your proposal below and add my
>questions/comments inline:
>>
>>> In short, my proposal is the following (and I have a patch ready for 
>>> review):
>>>
>>> a) Move java/server/src/main/java/* (sample container code)
>>>     to new jar module java/sample-container
>>
>> So I think this would be:
>>
>> svn move --parents java/server/src/main/java java/sample-
>container/src/main/java
>>
>>> b) Move java/server/src/main/webapps/*
>>>     to new (shallow) war module java/server-resources
>>
>> And:
>>
>> svn move --parents java/server/src/main/webapp java/server-
>resources/src/main/webapp
>>
>Yes, that indeed will make it much easier. Providing diff patches for svn tree
>moves simply doesn't work :(
>
>I've already created a new patch, to be applied *first* and thereafter you only
>need to execute almost the same commands as you give above:
>
>   $ svn move --parents java/server/src/main/java
>java/sample-container/src/main/java
>   $ svn move --parents java/server/src/main java/server-resources/src/main
>
>The difference being the last commands moves the entire remaining
>server/src/main folder (not just the webapp folder underneath).
>
>I'll upload the new patch for review shortly, with the comment to execute
>these
>commands *afterwards* to end up with the desired result.
>
>>> c) Move resources currently merged into server module from ./../content
>and
>>>     ../../config also into new (shallow) war module java/server-resources
>>
>> I don't think we want to move these resources under a java/ path -- I think
>these resources are also shared by shindig-php.
>Definitely. My wording wasn't clear enough: I didn't mean to move the
>sources,
>but the merging of the sources, e.g. move it from server/pom.xml to
>server-resources/pom.xml
>This change is taken care of in the patch.
>
>>
>>> d) Add new pom module java/server-dependencies which (only) defines
>>>     the runtime dependencies needed for the shindig-server module
>>>     Note: this should also add new dependency on shindig-sample-container
>>
>> I don't think I saw the new pom.xml for this in your last patch, could you
>please include it?
>Right, that's were the second patch weirdly went wrong. Strangely enough I
>still
>have the modified source tree locally and when I recreated the patch anew it
>*does* have this new pom.xml in there. Nevermind, I'll upload a new patch
>which
>contains it, but without the tree moves.
>>
>>> e) The remainder of the shindig-server module then only needs to have
>>>     dependencies on the shindig-server-resources (war overlay) and
>>>     shindig-server-dependencies (pom), as well as some needed test only
>>>     dependencies for the remaining "endtoend" unit-tests
>>
>> And just to be sure I fully understand the problem we're solving here -- 
>> right
>now people can't create their own version of what the current shindig-server
>module produces on their own because some of the resources required to do
>that are only part of the shindig-server module, right?  And right now that
>module is only built/provided as a WAR?
>
>That is correct.
>
>The problem is that with only a war artifact, containing everything,
>customizing
>and extending shindig-server is difficult if not downright brittle.
>Maven simply doesn't understand war files from a transitive dependency POV
>and
>thus you easily end up with duplicate jars (different versions of the same
>artifact) in the end result (like we already did with rave-shindig).
>
>Furthermore, because shindig-server also contains (sample) java code, there
>is
>no way you can easily *not* use those without having to write maven-war-
>plugin
>filters to exclude the embedded class files, nor could you write and compile
>extensions on those java classes as they are not available from any classpath
>at
>build time.
>
>By modularizing shindig-server into server-resources, server-dependencies
>and
>the java code into sample-container, (re)assembling shindig-server becomes
>trivial, and thereby equally trivial for custom projects like rave-shindig.
>
>Thanks for looking into the patch Jesse, the next fix should be smooth :)
>
>Regards, Ate
>
>>
>> Thanks,
>>
>> --Jesse
>>
>>> -----Original Message-----
>>> From: Ate Douma [mailto:a...@douma.nu]
>>> Sent: Friday, January 27, 2012 9:56 AM
>>> To: dev@shindig.apache.org
>>> Cc: rave-...@incubator.apache.org
>>> Subject: Re: [PROPOSAL] Maven project enhancements to improve
>>> embedding and extending shindig-server (for Apache Rave)
>>>
>>> On 01/27/2012 02:21 PM, Ciancetta, Jesse E. wrote:
>>>> Thanks Ate for taking the time to submit such a thorough proposal.
>>>>
>>>> This all sounds good to me -- please submit the patch for review.
>>>
>>> Cool, will do.
>>>
>>> Ate
>>>
>>>>
>>>> --Jesse
>>>>
>>>>> -----Original Message-----
>>>>> From: Ate Douma [mailto:a...@douma.nu]
>>>>> Sent: Tuesday, January 24, 2012 9:29 PM
>>>>> To: dev@shindig.apache.org
>>>>> Cc: rave-...@incubator.apache.org
>>>>> Subject: [PROPOSAL] Maven project enhancements to improve
>>> embedding
>>>>> and extending shindig-server (for Apache Rave)
>>>>>
>>>>> Hi Shindig team,
>>>>>
>>>>> At Apache Rave (Incubating) we're embedding and extending the
>shindig-
>>>>> server
>>>>> module and build our own rave-shindig war using a war overlay
>>> configuration.
>>>>>
>>>>> While that kind of works for now, using the current Shindig server war
>>> module
>>>>> as
>>>>> an overlay isn't really optimal, as Maven cannot do (transitive)
>dependency
>>>>> resolution analysis on war modules.
>>>>>
>>>>> Effectively this means we'll either have to exclude all embedded jars
>within
>>>>> the
>>>>> shindig-server war and then manually (re)define the same
>dependencies
>>>>> ourselves
>>>>> again, or we have to (at least) manually check and trace the shindig-
>server
>>>>> internal dependencies and do our own sanity check on them. The latter
>>> really
>>>>> is
>>>>> dangerous as it easily can lead to 'duplicate jars' hell...
>>>>>
>>>>> For the record, at Apache Rave we currently use the latter solution, but
>in
>>> the
>>>>> end that is not maintainable and too easy to break.
>>>>>
>>>>> In addition to this, the shindig-server also comes with its own sample
>>>>> container
>>>>> code, which means those classes end up directly in the WEB-INF/classes
>>>>> folder of
>>>>> the war. These classes are thereby also completely 'hidden' from our
>own
>>>>> rave-shindig classpath and thus not 'usable' from a developers
>perspective
>>>>> (other than forking/cloning them ourselves, and/or excluding them
>from
>>> the
>>>>> war
>>>>> overlay through configuration).
>>>>>
>>>>> It would be much easier for downstream projects as Apache Rave, or
>even
>>>>> further
>>>>> down the chain, if the shindig-server module would be a bit more
>>>>> modularized by
>>>>> separating the 'base' war resources, the sample container code and the
>>> server
>>>>> war dependencies into separate modules, which then are (re)bundled
>by
>>> the
>>>>> final
>>>>> shindig-server war module.
>>>>>
>>>>> This would have zero impact on current shindig-server usages
>(effectively
>>> the
>>>>> produced war ends up being the same), but helps downstream projects
>>>>> enormously
>>>>> with a better and more transparent manageable custom Maven shindig
>>>>> configuration.
>>>>>
>>>>> At Apache Rave we already provide a similar modularization of our rave-
>>> portal
>>>>> war module [1] for the same purpose: to make it easier for downstream
>>>>> customizations.
>>>>>
>>>>> In short, my proposal is the following (and I have a patch ready for
>review):
>>>>>
>>>>> a) Move java/server/src/main/java/* (sample container code)
>>>>>      to new jar module java/sample-container
>>>>> b) Move java/server/src/main/webapps/*
>>>>>      to new (shallow) war module java/server-resources
>>>>> c) Move resources currently merged into server module from
>./../content
>>> and
>>>>>      ../../config also into new (shallow) war module java/server-resources
>>>>> d) Add new pom module java/server-dependencies which (only)
>defines
>>>>>      the runtime dependencies needed for the shindig-server module
>>>>>      Note: this should also add new dependency on shindig-sample-
>container
>>>>> e) The remainder of the shindig-server module then only needs to have
>>>>>      dependencies on the shindig-server-resources (war overlay) and
>>>>>      shindig-server-dependencies (pom), as well as some needed test
>only
>>>>>      dependencies for the remaining "endtoend" unit-tests
>>>>>
>>>>> The end result of the above will again be a shindig-server war equal to
>the
>>>>> current shindig-server war but now downstream users can more easily
>>> embed
>>>>> and
>>>>> extend it, with proper maven (transitive) dependency resolution
>support.
>>>>>
>>>>> The above changes really are quite trivial and will have zero impact for
>>>>> development and current end usages.
>>>>>
>>>>> If there are no objections for the above proposal, I'll create a JIRA 
>>>>> ticket
>>> and
>>>>> provide a patch for it for review.
>>>>>
>>>>> And as Shindig 3.0.0 is close to getting wrapped up, it would be great if
>this
>>>>> then can be reviewed, and if accepted, be applied before the release
>tag.
>>>>>
>>>>> Thanks, Ate
>>>>> Apache Rave PMC
>>>>>
>>>>> p.s. A different but more critical topic, I just noticed that the NOTICE 
>>>>> and
>>>>> LICENSE files embedded in the shindig-server war (and probably other
>>>>> modules
>>>>> too) are not proper, e.g. completely missing the required 3rd party
>notices
>>>>> and
>>>>> licenses! I do see better versions of these in the root and the java
>folder,
>>> but
>>>>> these don't end up in the build and released artifacts as they should...
>>>>> I'll follow up on this later (probably tomorrow) in a separate email and
>see
>>> if
>>>>> I can provide a fix/patch for that as well.
>>>>>
>>>>>
>>>>> [1] https://svn.apache.org/repos/asf/incubator/rave/trunk/rave-
>>>>> portal/pom.xml
>>>>>       [...]/asf/incubator/rave/trunk/rave-portal-resources/pom.xml
>>>>>       [...]/asf/incubator/rave/trunk/rave-portal-dependencies/pom.xml
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>

Reply via email to