Tuesday, 11 November 2008

FDO Toolbox: Rebooted

Today I took off and nuked the site from orbit. After the dust settled, I landed a drop of the currently re-written FDO Toolbox into the now quite barren and empty trunk.

Here's a summary of what has changed.
  • The application now revolves around SharpDevelop Core. The decision to rewrite FDO Toolbox around SharpDevelop Core was an important (and quite easy) decision to make. Not only is SharpDevelop Core an extensibility framework, it also provides other helpful utilities like logging, file picking, unified resource access and other goodies. The application also uses the Text Editor component of SharpDevelop for editing of any text files (eg. XML feature schemas)
  • The application now uses FDO 3.4.0 (build G025), it will no longer compatible with FDO 3.3.x as it is using APIs new to 3.4.
  • Most of the UI components have been rewritten to be more cleaner and easier to maintain, with special mention to the Data Preview control.
  • The application is more friendly to localization as most hard-coded strings have been moved to resource files. There are still some strings floating around that will need to be moved.
  • The ETL API has been overhauled, the revised ETL API is based on Rhino ETL with modifications to support and handle geometries/features. The existing task infrastructure (UI and classes) is being rewritten to use this API.
There are still quite a few features from the previous version that have not made it into this version as I am still in the process of porting them over. You can now checkout or svn update from the trunk to see the current work in progress. For archival purposes, the 0.6.0 code-base now resides in a "legacy" branch

Here's some screenshots to tickle your fancy

The user interface (now with a toolbar!):

Add-In management using the SharpDevelop Add-In Manager

The new Data Preview control

Some small improvements to the Generic connect/create data store controls.

Wednesday, 5 November 2008

Another FDO Toolbox update

Here's the current state of affairs on the FDO Toolbox front.

1. FDO Toolbox development is back in motion

Life has been less hectic than it was a few months ago, and as a result, you will be seeing more regular updates to FDO Toolbox.

2. FDO Toolbox is currently being re-written

This one will need a bit of explanation.

One of my original goals for FDO Toolbox has always been extensibility. This extensibility existed in the form of extension modules (case in point: The MapGuide extension module), but there wasn't really much thought put into the original design from an extensibility standpoint (I will admit that it was pretty much haphazardly put together).

Also most of the UI components of FDO Toolbox were developed in a similar ad-hoc fashion and as a result most of the UI code is a messy affair (example: The Data Preview component)

So I have made the tough (but ultimately beneficial) decision to take off and nuke the site (most of the code-base) from orbit. Here's a summary of the planned changes I intend to make:
  • SharpDevelop Core (ICSharpCode.Core) will be used as the extensibility framework for FDO Toolbox. This is a framework that has been proven to be both simple, powerful and versatile in my evaluation of the framework. Also it's one less component to worry about from a maintenance standpoint. I'm not a fan of reinventing the wheel. If a library/component exists that does what I require and has a proven track record, I will be using it. This is one such case.
  • On the UI front, most if not all of the components will be rewritten in a Model-View-Presenter fashion. This will make maintenance and testability much easier.
  • The FDO Toolbox Core library and command-line utilities will mostly survive intact, with refactorings to adapt to the new code base.
  • The ETL API will be overhauled and replaced with the proposed replacement API.

  • /branches/0.6 will be where the code base in its current form will reside. /trunk will be overhauled and replaced with the new code base.
As a result, v0.6.0 will be the last release of FDO Toolbox in its current form.

3. FDO Toolbox is almost certain to be moving to a new home.

A few weeks ago I submitted a RFC to make FDO Toolbox an official part of the FDO project. The gist of the RFC is that the FDO Toolbox codebase will move to OSGeo, while the existing Google Code repository will be the home for the development of FDO Toolbox extensions.

It is currently going through the voting phase, which looks to have unanimous approval. So expect an announcement soon from OSGeo or myself.

EDIT: Mono.AddIns is starting to look more attractive as it is based on SharpDevelop core and has gone through more refinements.

EDIT #2: After playing around with Mono.Addins, it doesn't look as attractive anymore (mainly because it requires a whole lot of Mono-specific libraries to get the whole thing working!)