Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[udig-devel] My work plan [was: Need help running trunk]

Hey Jody, all,

Yes, I'm running trunk these days. Actually, I'm working from revision
26360 of trunk so as to have a know 'stablish' base for my work.

The issue I was running into earlier was that the "run configuration"
needed to add a bunch of dependent plugins. So from the "run dialog" I
used the automatic plugin dependency calculation mechanism and that
resolved the missing elements. I'm still not sure why this is needed and
why the .product or other files don't do this automatically. Any ideas?


Ongoing work:
------------

I've launched into a systematic analysis of uDig which is proceeding
slowly along the following fronts.


0) Clean and document uDig:

As you know, uDig classes are poorly, unevenly, and even incorrectly
documented. I'm hoping to tackle this once I better understand the code
base. Notably:

      * Headers are often missing or different
      * Class documentation is often missing, cryptic, or a copy/paste
        of the interface docs without alteration (probably so as to
        confuse the spies)
      * Package documentation is entirely missing
      * Licenses are missing

Also, the code base appears, at first glance, to have lots of cruft
floating around such as random empty classes that are not referenced
anywhere: e.g. the SWTGraphics.java file in the top level
net.refractions.udig.ui directory which simply does not belong there. 

I suspect this is because developers want to work against a versioning
system to help themselves follow their own changes and with svn they are
forced to check things into the master repository directly. I'm working
on a bzr tree locally to avoid that situation. While I don't yet
understand bzr, so far it has been a joy, both being very easy---just
like svn and meeting all my needs. If I am right that you all are adding
temporary files to svn so as to help yourselves understand your
incremental changes, then I would encourage you to take the time to
explore bzr. Note, I haven't done any kind of formal analysis of all the
possible alternatives, I've merely found something that's easy to use
and appears designed for my needs.

This cleanup is on hold pending a better understanding of the codebase
and a full plan for the next item.


1) Repackage uDig:

As stated on irc, I want to refactor uDig to make it easier to
understand, to make it more modular, and to make the features and
plugins match the architectural overview. Jesse is right to ask me to
make this a formal proposal and I'm going to get to that once I feel
more confident in my understanding of the code base.

I'm currently working on splitting out the UDIGApplication and friends
from net.refractions.udig.ui into net.refractions.udig.app.main with the
thought that we will eventually have several different apps presumably
along with several different products. 

Next, I'm hoping to tackle Richards menu building mechanism to compare
its complexity to that of a user building their own application from
scratch. This also involves understanding the half complete shift in
Eclipse from Actions to commands/bindings/handlers. I hope to document
both approaches (new app vs. menuBuilder) for myself as a base
eventually to developing some good user docs.

I then plan to come up with a better mix of features and branding
plugins to match the architectural layers (tiers) in the docs while
allowing users to assemble their uDig derivatives while still giving
refractions its due credit. So far I only understand how to rebrand the
lower layers, for example, making "base" more clearly "enhancedRCP" and
"lang" into "enhancedRCP_nls". 

I don't yet have any formal proposal but that will come.



2) Develop uDig into a ResourceManager beyond the Catalog

Honestly, I don't understand this work enough yet to say much
interesting about it but this is the end goal of this wave of work.
Notably, I don't understand the relationship of this work to the current
"catalog" system. 

The goal is to make uDig be a real "Information System"---that is a tool
for users to manage (create, alter, delete, move, transform) data.
Anyone working to process data or analyse it ends up having intermediate
products on the way and that requires them to be able to manage these
intermediates.

My working plan is to build a tiny uDig with *no* mapping capability
(i.e. only the lower architectural tier and no eye candy) but with the
ability to cp, rm, mv data sets around a file system and between a file
system and a database. I plan to explore what it will take to let users
change the data storage format (e.g. gmx -> shp, or shp ->
gmlSimpleProfile) which will obviously be necessary to move data from
shp -> PostGIS. Also, I'd like to support changing projection info such
as adding a .prj to a .shp cluster. 

I'm guessing part of this may be to develop an extension to the catalog
system or a a whole new 'resource manangement' system. Also I expect
I'll have to write a view like the IDE's "project explorer" view so we
can abstract shapefile clusters into a single element in the way that
the IDE abstrats java project folder hierarchies into a single element.
This will require learning the eclipse filesystem provider stuff.

This step, because it involves building a mini-application, requires me
to first understand the issues with part (1) so that's where I am today.


3) Onward.

There is a lot of activity being done these days. The Axios folks'
spatial ops are coming along nicely and I hope to get into those
trenches soon. The JGrass folk are working on landing a shell which I
imagine we might coopt for simple scriting. JGrass is also integrating
the GRASS workspace into the catalog which I'd like to understand and
assess how we could handle that in a 'resource manager.' Jan's rubber
sheeting and interpolation stuff also looks very cool. 

And long term, I hope to work on my connector to R and to push Martin as
he tackles his update to J2D renderer.




So that's my work plan for these next two months. Over this time, I
expect to be mostly absent from irc and quiet on the lists. This is both
practical since I'm on dialup out here and because I need to learn to
'use the code' more. So, I plan first to develop all this once through
locally on my machine to get to the point that I feel I understand uDig
well. Then I will come up with a plan and ask you all for formal commit
rights to the core svn and proceed to cleanup and refactor things
systematically there. 

In the meantime, you could help me by laying out the Refractions
experience around Catalog. Did you all consider making uDig a real
resource management system? If so, did you choose not to out of
practicality or out of some fundamental realisation about such a system?
Did the local vs. remote catalog split happen merely out of convenience?
Why did the burden of using IResource prove to be too heavy for uDig and
lead to IResolve? Is there a GML application profile for simple features
which we could support as uDig's default GML format? Does PostGIS
similarly have a simple feature profile equivalent to shapefiles? I have
a slew more of questions but they can wait.

Comments, advice, and insults are welcome as ever,

cheers,
--adrian




On Wed, 2007-08-15 at 21:30 -0700, Jody Garnett wrote:
> Hi Adrian I did not see this email thread closed off, are you able to 
> run trunk at the moment? I was also going to ask how you were doing 
> these days, I missed the last couple uDig meetings.
> 
> Jody
> 
> Adrian Custer wrote:
> > Hey all,
> >
> > I'm out if ideas to get trunk running. I'm clearly missing something
> > obvious---perhaps someone else can spot it.
> >
> > I'm working with a new checkout, in a new workspace against an Eclipse
> > that has run uDig fine. 
> >
> > 1) new udig checkout (rev. 26444)
> > 2) import plugins/features/fragments in a new eclipse workspace
> > 3) clean & build
> > 4) refresh libs plugin
> > 5) PDE-> update classpath (all)
> > 6) clean & build
> > 7) run net.refractions.udig udig.product 
> > ==> error on spashscreen
> >
> > 8) add -nosplash flag
> > 9) run
> > ==> ClassNotFoundException: 
> >       org.eclipse.core.runtime.adaptor.EclipseStarter
> >
> > What am I missing?
> >
> > --adrian
> >
> > _______________________________________________
> > User-friendly Desktop Internet GIS (uDig)
> > http://udig.refractions.net
> > http://lists.refractions.net/mailman/listinfo/udig-devel
> >   
> 
> _______________________________________________
> User-friendly Desktop Internet GIS (uDig)
> http://udig.refractions.net
> http://lists.refractions.net/mailman/listinfo/udig-devel



Back to the top