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.
*******************************************
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Geotools-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel