[osmosis-dev] Project Restructure

Brett Henderson brett at bretth.com
Tue Jul 6 00:00:59 BST 2010

Hi All,

The Osmosis restructure is now complete.  There are still some things I'd
like to do, but they're on the lower priority list.  Instead of a single
monolithic project, there are now 12 individual projects.  Each of these is
an individual eclipse project.  There are a few tasks remaining in core
which I haven't removed yet, but the vast majority of tasks have been moved
out into plugin projects that are bundled in the main distribution.

You can build the entire solution by running "ant" or "ant clean all" at the
top level however this will require test database schemas.  To perform a
build only without tests, run "ant publish" (I may update this to be "ant
build" at some point).  At the completion of the build, the "package"
project will contain a working osmosis installation, and will contain
distribution zips in the distrib directory.  All artefacts will also be
published to the local ivy repository at

If anybody has any plugins they wish to incorporate into the main Osmosis
distribution please let me know.  If they build successfully they can be
included.  Note that I can't promise to help maintain them (other than
obvious quick fixes) so if they fall behind they may get removed again.

I haven't created a 0.36 detailed usage page on the wiki yet but will do so
before releasing.  There are a few other random goodies in the latest
development release that I'd like to release in the near future.

If anybody has any questions please let me know.


On Wed, Jun 16, 2010 at 10:15 AM, Brett Henderson <brett at bretth.com> wrote:

> Hi All,
> I just created a "breakup" branch.  I had several hours in an airport
> without much to do so started experimenting with a new way of packaging
> osmosis.
> One problem I have with the current "single project" approach is that every
> time a new feature is added, a whole bunch of new libraries need to be added
> and the distribution is starting to get fairly large.  It's also reached the
> limit of what I can maintain myself given the limited time I have to spend
> on it.  I'm hesitant to allow too many new tasks to be added because it gets
> hard to ensure that they're maintained properly and they're hard to remove
> once they're in there.
> So far the branch has the following projects:
> - core - Most of the existing project.
> - apidb - All of the apidb tasks (with postgresql dependencies), depends on
> core.
> - pgsnapshot - All of the pgsql tasks (with postgresql and postgis
> dependencies), depends on core.
> - package - Depends on the above three projects and adds the launch scripts
> and config files.
> The apidb and pgsnapshot tasks are no longer loaded directly via the
> TaskRegistrar class, but instead defined via a osmosis-plugins.conf file in
> the package project which specifies their plugin class names.  The idea is
> that all tasks will be factored out of the core and into plugins which are
> bundled into the main distribution so that the end user doesn't see any
> difference.
> It doesn't compile yet due to some class dependency issues in the
> replication code, but I'll sort that out next.  I aim to move the vast
> majority of existing tasks out into plugin projects.  The plugins will
> loosely be aligned to the task groups defined on the detailed usage page on
> the wiki.
> http://wiki.openstreetmap.org/wiki/Osmosis/Detailed_Usage
> I'm hoping this will allow people to develop new plugins and incorporate
> them into the main build and distribution without too much effort, and lower
> the current barrier to entry by eliminating the need to pass my code review
> to make it into core.  By keeping them out of the core, I can focus on core
> and the tasks I maintain and rely on others to keep their tasks up to date.
> If they fall behind and aren't maintained they can be removed from the build
> and distribution by changing a couple of config files instead of having to
> delete them entirely.  The existing plugin methods (ie. raw plugins
> specified with -p on command line, and JPF plugins) will both continue to
> work so external plugins can still be developed if desired.
> Once I get it working I'll create a simple No-Op plugin task that provides
> an example of how the plugin projects are created.
> So far it looks like it should work fairly well without adding too much
> complexity.  The ant builds for each project are becoming much smaller and
> more well defined which should be a good thing.
> Let me know if you see any major issues with this approach.
> Cheers,
> Brett
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/osmosis-dev/attachments/20100706/8293cbfd/attachment.html>

More information about the osmosis-dev mailing list