[Geoserver-devel] New GeoServer UI frameworks requirements: feedback appreciated

Andrea Aime wrote:

Luca Morandini ha scritto:

So, my idea would be to first build the API, then (or concurrently) the
admin UI.

This idea of making the UI a separate web application worries me.
So far we've tried to be the champions of the "easy to use", at least
for the first step, the getting started ones.

Point taken.

Of course, this may cause a different pace of development of services
code and UI code, but there would always be the option of using Ant (or
even wget) to use a newly-added service API in a CLI fashion.

Which is exactly what I wish to avoid, a situation where you have to
use non friendly tools because developers did not have time to develop
a usable UI (which is already happening btw with sld and freemarker templates, I find both of them very painful to work with and a major
shortcoming of the current GeoServer value proposition).

Well, in an ideal world, the same developer should:
1) Develop the service.
2) Build the UI for said service.
3) Write the documentation.

Since this rarely happen, it might be wise to allocate different people to do these three things.

An SLD UI with rapid prototyping is my top wish for GeoServer, but since it is hard to code I'm not expecting it soon... anyway, I'd rather have SLD without an UI than not having it at all.

Regards,

--------------------
    Luca Morandini
www.lucamorandini.it
--------------------

Luca Morandini ha scritto:

Well, in an ideal world, the same developer should:
1) Develop the service.
2) Build the UI for said service.
3) Write the documentation.

Since this rarely happen, it might be wise to allocate different people to do these three things.

We're trying, but the setup you're proposing works in commercial
settings... do you see many UI only people in server side open source
projects? :wink:
That said, we have now Mike that is handling the documentation, so
thanks to TOPP being able to raise funds, we're getting a little closer
to that vision.

Cheers
Andrea

Andrea Aime wrote:

The only web frameworks that can do both UI and REST calls are the
action based ones, in a component based one (Wicket, JSF) web services
have nothing to do with UI building, whilst in an action based one
you're throwing out a document in response to a call so they can
be coaxed to do REST as well.

Hmm... I don't see it as a component vs action issue, but as a
consequence of the scope of a framework: GWT, Wicket and JSF are for
building web-based UIs and handling the flow of pages (Wicket and GWT
are for *hiding* the building of web-based UIs, actually), while Struts
and others have the ambition of covering the whole of a web application.

The only framework I know about that can do both UI and REST
is, as you stated, Struts2, with this plugin: http://struts.apache.org/2.x/docs/rest-plugin.html.

So if this is a strong requirement, then the UI evaluation is
pretty much done, we're left with just one candidate (or maybe
two? can Cocoon do both UI and REST api?

Well, in my eyes, a framework doesn't *do* REST: since REST is just a style of arranging the URI space and using the whole set of HTTP methods as they were intended originally, any web framework should do.

Having said that, framework like Struts2 (via the plugin you mentioned) and RESTlet let you directly connect URI to Java classes methods, while Cocoon has an intermediate layer (the sitemap) for routing URIs: you may see this either as added complexity or increased flexibility :slight_smile:

can it emit json?).

Yes, Cocoon can emit JSON from Flowscript (Java objects of certain type
are serialized as JSON and sent do the client), there is even a JSONSerializer, but it never made past the prototype stage.

Another thing that I was thinking about is the point that Arne
raised during yesterday's meeting about the current UI looking
bad and being clearly designed by a Java programmer as opposed
by an interaction designer.

A Java programmer can build good UIs too, I suspect.
Look, I've never heard of a "saw craftsman" as unable to make an elegant wood table: let's separate the tool from the product.

An UI that does both REST and web pages has to behave like a
service framework anyways, so I guess this leaves no room at
all for an interaction designed to impose a different UI
workflow?

I presume you could still have your UI built in Wicket and your REST API in, say, Struts 2, but these would leave Struts underutilized.

This seems to me like something requiring the REST
API to be separated from the UI?

Actually, if you are serious about REST, no state should be on the server, hence calling for a pure AJAX client.

Of course, a pure AJAX client has problems of its own (I still don't see Javascript as a solid foundation, but I may be just scarred from the use of Javascript in those dark pre-AJAX days).

Regards,

--------------------
    Luca Morandini
www.lucamorandini.it
--------------------

Luca Morandini ha scritto:
...

Having said that, framework like Struts2 (via the plugin you mentioned) and RESTlet let you directly connect URI to Java classes methods, while Cocoon has an intermediate layer (the sitemap) for routing URIs: you may see this either as added complexity or increased flexibility :slight_smile:

can it emit json?).

Yes, Cocoon can emit JSON from Flowscript (Java objects of certain type
are serialized as JSON and sent do the client), there is even a JSONSerializer, but it never made past the prototype stage.

Another thing that I was thinking about is the point that Arne
raised during yesterday's meeting about the current UI looking
bad and being clearly designed by a Java programmer as opposed
by an interaction designer.

A Java programmer can build good UIs too, I suspect.
Look, I've never heard of a "saw craftsman" as unable to make an elegant wood table: let's separate the tool from the product.

We're thinking of different things here. As Dijstra wisely stated
in "The humble programmer": "The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague."

While this has nothing to do with UI, the "limited size of the skull"
means, imho, that either one is a top notch java developer, or a very
good interaction/UI designer. The skill set is very different, someone
very proficient in both is kind of an exception, not the norm.

Actually, if you are serious about REST, no state should be on the server, hence calling for a pure AJAX client.

If you look at http://www.spatialreference.org/, you'll
find a web app that's made along the rest principles, has no server
side state management, yet it's not using AJAX.

Cheers
Andrea

Andrea Aime wrote:

Luca Morandini ha scritto:

A Java programmer can build good UIs too, I suspect.
Look, I've never heard of a "saw craftsman" as unable to make an elegant wood table: let's separate the tool from the product.

We're thinking of different things here. As Dijstra wisely stated
in "The humble programmer": "The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague."

While this has nothing to do with UI, the "limited size of the skull"
means, imho, that either one is a top notch java developer, or a very
good interaction/UI designer. The skill set is very different, someone
very proficient in both is kind of an exception, not the norm.

We shall agree to disagree on this: I like the concept of a "generalizing specialist" [1] :wink:

Actually, if you are serious about REST, no state should be on the server, hence calling for a pure AJAX client.

If you look at http://www.spatialreference.org/, you'll
find a web app that's made along the rest principles, has no server
side state management, yet it's not using AJAX.

Point taken, let me restate it:
<<Actually, if you are serious about REST, no state should be on the
server, hence calling for a pure AJAX client *unless your state is so simple that can be stored in hidden HTML forms*.>>.

Actually, I did just this back in 2001... no RESTful services at the time though.

Regards,

[1] http://www.agilemodeling.com/essays/generalizingSpecialists.htm

--------------------
    Luca Morandini
www.lucamorandini.it
--------------------

A few general thoughts:
* The only configuration framework I've ever dealt with that wasn't a one-off
I wrote was the one in doxygen (which is, of course, a one-off by the doxygen
guys). One thing I like about it that we could possibly copy for our
configuration tool is that it has two views, an autogenerated 'advanced view'
that exposes all options and a 'wizard view' which is hand-tweaked to be
easier to deal with, but may not show all options. Obviously this would ease
the burden of adding new configuration options, my guess is that it would
require basically no extra work for interaction designers.

* If we expect java developers contributing plugins to also be competent web
designers then we are limiting the set of potential contributors. This seems
like more than just a difference in philosophies, and I'd tend to agree with
Andrea that we should try and keep the number of technologies + tools
required to contribute as small as possible.

* It seems like having the configuration tool as a separate servlet wouldn't
be very burdensome to me? Couldn't it be packaged in the .war with geoserver
regardless of whether or not it actually shares code? I think commenting
some stuff out in web.xml to kill the config UI would probably be acceptable
to those CLI junkies that want to get rid of it :slight_smile:

* If we supported autogenerating a configuration tool we would also probably
have most of the machinery needed to create a CLI configuration validator,
which would probably be a useful feature for "those CLI junkies."

-David

On Wednesday 26 March 2008 10:12:32 Luca Morandini wrote:

Andrea Aime wrote:
> Luca Morandini ha scritto:
>> A Java programmer can build good UIs too, I suspect.
>> Look, I've never heard of a "saw craftsman" as unable to make an elegant
>> wood table: let's separate the tool from the product.
>
> We're thinking of different things here. As Dijstra wisely stated
> in "The humble programmer": "The competent programmer is fully aware of
> the strictly limited size of his own skull; therefore he approaches the
> programming task in full humility, and among other things he avoids
> clever tricks like the plague."
>
> While this has nothing to do with UI, the "limited size of the skull"
> means, imho, that either one is a top notch java developer, or a very
> good interaction/UI designer. The skill set is very different, someone
> very proficient in both is kind of an exception, not the norm.

We shall agree to disagree on this: I like the concept of a
"generalizing specialist" [1] :wink:

>> Actually, if you are serious about REST, no state should be on the
>> server, hence calling for a pure AJAX client.
>
> If you look at http://www.spatialreference.org/, you'll
> find a web app that's made along the rest principles, has no server
> side state management, yet it's not using AJAX.

Point taken, let me restate it:
<<Actually, if you are serious about REST, no state should be on the
server, hence calling for a pure AJAX client *unless your state is so
simple that can be stored in hidden HTML forms*.>>.

Actually, I did just this back in 2001... no RESTful services at the
time though.

Regards,

[1] http://www.agilemodeling.com/essays/generalizingSpecialists.htm

--------------------
    Luca Morandini
www.lucamorandini.it
--------------------

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplac
e _______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

!DSPAM:4040,47ea59eb118902143011171!

Ben Caradoc-Davies wrote:

One of the decisions in the choice of a UI framework is whether it can
readily support the manipulation of complex data stores. In my (albeit
limited) experience, I have found that complex feature mappings can be
deeply nested, and require detailed type binding. This suggests that a
UI to manipulate them will have to be rather sophisticated, perhaps
ruling out web-based front ends.
  

You will find that GWT for example supports a pretty good Tree widget. Give the new breed of web based
user interfaces a chance :slight_smile:

tool for converting database queries into simple XML, but until the
generated XML can be mapped to conform to community schemas,
interoperability will be limited. Perhaps this is a niche goal at the
moment, but I suspect that the future benefits will substantial.
  

All the best,
Jody

Andrea Aime wrote:

Another thing that I was thinking about is the point that Arne raised during yesterday's meeting about the current UI looking bad and being clearly designed by a Java programmer as opposed by an interaction designer.
  

I found that Wicket was the "last man standing" in the tradeoff between user interface designer and Java developer; it was about minimal as a framework could get while still leaving a web page around for traditional web page design to hack away at. The GWT approach that uses layouts, combined with CSS definitions on the web side was a little far out for me (putting everything in the hands of Java developers again).

Nothing prevents the user interface design from designing a specification for the Java developers to follow; Wicket just left this specific door open (an html page to edit).

An UI that does both REST and web pages has to behave like a service framework anyways, so I guess this leaves no room all for an interaction designed to impose a different UI workflow? This seems to me like something requiring the REST API to be separated from the UI?
  

What do people think about having the a REST api at the same level as the configuration user interface; ie something that is optional and not required for GeoServer to run? For me they are slightly different flavours of the same idea...

Jody

Just to chime in on this specific point:

My personal opinion is to have geoserver be "headless" in the sense that
a configuration/UI program is required but completely seperate from the
"server" portion of geoserver. They could be distributed together (err,
a "web UI" could be distributed along with geoserver) but I'm personally
really interested in developing a non web ui to geoserver...specifically
a command-line based UI that would be much more scriptable and
automatable.

I'd say chuck the web toolkit discussion over to the "web-ui" module and
just go with straight restlet for the REST framework that really runs
geoserver.

Of course, I expect that I'm pretty far outside the consensus on this
one!

--saul

What do people think about having the a REST api at the same level as
the configuration user interface; ie something that is optional and not
required for GeoServer to run? For me they are slightly different
flavours of the same idea...

Jody

I agree.

We can much more easily analyse the machine interface to make sure it
is self-consistent and that information is not redundantly managed,
than we can a UI. Getting the API working well should inform the UI
factoring.

In general, one wants info artefacts for the UI to come from
registries (namespace, server addresses, users, roles etc) - the
question is whether the API uses a registry model, or the client (UI)
is responsible for integrating content from registries.

Rob A

On Fri, Mar 28, 2008 at 7:52 AM, Saul Farber <sjf8@anonymised.com> wrote:

Just to chime in on this specific point:

My personal opinion is to have geoserver be "headless" in the sense that
a configuration/UI program is required but completely seperate from the
"server" portion of geoserver. They could be distributed together (err,
a "web UI" could be distributed along with geoserver) but I'm personally
really interested in developing a non web ui to geoserver...specifically
a command-line based UI that would be much more scriptable and
automatable.

I'd say chuck the web toolkit discussion over to the "web-ui" module and
just go with straight restlet for the REST framework that really runs
geoserver.

Of course, I expect that I'm pretty far outside the consensus on this
one!

--saul

> What do people think about having the a REST api at the same level as
> the configuration user interface; ie something that is optional and not
> required for GeoServer to run? For me they are slightly different
> flavours of the same idea...
>
> Jody
>

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel