[Geoserver-devel] A deeper process integration

Hi all,

A while back there was a discussion on the mailing list initiated by Chris discussing the possibility of having the notion of a layer backed by a process. Here is the original thread.

http://www.mail-archive.com/geoserver-devel@lists.sourceforge.net/msg19596.html

With that in mind I have started to throw together a design of what this might look like and am hoping to gather general feedback. Victor and I have thrown together this wiki page.

http://geoserver.org/display/GEOS/Process+Integration

And feedback is welcome. Just to clarify this is a completely green field at this point. We have a client who is potentially interested in funding this effort which is why I needed to put together this initial design. But before we pitch them on it we want to make sure we have a good agreement community wise on the approach.

Thanks! Looking forward to feedback.

-Justin


Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.

On Tue, Mar 12, 2013 at 5:41 PM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

Hi all,

A while back there was a discussion on the mailing list initiated by Chris discussing the possibility of having the notion of a layer backed by a process. Here is the original thread.

http://www.mail-archive.com/geoserver-devel@lists.sourceforge.net/msg19596.html

With that in mind I have started to throw together a design of what this might look like and am hoping to gather general feedback. Victor and I have thrown together this wiki page.

http://geoserver.org/display/GEOS/Process+Integration

And feedback is welcome. Just to clarify this is a completely green field at this point. We have a client who is potentially interested in funding this effort which is why I needed to put together this initial design. But before we pitch them on it we want to make sure we have a good agreement community wise on the approach.

Read the wiki page.

First observation, wondering if an alternative designs has been taken into considerations that
do not require deep modifications in the services code:

  • ProcessingFeatureTypeInfo, ProcessingCoverageInfo, sub-interfaces of FeatureTypeInfo
    and CoverageInfo that have the notion of the process they are calling and that are able
    to execute it, but besides that, they can be seen pretty much like normal resources
    from the outside world
  • do like SQL view and do not create a new resource at all, but just add the processing information
    in the metadata view, and have the resource pool deal with it

The SQL Views offer some other interesting direction, which is, view parameters: these processes
could get some of their inputs from the request directly, assuming of course that you also provide
some defaults to the param values so that the process can work even without the user providing
new values.

One concern about partial/parametric processes is that the structure of the output can change
depending on the inputs, for example, the feature type in output can contain certain attributes
depending on how the execution is parametrized.
And btw… in general, how do you compute the feature type generated by a process that
returns a FeatureCollection?
There is no way to get that besides running the process as far I know (which might take
a ton of time if the input is a large layer).
This might require API amendments.

The process builder surely requires a number of improvements, they are very welcomed.

About building partial processes, and partial chains, that sounds great, but I’m wondering
if it has to be put in bed with the “process as layer” notion.
A process as layer needs a fixed output structure, meaning you cannot change certain
of its inputs, but a partial process or a chained process given a new name should not
have the same limitation no?
I would see it more naturally as a separate process factory that feeds off definitions that
we can store in the data directory, but not necessarily make layers.

Well… enough feedback for a first round I guess :slight_smile:

CheersAndrea

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


About building partial processes, and partial chains, that sounds great, but
I'm wondering
if it has to be put in bed with the "process as layer" notion.
A process as layer needs a fixed output structure, meaning you cannot change
certain
of its inputs, but a partial process or a chained process given a new name
should not
have the same limitation no?
I would see it more naturally as a separate process factory that feeds off
definitions that
we can store in the data directory, but not necessarily make layers.

This is more or less what I tried to write in the "An alternative
approach..." section at the end. I agree with you that this way of
creating new processes might be better if handled separately. In
principle that would not be related to creating process-based layers,
but eventualyl it would be linked to it, since the processes defined
this way could be used to produce layers based on them.

I think I should reword that part to make it clearer, but I hope you
get the idea, because it sounds similar to what you are proposing.

Cheers
Victor

On Tue, Mar 12, 2013 at 7:38 PM, Victor Olaya <volaya@anonymised.com> wrote:

This is more or less what I tried to write in the “An alternative
approach…” section at the end. I agree with you that this way of
creating new processes might be better if handled separately. In
principle that would not be related to creating process-based layers,
but eventualyl it would be linked to it, since the processes defined
this way could be used to produce layers based on them.

I think I should reword that part to make it clearer, but I hope you
get the idea, because it sounds similar to what you are proposing.

Ah yes yes, I read the wiki page quickly during a build, so I’ve easily
misunderstood some parts. We’re on the same page.

Cheers
Andrea

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


Thanks for the feedback Andrea. Comments inline.

···

On Tue, Mar 12, 2013 at 12:26 PM, Andrea Aime <andrea.aime@anonymised.com> wrote:

On Tue, Mar 12, 2013 at 5:41 PM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

Hi all,

A while back there was a discussion on the mailing list initiated by Chris discussing the possibility of having the notion of a layer backed by a process. Here is the original thread.

http://www.mail-archive.com/geoserver-devel@lists.sourceforge.net/msg19596.html

With that in mind I have started to throw together a design of what this might look like and am hoping to gather general feedback. Victor and I have thrown together this wiki page.

http://geoserver.org/display/GEOS/Process+Integration

And feedback is welcome. Just to clarify this is a completely green field at this point. We have a client who is potentially interested in funding this effort which is why I needed to put together this initial design. But before we pitch them on it we want to make sure we have a good agreement community wise on the approach.

Read the wiki page.

First observation, wondering if an alternative designs has been taken into considerations that
do not require deep modifications in the services code:

  • ProcessingFeatureTypeInfo, ProcessingCoverageInfo, sub-interfaces of FeatureTypeInfo
    and CoverageInfo that have the notion of the process they are calling and that are able
    to execute it, but besides that, they can be seen pretty much like normal resources
    from the outside world

Interesting idea. One thing this would prevent would be a process that resulted in multiple outputs. But perhaps that is not all that big of a limitation. I’ll have to put more thought into this but from an WFS/WCS/WMS service integration standpoint this would certainly make things simpler. From a modelling standpoint I think the ProcessInfo approach might be nicer.

  • do like SQL view and do not create a new resource at all, but just add the processing information
    in the metadata view, and have the resource pool deal with it

I wonder if a hybrid approach would make sense. Basically adding ProcessInfo which contains everything we need to model the process execution. This is also nice because it gives WPS a dedicated resource in the catalog to work with. But for integration with the other services we use a metadata object, or whatever to reference the ProcessInfo object. And as you say the ResourcePool can handle it, invoking the process when need be to generate the coverage reader / feature source.

The SQL Views offer some other interesting direction, which is, view parameters: these processes
could get some of their inputs from the request directly, assuming of course that you also provide
some defaults to the param values so that the process can work even without the user providing
new values.

Yeah, this is exactly what i had in mind. However you define a process layer you can set it up with default values, any of which you can override on the fly in the request.

One concern about partial/parametric processes is that the structure of the output can change
depending on the inputs, for example, the feature type in output can contain certain attributes
depending on how the execution is parametrized.

Right, well currently for the most part we don’t maintain that much about the actual attribute list of the feature type right? Unless the attribute has been manually specified (which only happens with manual editing, or is a relic of an old configuration) we generally grab the attribute list dynamically.

So aside from making the resource pool smarter in terms of caching the attribute list for feature types backed by processes is there anything that will prevent us from handling a feature type whose attributes change dynamically?

And btw… in general, how do you compute the feature type generated by a process that
returns a FeatureCollection?
There is no way to get that besides running the process as far I know (which might take
a ton of time if the input is a large layer).

Right. This is sort of the same problem as computing bounds on a large table, if your table is massive you don’t want to auto calculate the bounds, and can specify it manually. Perhaps the same approach can be used here. We don’t calculate anything unless explicitly asked, and give the user a chance to configure all the things we need to publish the resource.

This might require API amendments.

The process builder surely requires a number of improvements, they are very welcomed.

About building partial processes, and partial chains, that sounds great, but I’m wondering
if it has to be put in bed with the “process as layer” notion.
A process as layer needs a fixed output structure, meaning you cannot change certain
of its inputs, but a partial process or a chained process given a new name should not
have the same limitation no?

I would see it more naturally as a separate process factory that feeds off definitions that
we can store in the data directory, but not necessarily make layers.

Right. And I think this is the direction this feedback is going, to de-couple the two. So on the one side you configure your process chain, basically just specifying the new name for the process, the name of the process(es) involved, and perhaps allow for default values for some inputs.

And then on the other side configure a feature type or coverage, that points to the process chain, that can provide an additional set of inputs, ones specific to exactly that feature type.

Well… enough feedback for a first round I guess :slight_smile:

CheersAndrea

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it



Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.

  • ProcessingFeatureTypeInfo, ProcessingCoverageInfo, sub-interfaces of FeatureTypeInfo

If a process results in multiple outputs, how do you wire it to WMS/WFS?

So basically the FeatureType would have a metadata referring to the ProcessInfo, and potentially filling in some bits, like the input and the choice of output to be used.
Sure, sounds like a good idea.

Yep. I guess these would need validators just like sql views.

WFS cannot really do that, the structure of the feature type is described by DFT and has to stay fixed.
WMS uses attributes to validate filters and SLDs, but if ResourcePool is returning the feature type based on the current request parameters that should not pose a problem.

I see where you’re going. Uh, a bit painful to have to create the feature type, it’s hard to guess what a certain process will generate…
Maybe only allow chains of “streaming” processes to be used in this approach, so that you just get a feature collection with the proper
feature type, not even have to compute the features themselves.
A way to mark streaming processing would be useful also from the p.o.v. of deciding which processes to allow in the WPS configuration,
since non streaming ones are dangerous memory usage wise.

Looks good to me. What if I don’t want to chain processes, but just use a process as-is though? What happens
in that case?
E.g., I want to buffer all the features in a layer by a certain amount? Do I need a ProcessInfo in that case?

Cheers
Andrea

···

and CoverageInfo that have the notion of the process they are calling and that are able
to execute it, but besides that, they can be seen pretty much like normal resources
from the outside world

Interesting idea. One thing this would prevent would be a process that resulted in multiple outputs. But perhaps that is not all that big of a limitation. I’ll have to put more thought into this but from an WFS/WCS/WMS service integration standpoint this would certainly make things simpler. From a modelling standpoint I think the ProcessInfo approach might be nicer.

  • do like SQL view and do not create a new resource at all, but just add the processing information
    in the metadata view, and have the resource pool deal with it

I wonder if a hybrid approach would make sense. Basically adding ProcessInfo which contains everything we need to model the process execution. This is also nice because it gives WPS a dedicated resource in the catalog to work with. But for integration with the other services we use a metadata object, or whatever to reference the ProcessInfo object. And as you say the ResourcePool can handle it, invoking the process when need be to generate the coverage reader / feature source.

The SQL Views offer some other interesting direction, which is, view parameters: these processes
could get some of their inputs from the request directly, assuming of course that you also provide
some defaults to the param values so that the process can work even without the user providing
new values.

Yeah, this is exactly what i had in mind. However you define a process layer you can set it up with default values, any of which you can override on the fly in the request.

One concern about partial/parametric processes is that the structure of the output can change
depending on the inputs, for example, the feature type in output can contain certain attributes
depending on how the execution is parametrized.

Right, well currently for the most part we don’t maintain that much about the actual attribute list of the feature type right? Unless the attribute has been manually specified (which only happens with manual editing, or is a relic of an old configuration) we generally grab the attribute list dynamically.

So aside from making the resource pool smarter in terms of caching the attribute list for feature types backed by processes is there anything that will prevent us from handling a feature type whose attributes change dynamically?

And btw… in general, how do you compute the feature type generated by a process that
returns a FeatureCollection?
There is no way to get that besides running the process as far I know (which might take
a ton of time if the input is a large layer).

Right. This is sort of the same problem as computing bounds on a large table, if your table is massive you don’t want to auto calculate the bounds, and can specify it manually. Perhaps the same approach can be used here. We don’t calculate anything unless explicitly asked, and give the user a chance to configure all the things we need to publish the resource.

I would see it more naturally as a separate process factory that feeds off definitions that
we can store in the data directory, but not necessarily make layers.

Right. And I think this is the direction this feedback is going, to de-couple the two. So on the one side you configure your process chain, basically just specifying the new name for the process, the name of the process(es) involved, and perhaps allow for default values for some inputs.

And then on the other side configure a feature type or coverage, that points to the process chain, that can provide an additional set of inputs, ones specific to exactly that feature type.

If a process results in multiple outputs, how do you wire it to WMS/WFS?

Can't you publish of them as separate layers? Just like a data store
that can produces multiple layers (like a PostGIS connection with
several tables). A ProcessInfo should be a data source that is backed
up by a process instead of an actual data container, but its data
should be handled like that of any other source, to have a fully
integrated WPS service.

Most processes now generate just one output, but it would be a bad
idea to leave out processes with multiple outputs

Looks good to me. What if I don't want to chain processes, but just use a
process as-is though? What happens
in that case?
E.g., I want to buffer all the features in a layer by a certain amount? Do I
need a ProcessInfo in that case?

If you just want the process and then you will do whatever with the
output, I guess you could use the process builder as you can do now.
If, instead, you want a derived data that you can publish and is the
result of that process (you want to have the buffer areas in
GeoServer), then you would have to create a ProcessInfo that uses that
process with those features and that distance. The ProcessInfo can be
seen as another (much better) way of computing the buffers and then
creating a new store with the ouput. Instead of creating the store
based on that output, you just define a ProcessInfo and it should take
care of everything in between (including updating the output if the
input changes, etc...)

On Wed, Mar 13, 2013 at 8:49 AM, Andrea Aime
<andrea.aime@anonymised.com>wrote:

On Tue, Mar 12, 2013 at 9:24 PM, Justin Deoliveira <jdeolive@anonymised.com>wrote:

- ProcessingFeatureTypeInfo, ProcessingCoverageInfo, sub-interfaces of
FeatureTypeInfo

  and CoverageInfo that have the notion of the process they are calling
and that are able
  to execute it, but besides that, they can be seen pretty much like
normal resources
  from the outside world

Interesting idea. One thing this would prevent would be a process that
resulted in multiple outputs. But perhaps that is not all that big of a
limitation. I'll have to put more thought into this but from an WFS/WCS/WMS
service integration standpoint this would certainly make things simpler.
From a modelling standpoint I think the ProcessInfo approach might be nicer.

If a process results in multiple outputs, how do you wire it to WMS/WFS?

Well the idea would be that you would publish one feature type / coverage
for every output of the process. The idea being that you might have a
process that could produce both a coverage or a feature type, or multiple
of each, etc... So part of configuring the feature type or coverage to
point at a process would be specifying which output.

- do like SQL view and do not create a new resource at all, but just add

the processing information
  in the metadata view, and have the resource pool deal with it

I wonder if a hybrid approach would make sense. Basically adding

ProcessInfo which contains everything we need to model the process
execution. This is also nice because it gives WPS a dedicated resource in
the catalog to work with. But for integration with the other services we
use a metadata object, or whatever to reference the ProcessInfo object. And
as you say the ResourcePool can handle it, invoking the process when need
be to generate the coverage reader / feature source.

So basically the FeatureType would have a metadata referring to the
ProcessInfo, and potentially filling in some bits, like the input and the
choice of output to be used.
Sure, sounds like a good idea.

The SQL Views offer some other interesting direction, which is, view
parameters: these processes
could get some of their inputs from the request directly, assuming of
course that you also provide
some defaults to the param values so that the process can work even
without the user providing
new values.

Yeah, this is exactly what i had in mind. However you define a process
layer you can set it up with default values, any of which you can override
on the fly in the request.

Yep. I guess these would need validators just like sql views.

One concern about partial/parametric processes is that the structure of
the output can change
depending on the inputs, for example, the feature type in output can
contain certain attributes
depending on how the execution is parametrized.

Right, well currently for the most part we don't maintain that much about
the actual attribute list of the feature type right? Unless the attribute
has been manually specified (which only happens with manual editing, or is
a relic of an old configuration) we generally grab the attribute list
dynamically.

So aside from making the resource pool smarter in terms of caching the
attribute list for feature types backed by processes is there anything that
will prevent us from handling a feature type whose attributes change
dynamically?

WFS cannot really do that, the structure of the feature type is described
by DFT and has to stay fixed.

Not quite sure I follow, do you mean from a service semantics standpoint?

WMS uses attributes to validate filters and SLDs, but if ResourcePool is
returning the feature type based on the current request parameters that
should not pose a problem.

And btw... in general, how do you compute the feature type generated by
a process that
returns a FeatureCollection?
There is no way to get that besides running the process as far I know
(which might take
a ton of time if the input is a large layer).

Right. This is sort of the same problem as computing bounds on a large
table, if your table is massive you don't want to auto calculate the
bounds, and can specify it manually. Perhaps the same approach can be used
here. We don't calculate anything unless explicitly asked, and give the
user a chance to configure all the things we need to publish the resource.

I see where you're going. Uh, a bit painful to have to create the feature
type, it's hard to guess what a certain process will generate...
Maybe only allow chains of "streaming" processes to be used in this
approach, so that you just get a feature collection with the proper
feature type, not even have to compute the features themselves.
A way to mark streaming processing would be useful also from the p.o.v. of
deciding which processes to allow in the WPS configuration,
since non streaming ones are dangerous memory usage wise.

I would see it more naturally as a separate process factory that feeds
off definitions that
we can store in the data directory, but not necessarily make layers.

Right. And I think this is the direction this feedback is going, to
de-couple the two. So on the one side you configure your process chain,
basically just specifying the new name for the process, the name of the
process(es) involved, and perhaps allow for default values for some inputs.

And then on the other side configure a feature type or coverage, that
points to the process chain, that can provide an additional set of inputs,
ones specific to exactly that feature type.

Looks good to me. What if I don't want to chain processes, but just use a
process as-is though? What happens
in that case?
E.g., I want to buffer all the features in a layer by a certain amount? Do
I need a ProcessInfo in that case?

My thinking is that if you wanted to use it through WMS/WFS/ec... then yes.
But perhaps we could allow the metadata object that is to point from the
resource to the ProcessInfo to also allow for just invoking a wms call
directly. But in either case I think you have to configure something.

Cheers
Andrea

--

Our support, Your Success! Visit http://opensdi.geo-solutions.it for more
information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

--
Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.

On Wed, Mar 13, 2013 at 4:14 PM, Victor Olaya <volaya@anonymised.com> wrote:

Can’t you publish of them as separate layers? Just like a data store
that can produces multiple layers (like a PostGIS connection with
several tables). A ProcessInfo should be a data source that is backed
up by a process instead of an actual data container, but its data
should be handled like that of any other source, to have a fully
integrated WPS service.

Most processes now generate just one output, but it would be a bad
idea to leave out processes with multiple outputs

Yes, you can do that, however there might be a drawback, a process has a single
“run” method so in order to get one output you have to compute them all.

If all the outputs are “streaming” that’s not a problem, since the outputs are really
just placeholders that activate when you start pulling data from them… if not,
well, you pay N to just use 1.

E.g., I want to buffer all the features in a layer by a certain amount? Do I
need a ProcessInfo in that case?

If you just want the process and then you will do whatever with the
output, I guess you could use the process builder as you can do now.

If, instead, you want a derived data that you can publish and is the
result of that process (you want to have the buffer areas in
GeoServer), then you would have to create a ProcessInfo that uses that
process with those features and that distance. The ProcessInfo can be
seen as another (much better) way of computing the buffers and then
creating a new store with the ouput. Instead of creating the store
based on that output, you just define a ProcessInfo and it should take
care of everything in between (including updating the output if the
input changes, etc…)

Right, it just seems a little involved/compliacated to first create a ProcessInfo
to run an existing process.
Maybe the UI can hide that, when I try to create a new processed layer
it can offer me to use one of the existing ProcessInfo, but also list one
of the existing processes and automatically wrap it in a ProcessInfo
without the user having to do the two steps.
Makes sense?

Cheers
Andrea

==
Our support, Your Success! Visit http://opensdi.geo-solutions.it for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it


WFS cannot really do that, the structure of the feature type is described by DFT and has to stay fixed.

Yes, correct.
WMS and WPS expose no information about the data structures, but WFS and WCS do, they tell you
about the feature attributes, the coverege bands and so on. Those cannot change.

Yes, my feedback was more thinking about the UI of it, see my follow up to Victor.

Cheers
Andrea

···

Not quite sure I follow, do you mean from a service semantics standpoint?

Looks good to me. What if I don’t want to chain processes, but just use a process as-is though? What happens
in that case?
E.g., I want to buffer all the features in a layer by a certain amount? Do I need a ProcessInfo in that case?

My thinking is that if you wanted to use it through WMS/WFS/ec… then yes. But perhaps we could allow the metadata object that is to point from the resource to the ProcessInfo to also allow for just invoking a wms call directly. But in either case I think you have to configure something.

On Wed, Mar 13, 2013 at 9:27 AM, Andrea Aime
<andrea.aime@anonymised.com>wrote:

On Wed, Mar 13, 2013 at 4:23 PM, Justin Deoliveira <jdeolive@anonymised.com>wrote:

WFS cannot really do that, the structure of the feature type is described
by DFT and has to stay fixed.
Not quite sure I follow, do you mean from a service semantics standpoint?

Yes, correct.
WMS and WPS expose no information about the data structures, but WFS and
WCS do, they tell you
about the feature attributes, the coverege bands and so on. Those cannot
change.

Right, but afaik there is nothing in the WFS spec that says a schema can't
change over time. And today don't we allow for this type of change? Like
changing a table schema and reloading a feature type for example.

But the concern is certainly valid. I do think it is more the
responsibility of whomever is setting up the layer though to ensure that
the process is resulting in a "stable' schema if that is what they need.

Looks good to me. What if I don't want to chain processes, but just use
a process as-is though? What happens
in that case?
E.g., I want to buffer all the features in a layer by a certain amount?
Do I need a ProcessInfo in that case?

My thinking is that if you wanted to use it through WMS/WFS/ec... then
yes. But perhaps we could allow the metadata object that is to point from
the resource to the ProcessInfo to also allow for just invoking a wms call
directly. But in either case I think you have to configure something.

Yes, my feedback was more thinking about the UI of it, see my follow up to
Victor.

Cheers
Andrea

--

Our support, Your Success! Visit http://opensdi.geo-solutions.it for more
information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549

http://www.geo-solutions.it
http://twitter.com/geosolutions_it

-------------------------------------------------------

--
Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.

All true, but in practice it does not change that often. My concern is with clients that do cache the DescribeFeatureType/DescribeCoverage response, and keeping the result valid for long enough to get a good interaction with those clients

Right… what might make it change is the “process parameters” exposed as per request values. In SQL views we tell people not to put parameters in the “select” part for that reason.
That said, a standard client won’t know how to use the process params to start with, so the point is actually moot.

Cheers
Andrea

···

Right, but afaik there is nothing in the WFS spec that says a schema can’t change over time. And today don’t we allow for this type of change? Like changing a table schema and reloading a feature type for example.

But the concern is certainly valid. I do think it is more the responsibility of whomever is setting up the layer though to ensure that the process is resulting in a "stable’ schema if that is what they need.