Handling of Unsupported Modules - STEMLab/geotools GitHub Wiki

Description

We introduced the "modules/unsupported" directory in an effort to help prevent the development community working on branches; and as an effort to introduce new developers to the GeoTools community. This also allowed us to demote several modules that have been with out a maintainer (so it is obvious to the user community what is going on).

This proposal would like to refine how we are handling unsupported modules:

  • The creation of a single page in the developers guide outlining all the requirements from creation through supporting a module (right now this content is split across several pages). We should clarify how a module can drop back to unsupported status and so forth.
  • Modify the unsupported/pom.xml so that profiles are available grouping like functionality; using a single environmental -Dall to turn on all functions
  • Deployment of all modules to maven (including those in unsupported)
  • Continuous testing of all modules (including those in unsupported)
  • Restrict unsupported modules from the default download

The goals here are several fold:

  • Ensure that everything we (ie the PMC) make available for download has passed the Project QA checks and meets the requirements of our Developers Guide
  • Continue to foster new development
  • Ensure that GeoTools always builds in a reasonable amount of time

Status

We would like to close up this issue in a timely fashion for the 2.5.0 release:

Discussion

Tasks

This section is used to make sure your proposal is complete (did you remember documentation?) and has enough paid or volunteer time lined up to be a success

        | :white_check_mark: | :no_entry: | :warning:               | :negative_squared_cross_mark: |

------------|--------------------|------------|-------------------------|-------------------------------| no progress | done | impeded | lack mandate/funds/time | volunteer needed |

  1. ✅ API changed based on BEFORE / AFTER patch is waiting to be applied, this is required to make 2.5.0 ready for release
  2. (jive) Update the developers guide and ask for review
  3. Ask a module to step through the process in order to "debug" the procedure

API Changes

BEFORE

Currently all children of unsupported/pom.xml are included in the build (or they are placed into a profile like "archive" if the code does not compile).

  <profiles>
     <profile>
       <id>gdal</id>
       <modules>
         <module>imageio-ext-gdal</module>
       </modules>
     </profile>
     <profile>
       <id>pending</id>
       <modules>
         <module>coveragetools</module>
         <module>sql-datastore</module>
         <module>geometryless</module>
         <module>notifying-collections</module>
       </modules>
     </profile>
     <profile>
       <id>archive</id>
       <modules>
         <module>community-schemas</module>
         <module>hsql</module>
         <module>geomedia</module>
         <module>ogr</module>
         <module>gml3</module>
         <module>tile</module>
       </modules>
     </profile>
  </profiles>
  <modules>
    <module>coverageio</module>
    <module>coverageio-netcdf</module>
    <module>coveragetools</module>
    <module>directory</module>
    <module>epsg-oracle</module>
    <module>geometry</module>
    <module>gml</module>    
    <module>gpx</module>
    <module>h2</module>
    <module>imagemosaic-jdbc</module>
    <module>jts-wrapper</module>
    <module>mappane</module>
    <module>mif</module>
    <module>mysql</module>
    <module>ogc</module>
    <module>oracle-spatial</module>
    <module>postgis-versioned</module>
    <module>process</module>
    <module>wps</module>
    <module>repository</module>
    <module>temporal</module>
    <module>tiger</module>
    <module>vpf</module>
    <module>widgets-swing-pending</module>
    <module>xml-gpx</module>
  </modules>
</project>

AFTER

We need to place the majority of unsupported modules into individual profiles; activated with a common -Dall command line setting:

...
  <profiles>
     <profile>
       <id>fm</id>
       <activation>
         <property>
            <name>all</name>
         </property>
       </activation>
       <modules>
         <module>coveragetools</module>
         <module>sql-datastore</module>
         <module>geometryless</module>
         <module>notifying-collections</module>
       </modules>
     </profile>
     <profile>
       <id>archive</id>
       <modules>
         <module>community-schemas</module>
         <module>hsql</module>
         <module>geomedia</module>
         <module>ogr</module>
         <module>gml3</module>
         <module>tile</module>
       </modules>
     </profile>

     <profile>
       <id>geometry</id>
       <activation>
         <property><name>all</name></property>
       </activation>
       <modules>
         <module>geometry</module>
         <module>jts-wrapper</module>
       </modules>
     </profile>

     <profile>
       <id>database</id>
       <activation>
         <property><name>all</name></property>
       </activation>
       <modules>
         <module>h2</module>
         <module>mysql</module>
         <module>oracle-spatial</module>
         <module>postgis-versioned</module>
       </modules>
     </profile>

     <profile>
       <id>workflow</id>
       <activation>
         <property><name>all</name></property>
       </activation>
       <modules>
         <module>process</module>
         <module>wps</module>
       </modules>
     </profile>

     <profile>
       <id>raster</id>
       <activation>
         <property><name>all</name></property>
       </activation>
       <modules>
         <module>coverageio</module>
         <module>coverageio-netcdf</module>
         <module>coveragetools</module>
         <module>imageio-ext-gdal</module>
         <module>imagemosaic-jdbc</module>
       </modules>
     </profile>

     <profile>
       <id>unsupported</id>
       <activation>
         <property>
            <name>all</name>
         </property>
       </activation>
       <modules>
         <module>directory</module>
         <module>epsg-oracle</module>
         <module>gml</module>    
         <module>gpx</module>
         <module>mappane</module>
         <module>mif</module>
         <module>repository</module>
         <module>temporal</module>
         <module>tiger</module>
         <module>vpf</module>
         <module>widgets-swing-pending</module>
         <module>xml-gpx</module>
       </modules>
     </profile>

     </profile>
  </profiles>
  <!-- the ogc module is currently required by our build system -->
  <modules>
    <module>ogc</module>
  </modules>
</project>

Documentation Changes

This proposal requires modification to the Developers Guide:

⚠️ **GitHub.com Fallback** ⚠️