[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| Re: [udig-devel] A need for branching uDig and Geotools,	and how to merge again | 
Hi Harald.
This is a big message and I am quite busy but I am going to try to  
find time to properly address this in the next week.
Just want you to know that I am taking the message seriously,
Jesse
On 3-Nov-08, at 9:07 PM, Wellmann, Harald wrote:
Sorry for cross-posting, but I think this issue has an impact on  
both communities. This post is going to be long, so let me start  
with a summary:
- For a couple of months, I've been experimenting with uDig to build  
a viewer for a proprietary car navigation database format on top of  
it. By now, I am positive that uDig (in itself and through its usage  
of Geotools) provides an excellent basis for our work, and it would  
be foolish not to use this basis.
- uDig binary distributions or SDKs do not work for us due to  
version clashes in third-party dependencies of our own bundles and  
of the monolithic net.refractions.udig.libs bundle which includes  
all required Geotools libraries and external dependencies.
- As a consequence, I had to build uDig from source and start  
modifying the sources.
- I've now got a quick-and-dirty demo running, but for a more  
permanent solution the Geotools libraries and all third-party  
dependencies need to be converted to OSGi bundles, and all uDig  
plugin manifests need to be revised accordingly. This requires  
modifying Geotools as well (at least the POMs, not the sources.)
- The batch builds for uDig and Geotools both do not work without  
modifications in our environment. (uDig does not build at all,  
Geotools has a couple of test failures.)
At this point, I'm stuck and I do not see how to get any further  
without creating branches both of uDig and Geotools or even cloning  
the repositories. There are a couple of options:
1) Nobody has similar problems and nobody sees the point of what I  
am trying to do. In that case, I could simply work on private  
clones, the communities would not see any of my modifications and I  
would be detached from any fixes and enhancements occurring on the  
trunks.
(No, I don't really mean that, or else I wouldn't be writing this  
message.)
2) Working branches will be created in the uDig and Geotools  
repositories for my team and myself to do the required  
modifications, merging changes from the trunk as often as possible.  
If and when our branches have stabilized and the communities have  
verified that the results are useful and correct, the working  
branches can be merged into the trunk and die.
(At first sight, this is the approach I would prefer, but I have  
second thoughts for technical reasons: Both repositories run on  
Subversion over HTTP, locking out anyone in a corporate IT  
environment with a web proxy blocking the non-standard HTTP requests  
used by svn. The only way we can use svn is over HTTPS. Moreover,  
the repository servers seem to have frequent downtimes.  
{udig,lists,gtsvn}.refractions.net have been off and on sporadically  
on Sunday and today, not for the first time.)
3) As a variant of 2), I could clone both repositories, have them  
hosted by an open source provider offering services usable though  
our proxy, maintain a trunk mirror branch and an OSGi branch in my  
clones, so that anyone could track what we are doing and pull in any  
of our modifications into the official trunks at their own discretion.
(Actually, I've started working with Mercurial and hgimportsvn to  
mirror the Geotools trunk and start hacking on a osgi branch. So  
far, this setup seems to work well, and maybe even better than on  
Subversion which does not support any incremental merges between  
branches on server versions < 1.5.)
So much for the problem and the possible scenarios.
What I don't want to do is tread on anyone's toes, and I do not  
expect anyone to solve my problems for me. Neither do I think I  
could write a better uDig or Geotools on my own. I just have to  
solve a problem which I believe to be of more than just private  
interest, and which could be regarded simply as an alternative  
distribution of (a subset of) udig and Geotools.
Some more detailed proposals for this task:
My feeling is that our plugins depend on not more than 25 % of uDig  
and maybe 5% of Geotools. (We do not need any of the DataStore  
formats supported by uDig and Geotools, and no editing features  
either.)
So the first step is to identify the minimal subset of uDig and  
Geotools required by our plugins. For Geotools, this will probably  
be just modules/library/* and not much else.
All snapshot dependencies have to be replaced by milestone or real  
releases. Currently, we are working on a trunk snapshot of uDig  
using a snapshot version of Geotools using a snapshot version of  
Geoapi, so we cannot control when Maven pulls in an updated snapshot  
which might break our build.
All third-party dependencies of this subset have to be osgified.  
Some of them can be taken from the SpringSource Enterprise Bundle  
repository, others can be wrapped automatically using the maven- 
bundle-plugin, and special cases need some manual treatment. All  
these osgified artifacts need to be deployed to a public Maven  
repository with different group or artifact IDs, and the Geotools  
POMs have to use the osgified dependencies instead of the original  
ones.
Then the Geotools libraries will be osgified as outlined in
http://docs.codehaus.org/display/GEOTDOC/03+GeoTools+and+Eclipse+or+OSGi 
, without breaking the META-INF/services mechanism and without  
losing the capability of being used as plain old JARs on the  
classpath.
Finally, net.refractions.udig.libs will be replaced by a collection  
of individual Geotools and third-party bundles. Other uDig plugins  
will drop the dependency on bundle n.r.u.libs and declare new  
dependencies on individual packages org.geotools.foo and any  
required third-party packages.
Once we're done with this conversion for our subset, the scope can  
be extended to the rest of uDig and Geotools.
That's it... Please let me hear your opinions, or maybe there is  
even a simple solution I have failed to see so far.
Regards,
Harald
*******************************************
innovative systems GmbH Navigation-Multimedia
Geschaeftsfuehrung: Edwin Summers - Kevin Brown - Regis Baudot
Sitz der Gesellschaft: Hamburg - Registergericht: Hamburg HRB 59980
*******************************************
Diese E-Mail enthaelt vertrauliche und/oder rechtlich geschuetzte  
Informationen. Wenn Sie nicht der richtige Adressat sind oder diese  
E-Mail irrtuemlich erhalten haben, informieren Sie bitte sofort den  
Absender und loeschen Sie diese Mail. Das unerlaubte Kopieren sowie  
die unbefugte Weitergabe dieser Mail ist nicht gestattet.
This e-mail may contain confidential and/or privileged information.  
If you are not the intended recipient (or have received this e-mail  
in error) please notify the sender immediately and delete this e- 
mail. Any unauthorized copying, disclosure or distribution of the  
contents in this e-mail is strictly forbidden.
*******************************************
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel