[fdo-internals] RFC 20 for review
dan.stoica at autodesk.com
Wed Jul 9 13:10:36 EDT 2008
I'm not sure either this RFC promotes simplification, but something has to be done in this area. Say I find a certain provider has a limitation/some specific behavior. We create a new capability so my application (provider agnostic) is able to branch the execution. Currently we need to touch ALL the providers in order to expose the new capability. This is very annoying to say the least.
Going forward, what I suggest is to be able to get easily a capability, with minimum implementation effort (only the affected provider will be touched), like this:
FdoCapabilityType x = FdoCapabilityType_SomeNewCapability;
Bool supported = connection->GetCapability(x, &unknown);
Then the caller decides based on the flags:
T T - this case doesn't exist
T F - yes, supported indeed
F F - no, not supported
F T - not sure (not implemented, it may be supported or not, give it a try).
From: fdo-internals-bounces at lists.osgeo.org [mailto:fdo-internals-bounces at lists.osgeo.org] On Behalf Of Frank Warmerdam (External)
Sent: Tuesday, July 08, 2008 8:08 PM
To: FDO Internals Mail List
Subject: Re: [fdo-internals] RFC 20 for review
Thomas Knoell wrote:
> RFC 20 (http://trac.osgeo.org/fdo/wiki/FDORfc20) has been posted. It
> proposes a simplification of the FDO capability interfaces. Please
> review the RFC and let me know of any questions and suggestions you may
> have. The review deadline is set for end of day July 18^th. It is
> intended to request a vote on the RFC afterwards.
I'm generally supportive of this direction - mainly because I dislike the
ABI fragility of the current interface, and the need to modify every
providers when new capabilities are added.
My concerns are:
1) I believe this will break all providers until they are updated to implement
the new capabilities classes, is that right? The doc says "Autodesk to
provide resource / funding to implement the feature for the affected
providers." but I'm concerned that there are outside providers that Autodesk
can't easily update. Is there anything we can mitigate the transition hassles
for providers (such as a default implementation of FDOICapability that calls
the old classes)? Can you confirm which contributed providers will be
updated by Autodesk? (GDAL? PostGIS? KingOracle?)
2) I'd like to know what the capability methods will return by default (
when isUnknown is going to return true). Hopefully for something like
GetBooleanCapability() this would be false, and for the most part applications
can just check the return value and ignore isUnknown.
3) The document mentions that it was decided not to have FdoICapabilities
methods throw an exception for unknown capabilities for "performance" reasons.
Can you elaborate? Would this really happen enough that the cost of an
exception would be high?
4) I wasn't clear on why string names for capabilities were not used. The
(one) nice aspect of string capability identifiers is that you don't have to
maintain a master list. So, for instance, some providers could have auxilary
capabilities that can be tested for that are unique to the provider without
having to worry about avoiding global name collisions. The (main) downside
is that string comparisons are a bit more expensive instead of just having
switches on enumerations.
Generally speaking my concern with this RFC is that it represents a great deal
of churn for relatively modest gains. That doesn't mean we shouldn't do it,
but it has been my experience that this sort of churn drives away contributors
to some extent. Amoung other things, it will make it more difficult to build
providers against FDO 3.3 and FDO 3.4.
I set the clouds in motion - turn up | Frank Warmerdam, warmerdam at pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush | President OSGeo, http://osgeo.org
fdo-internals mailing list
fdo-internals at lists.osgeo.org
More information about the fdo-internals