[fdo-dev] fdo and fdocore

Greg Boone greg.boone at autodesk.com
Tue Jul 4 14:49:27 EDT 2006

Hi Mateusz,

Please bear with me. I will attempt to provide some background
information over a number of responses.

NOTE: The OSGeo FDO project is currently not a Live project. It is
*scheduled* to go live towards the end of July. The site is currently
under development with a number of changes being made to the look and
feel of the site as well as source code content found on the site.
Please be patient as we work towards getting the site up and running. 

Feature Data Objects (FDO) is an API for manipulating, defining, and
analyzing geospatial information. FDO uses a provider (or driver) based
model for supporting a variety of geospatial data sources, where each
provider typically supports a particular data format or data store.
Providers exist for accessing data stored in RDBMS formats such as MySQL
or from file formats such as Shape. 

To start using FDO, I strongly recommend reading...

The Essential FDO:


FDO Developers Guide:


NOTE: We are also working on a 'How to Build FDO' document that will
assist users in the specific issues involved with building the various
components within the FDO architecture. 

The FDO project structure has been organized into several OSGeo
subprojects that allow access to the source code of the various
components with the FDO architecture as separate projects.

https://fdo.osgeo.org is the top level project and is a starting point
for discovering components within the FDO architecture. From this site
the FDO API is introduced and the developer community exposed to the API
and a set of supported data providers. 

https://fdo.osgeo.org contains a number of Subversion Subprojects:

fdocore   -- FDO Core APIs            https://fdocore.osgeo.org 
fdoarcsde -- FDO Provider for ArcSDE  https://fdoarcsde.osgeo.org 
fdogdal   -- FDO GDAL Provider        https://fdogdal.osgeo.org 
fdoogr    -- FDO OGR Provider         https://fdoogr.osgeo.org 
fdordbms  -- FDO Providers for RDBMS  https://fdordbms.osgeo.org 
fdosdf    -- FDO Provider for SDF     https://fdosdf.osgeo.org 
fdoshp    -- FDO Provider for SHP     https://fdoshp.osgeo.org 
fdowfs    -- FDO Provider for WFS     https://fdowfs.osgeo.org 
fdowms    -- FDO Provider for WMS     https://fdowms.osgeo.org 

fdocore is the FDO API subversion. The FDO API was placed in the fdocore
subproject to separate its development from provider development. Access
rights will be granted to fdocore separately from the subprojects that
implement the FDO API. 

NOTE: fdocore must be built first so that all other subprojects that
depend on the FDO API may be built. 

fdocore is composed of three central components

1) Fdo: The base FDO API written in portable C++ and compliable in a
Windows or Linux environment. There is also an additional set of .Net
managed C++ classes that serve as wrapper classes around the unmanaged
API and allows the FDO API to be executed from within a Windows .Net

Fdo is primarily composed of:

a) A set of FDO abstract interfaces that each FDO provider must
implement in order to support various commands within the FDO API such
as Select, Insert, Update and Delete.
b) A Common API consisting of various generic FDO API classes that have
been reused in the development of the FDO API and the supported
providers that implement the FDO API. 
c) The OSGeo FDO Geometry API that encapsulates the OSGeo geometry
format. (See chapter 12 in the FDO Developers Guide)

2) Utilities: A set of utility libraries that are meant to be reused in
the development of FDO providers. These libraries were not used in the
implementation of the FDO API itself.

3) Thirdparty: The source code for a set of thirdparty components that
are used by the FDO API and its providers. Source code for these
components is provided so that OSGeo can maintain compatibility between
its OpenSource and Enterprise products. 

fdocore contains a Providers directory which is empty. This directory is
meant to be a placeholder under which all provider source can be located
so that the FDO and Provider source code can be compiled from the top
level fdocore build scripts. The continues existence of this directory
may be maintained or abandoned as we move towards the *go live* date.



The above directory structure is optional and each Provider can be
placed in a separate directory tree if required. However, maintaining
the provider code under Providers will allow maximum reuse of the helper
scripts provider and will mimic the build setup used by the OSGeo build

Once the source code for fdocore has been downloaded, there are a number
of helper scripts that can be used to update and build the source code.
There are versions of these scripts available for Windows and Linux.

checkoutsvn -- allows the FDO API and provider source code to be updated
from their appropriate subversions. NOTE: executing this script will
checkout setup the FDO API and Provider directories in a configuration
that mimics the internal build configuration. This will mean that all
OSGeo Provider source code will be retrieved to your development

setenvironment -- sets the build environment that will allow the FDO API
and the Providers to be built

build_thirdparty -- builds the thirdparty components required by the FDO
API and its providers to run successfully.

build -- builds the FDO API and Providers on Windows. Executing this
script with no arguments will build Thirdparty, Fdo, Utilities and all
Provider retrieved by the checkoutsvn script. 

build_linux -- builds the FDO API and Providers on Linux. Executing this
script with no arguments will build Thirdparty, Fdo, Utilities and all
Provider retrieved by the checkoutsvn script.

(More to come....)


-----Original Message-----
From: Mateusz Loskot [mailto:mateusz at loskot.net] 
Sent: Friday, June 30, 2006 4:44 PM
To: dev at fdo.osgeo.org
Subject: [fdo-dev] fdo and fdocore

Hi Greg,

My name is Mateusz Loskot.
Recently, I started to work on FDO and GDAL provider for FDO and
I met some problems I'd like to ask you to help me with.

First, I'd like to learn the overall FDO project/sub-projects structure.
As I know, there are 3 projects available on the OSGeo.org website:
fdo, fdocore and fdogdal.
The last one is clear. It's a GDAL provider for FDO.
But I can't figure out what is the role of fdo and fdocore projects.
As I found, both projects include the same files e.g. fdo module.
fdocore seems to be newer but there are no providers in
the Providers directory.
fdo project includes some providers, but there are no Utilities, etc.

I'd be very thank full if you could explain me the FDO projects

My main aim is to build FDO core + GDAL provider and test it deeply on
Linux and Windows.
Finally, I'm going to test GDAL provider for FDO with MapGuide.
As I see, there are UnitTests already available in the fdo and fdocore.
Could you tell me something about current state of those tests?
Could I extend them and create new, when I will be testing FDO with

I subscribed to all dev/user lists of fdo, fdocore and fdogdal projects.
At first, I wanted to write my questions to mailing list, but I could
not decide which one should I choose.
Please, could you tell me which list can be considered as the main FDO
development list?

Thanks in advance for your assistance
Mateusz Loskot

To unsubscribe, e-mail: dev-unsubscribe at fdo.osgeo.org
For additional commands, e-mail: dev-help at fdo.osgeo.org

More information about the Fdo-internals mailing list