<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.osgeo.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wiki-Dvntucker</id>
	<title>OSGeo - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.osgeo.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wiki-Dvntucker"/>
	<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/wiki/Special:Contributions/Wiki-Dvntucker"/>
	<updated>2026-04-13T23:51:29Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.9</generator>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Java_2018_Code_Sprint&amp;diff=116636</id>
		<title>Java 2018 Code Sprint</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Java_2018_Code_Sprint&amp;diff=116636"/>
		<updated>2018-09-18T20:49:30Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Dvntucker: /* Participants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Java tribe has a real challenge for 2018 - updating our open source projects for the Java roadmap.&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
&lt;br /&gt;
Sprint scheduled for Q4 2018, proposed date:&lt;br /&gt;
&lt;br /&gt;
* October 22-26th &lt;br /&gt;
&lt;br /&gt;
We are looking at setting up a distributed sprint with locations in:&lt;br /&gt;
&lt;br /&gt;
* North America - Victoria, Boundless Office, billeting options available for those travelling&lt;br /&gt;
* Europe - Sevilla, Spain half.confirmed. Italy or UK have been proposed, recommendations welcome!&lt;br /&gt;
* Oceania - recommendations welcome&lt;br /&gt;
&lt;br /&gt;
=== Contacts ===&lt;br /&gt;
&lt;br /&gt;
Jody Garnett&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
We would like to thank our sponsors!&lt;br /&gt;
&lt;br /&gt;
=== Gold Sponsors ===&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== Bronze Sponsors ===&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== In-Kind Support ===&lt;br /&gt;
&lt;br /&gt;
[[File:Boundless_Logo.png|350px|link=http://boundlessgeo.com]] [[File:GeoCat.png|350px|link=https://www.geocat.net]]&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
&lt;br /&gt;
Please add your name and the projects you are planning to sprint and note the likehood of your attendance.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: solid grey 1px; width:100%&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|+ Participants&lt;br /&gt;
|-&lt;br /&gt;
| # || Participant || Country || Organization || Arrival ||  Departure || Project Work on || Notes || Attendance &lt;br /&gt;
|-&lt;br /&gt;
| 1 ||  [[User:Delawen|María Arias de Reyna]] || Spain || GeoCat bv || working remotely ||  working remotely || GeoNetwork || Notes || Partially working on the codesprint &lt;br /&gt;
|-&lt;br /&gt;
| 2 ||  [[User:Jive|Jody Garnett]] || Canada || Boundless || local || local || GeoTools || Able to host guests || Confirmed&lt;br /&gt;
|-&lt;br /&gt;
| 3 ||  [[User:Tbarsballe|Torben Barsballe]] || Canada || Boundless || local || local || GeoTools ||  || Confirmed&lt;br /&gt;
|-&lt;br /&gt;
| 4 ||  [[User:ksmith|Kevin Smith]] || Canada || Boundless || local || local || GT/GWC/GS ||  || Confirmed&lt;br /&gt;
|-&lt;br /&gt;
| 5 ||  [[User:dvntucker|Devon Tucker]] || Canada || Boundless || local || local || GT/GS || || Confirmed&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
&lt;br /&gt;
=== Java has a roadmap? === &lt;br /&gt;
&lt;br /&gt;
Yes, we had a previous sprint focused on Java 8 compatibility, several features had changed breaking compatibility.&lt;br /&gt;
&lt;br /&gt;
More importantly the Java roadmap has changed to a six-month release cycle:&lt;br /&gt;
&lt;br /&gt;
* six month release cycle is already well underway having started with Java 9 and Java 10.&lt;br /&gt;
&lt;br /&gt;
* Oracle is offering three year LTS releases commercially&lt;br /&gt;
&lt;br /&gt;
* AdoptOpenJDK is setting up LTS releases of OpenJDK .. backed by IBM, Microsoft and others.&lt;br /&gt;
&lt;br /&gt;
* RedHat is focusing on LTS (skipping Java 9 and Java 10) and plans to ship OpenJDK based on Java SE 11&lt;br /&gt;
&lt;br /&gt;
=== Why is updating our open source projects for the Java roadmap a challenge? === &lt;br /&gt;
&lt;br /&gt;
- Java changed the service provider interface plugin system used by GeoTools, forcing the project to write its own replacement.&lt;br /&gt;
&lt;br /&gt;
- The java runtime has been broken up into modules, not all of which are activated by default. We need to review what sections of the JRE we require and ensure they are turned on.&lt;br /&gt;
&lt;br /&gt;
- Java introduced the module system &amp;quot;jigsaw&amp;quot; providing both a class-path and module-path for loading jars.&lt;br /&gt;
&lt;br /&gt;
- When loaded on the module-path jars are prevented from using the same package. This breaks multi-jar projects like GeoTools library where gt-api defining interfaces, and gt-main providing implementations.&lt;br /&gt;
&lt;br /&gt;
- Jigsaw also locks down aspects of Java reflection, affecting projects like Spring that make heavy use of reflection to &amp;quot;auto wire&amp;quot; GeoServer together. Spring 5 has been released and upgrading to this release will be a key focus.&lt;br /&gt;
&lt;br /&gt;
- With these changes projects like GeoServer need to review of hundreds open source dependencies to determine what other libraries are broken, if an update is available or replacement can be found.&lt;br /&gt;
&lt;br /&gt;
- The java web service framework (responsible for concepts like Servlet and Session) is being removed from Oracle oversight and has been setup as [Jakarta EE Software](https://jakarta.ee).&lt;br /&gt;
&lt;br /&gt;
=== Recommended reading ===&lt;br /&gt;
&lt;br /&gt;
* [https://www.azul.com/what-comes-after-jdk-8/ What Comes After JDK 8?]&lt;br /&gt;
* [https://medium.com/criciumadev/its-time-migrating-to-java-11-5eb3868354f9 It's time! Migrating to Java 11] - contains working example of updating spring application&lt;br /&gt;
* [http://openjdk.java.net/projects/jigsaw/spec/sotms The State of the Module System] / [https://www.oracle.com/corporate/features/understanding-java-9-modules.html Understanding Java 9 modules]&lt;br /&gt;
&lt;br /&gt;
=== Do you have any experience running sprints? === &lt;br /&gt;
&lt;br /&gt;
The GeoServer team really benefited from [[Java 2017 Code Sprint|java 2017 code sprint]] and is eager to repeat the success.&lt;br /&gt;
&lt;br /&gt;
== GeoServer Planning ==&lt;br /&gt;
&lt;br /&gt;
Initial planning has started:&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/geoserver/geoserver/wiki/GSIP-171 GSIP 171 Java 18.9 Compatibility] (GeoServer)&lt;br /&gt;
&lt;br /&gt;
Preflight activities:&lt;br /&gt;
&lt;br /&gt;
* dependency audit &lt;br /&gt;
&lt;br /&gt;
Required updates:&lt;br /&gt;
&lt;br /&gt;
* Spring 5 - Older versions of spring are not compatible with Java 11. Upgrading to from Spring 4 to Spring 5 does involve handling some API changes.&lt;br /&gt;
* HazelCast - Like Spring, HazelCast involves a lot of reflection. &lt;br /&gt;
&lt;br /&gt;
Module refactor:&lt;br /&gt;
&lt;br /&gt;
* Repackage GeoServer application jars to prevent conflicts at the package level.&lt;br /&gt;
* Resulting application can be used on either the CLASSPATH (Java 8) or MODULEPATH (Java 11)&lt;br /&gt;
&lt;br /&gt;
== GeoTools Planning ==&lt;br /&gt;
&lt;br /&gt;
Planning and work is already well underway:&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/geotools/geotools/wiki/Java-9-Compatibility GeoTools Java-9-Compatibility] (GeoTools)&lt;br /&gt;
&lt;br /&gt;
The first completed phase is to allow GeoTools to be used on the classpath:&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/geotools/geotools/wiki/Migrate-Units-to-JSR-363 Migrate Units to JSR-363] (GeoTools)&lt;br /&gt;
* [https://github.com/geotools/geotools/wiki/FactoryRegistry-Refactoring-for-Java-9-Compatibility FactoryRegistry Refactoring for Java 9 Compatibility] (GeoTools)&lt;br /&gt;
&lt;br /&gt;
The sprint goal is to refactor the geotools library into modules, allowing the jars to be used on either the classpath (Java 8) or the module path (Java 11).&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/geotools/geotools/wiki/Restructure-GeoTools-into-Jigsaw-modules Restructure GeoTools into Jigsaw modules] (GeoTools)&lt;br /&gt;
&lt;br /&gt;
* Core library refactored into modules&lt;br /&gt;
&lt;br /&gt;
[[File:Gt-modules.png|frameless|GeoTools Java 11 modules ]]&lt;br /&gt;
&lt;br /&gt;
* plugins used to automatic modules to dependencies on the classpath&lt;br /&gt;
&lt;br /&gt;
[[File:Module-path.png|800px|module-path bridge to classpath]]&lt;br /&gt;
&lt;br /&gt;
In the above illustration the gt-svg module is used as an automatic module publishing org.geotools.renderer.style.svg package. It acts as a bridge to the multi-jar project batik still on the classpath, completely masking the fact batik is used used to read and render svg files. The core module gt-renderer publishes select packages for use, while hiding others. It makes use of ServiceLocator to access the IconFactory implemented by gt-svg and never has direct use of the batik implementation.&lt;br /&gt;
&lt;br /&gt;
For this to work the gt-svg jar has been refactored, moving the icon factory the new package org.geotools.style.svg. This was required as the package org.geotools.renderer.style was already published by gt-renderer.&lt;br /&gt;
&lt;br /&gt;
We expect:&lt;br /&gt;
&lt;br /&gt;
* Initial focus is on the core library, refactoring to allow jars to be used on the module path as named modules&lt;br /&gt;
* plugins will remain on the classpath, accessed via service locator, any conflicting packages will not be visible to client code&lt;br /&gt;
&lt;br /&gt;
== JTS Topology Suite Activities ==&lt;br /&gt;
&lt;br /&gt;
Results of bonn code sprint:&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/locationtech/jts/pull/274 Add module names for better Java 9/Jigsaw support] (JTS Topology Suite)&lt;br /&gt;
&lt;br /&gt;
JTS jars can be placed on the module-path used as an automatic module, the jars have been supplied am Automatic-Module-Name using a MANIFEST.MF entry.&lt;br /&gt;
&lt;br /&gt;
For an example.application using jts-core as a module add '''module-info''':&lt;br /&gt;
&lt;br /&gt;
   module example.application {&lt;br /&gt;
     requires org.locationtech.jts;            // jts-core&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
== GeoNetwork Planning ==&lt;br /&gt;
&lt;br /&gt;
[[https://github.com/geonetwork/core-geonetwork/wiki/OSGeo-Java-codesprint-2018 Strategy for GeoNetwork]]&lt;br /&gt;
&lt;br /&gt;
== How to sponsorship ==&lt;br /&gt;
&lt;br /&gt;
Contributions will be put towards travel costs for sprint participants who would be otherwise unable to attend. Any surplus at the end of the event will be turned over to OSGeo or used for a future code sprint. We have set-up the sprint to minimize travel and accommodation costs.&lt;br /&gt;
&lt;br /&gt;
Sponsors will receive the following benefits / honours:&lt;br /&gt;
&lt;br /&gt;
* Your logo at the top of this page&lt;br /&gt;
* Mention in project communication (for example the GeoServer 2.15 release announcement)&lt;br /&gt;
* The ability to run on a supported java platform&lt;br /&gt;
* Our gratitude :)&lt;br /&gt;
&lt;br /&gt;
This event provides the following sponsorship levels:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Gold&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | $2500 USD&lt;br /&gt;
|-&lt;br /&gt;
| Silver&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | $1500 USD&lt;br /&gt;
|-&lt;br /&gt;
| Bronze&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | $750 USD&lt;br /&gt;
|-&lt;br /&gt;
| In-Kind || colspan=&amp;quot;3&amp;quot; | In-kind support graciously accepted&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This is an official OSGeo event, your contribution counts towards being recognized as an [https://www.osgeo.org/about/how-to-become-a-sponsor/ OSGeo Sponsors].&lt;br /&gt;
&lt;br /&gt;
For more information on sponsorship, please contact [[Jody Garnett]], [[User:Aaime|Andrea Aime]].&lt;br /&gt;
&lt;br /&gt;
=== How to Sponsor ===&lt;br /&gt;
&lt;br /&gt;
# Contact OSGeo [[Treasurer]] for details on using PayPal or to request an invoice:&lt;br /&gt;
# The OSGeo [[Treasurer]] will contact both you and the event organizers to acknowledge your sponsorship&lt;br /&gt;
#* Please have a logo ready for your organization if you wish to be acknowledged publicly &lt;br /&gt;
#* Your event sponsorship, at your request, can contribute towards [http://www.osgeo.org/sponsorship being recognized] as an OSGeo Foundation sponsor&lt;br /&gt;
&lt;br /&gt;
=== Sponsorship Outreach ===&lt;br /&gt;
&lt;br /&gt;
We are reaching out to organizations to see if there is interest in sponsorship:&lt;br /&gt;
&lt;br /&gt;
* Prior sponsors: gaia3d, boundless, ian, geodan, how2map, fossgis, atol, geosolutions, astun&lt;br /&gt;
* Local sponsors: astun, vivid solutions, transient software&lt;br /&gt;
&lt;br /&gt;
If there is a lot of local sponsorship we expect to drag the developers away from the task at hand and meet the local community (at a social evening or similar).&lt;br /&gt;
&lt;br /&gt;
=== OSGeo Funding Request ===&lt;br /&gt;
&lt;br /&gt;
The following information is requested by OSGeo Board [[Code_Sprint_Guidelines]], we provided an indication that we would be planning a sprint during the 2018 budget process.&lt;br /&gt;
&lt;br /&gt;
* [[Java_2018_Code_Sprint_Budget_:_Budget|Java 2018 Code Sprint Budget]]&lt;br /&gt;
&lt;br /&gt;
It is intended to that OSGeo be recognized as hosting this event, rather than acknowledged as a sponsor.&lt;br /&gt;
&lt;br /&gt;
[[Category:Code Sprints]]&lt;br /&gt;
[[Category:Java Tribe Code Sprint]]&lt;/div&gt;</summary>
		<author><name>Wiki-Dvntucker</name></author>
	</entry>
	<entry>
		<id>https://wiki.osgeo.org/w/index.php?title=Java_2017_Code_Sprint&amp;diff=104749</id>
		<title>Java 2017 Code Sprint</title>
		<link rel="alternate" type="text/html" href="https://wiki.osgeo.org/w/index.php?title=Java_2017_Code_Sprint&amp;diff=104749"/>
		<updated>2017-01-18T23:55:50Z</updated>

		<summary type="html">&lt;p&gt;Wiki-Dvntucker: /* Participants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The current plan is for the Java tribe to meet in Italy at the start of March. This page will allow us to plan the event.&lt;br /&gt;
&lt;br /&gt;
== Location ==&lt;br /&gt;
&lt;br /&gt;
We will be hosted at the GeoSolutions offices in beautiful Tuscany for a week long sprint.&lt;br /&gt;
Available seats are limited to 10 to 15!&lt;br /&gt;
&lt;br /&gt;
Questions:&lt;br /&gt;
&lt;br /&gt;
# Who would be interested in joining as a participating?&lt;br /&gt;
# Who would be interested in sponsoring? ;-)&lt;br /&gt;
# Do you have any preferred week between say March 13 and end of March?&lt;br /&gt;
&lt;br /&gt;
== Participants ==&lt;br /&gt;
&lt;br /&gt;
Please add your name and the projects you are planning to sprint and note the likehood of your attendance.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: solid grey 1px; width:100%&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|+ Participants&lt;br /&gt;
|-&lt;br /&gt;
| # || Participant || Country || Organization || Arrival ||  Departure || Project Work on || Notes || Attendance &lt;br /&gt;
|-&lt;br /&gt;
| 1 || Andrea Aime || Italy || GeoSolutions ||   ||    || CITE or REST API switch || Preference for CITE, I'm game for the REST API switch too  || Local&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Ian Turton  || UK    || Astun        ||   ||    || CITE, Java 8 upgrade   || Planning&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Andrea Antonello  || Italy    || HydroloGIS        ||   ||    || gvSIG and cross-project ideas     ||  I have a strong preference for the end of March || Planning&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Jody Garnett  || Canada    || Boundless        ||   ||    || GeoServer and GeoTools     ||  Enthusiastic about CITE and REST API work || Planning&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Niels Charlier  || Belgium    || Scitus Development        ||   ||    || GeoServer and GeoTools     || Keen to do REST API work, MapBox seems interesting too.  || Tentatively planning, possibly partially&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Torben Barsballe  || Canada    || Boundless        ||   ||    || REST API or CITE     ||  Preference for REST API, would also be fine with CITE || Planning&lt;br /&gt;
|-&lt;br /&gt;
| 7 || Mike Pumphrey || USA || Boundless || || || Documentation || I'll help out with whatever you all decide on || Depends on what dates we decide&lt;br /&gt;
|-&lt;br /&gt;
| 8 || [[User:ksmith|Kevin Smith]] || Canada || Boundless || || || GeoServer, GeoTools, and GeoWebCache || REST update, Language Update prep, library updates, deguavafication are all interesting || Planning&lt;br /&gt;
|-&lt;br /&gt;
| 9 || [[User:dvntucker|Devon Tucker]] || Canada || Boundless || || || GeoServer, GeoTools || REST update or CITE tests || Tentative/Planning&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
We have the following sponsorship levels:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Gold&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | $1000 USD&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | €950 EUR&lt;br /&gt;
|-&lt;br /&gt;
| Silver&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | $500 USD&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | €470 EUR&lt;br /&gt;
|-&lt;br /&gt;
| Bronze&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | $250 USD&lt;br /&gt;
| style=&amp;quot;text-align:right;&amp;quot; | €235 EUR&lt;br /&gt;
|-&lt;br /&gt;
| Beer || colspan=&amp;quot;3&amp;quot; | In-kind contributions are graciously accepted&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Contributions will be put towards travel costs for overseas sprinters who would be otherwise unable to attend. Any surplus at the end of the event will be turned over to OSGeo or used for a future code sprint. We have set-up the sprint to minimize travel and accommodation costs.&lt;br /&gt;
&lt;br /&gt;
Sponsors will receive the following honours:&lt;br /&gt;
&lt;br /&gt;
* Your logo at the top of this page&lt;br /&gt;
* Mention in all of our public communication, including GeoServer 2.9 release announcement&lt;br /&gt;
* Our gratitude :)&lt;br /&gt;
&lt;br /&gt;
For more information on sponsorship, please contact [[Jody Garnett]], [[User:Aaime|Andrea Amie]].&lt;br /&gt;
&lt;br /&gt;
=== How to Sponsor ===&lt;br /&gt;
&lt;br /&gt;
Sponsorship is accepted through PayPal:&lt;br /&gt;
&lt;br /&gt;
# Navigate to the [http://www.osgeo.org/ OSGeo website]&lt;br /&gt;
# Click on the &amp;quot;Donate&amp;quot; button in the top right corner&lt;br /&gt;
# Donations are handled through PayPal, when making the donation be sure to:&lt;br /&gt;
#* Check the currency (USD rates are provided above)&lt;br /&gt;
#* Use the &amp;quot;Add special instructions to the seller&amp;quot; field on the confirmation page to mention the event (example &amp;quot;GeoServer code sprint sponsorship&amp;quot;)&lt;br /&gt;
#* To make alternative arrangements contact OSGeo [[Treasurer]]&lt;br /&gt;
# The OSGeo [[Treasurer]] will contact both you and the event organizers to acknowledge your sponsorship&lt;br /&gt;
#* Please have a logo ready for your organization if you wish to be acknowledged publicly &lt;br /&gt;
#* Your event sponsorship, at your request, can contribute towards [http://www.osgeo.org/sponsorship being recognized] as an OSGeo Foundation sponsor&lt;br /&gt;
&lt;br /&gt;
We can also ask that OSGeo provide an invoice for payment (contact [[Jody Garnett]], [[User:Aaime|Andrea Amie]] to make arrangements).&lt;br /&gt;
&lt;br /&gt;
=== Sponsorship Outreach ===&lt;br /&gt;
&lt;br /&gt;
We are reaching out to organizations to see if there is interest in sponsorship:&lt;br /&gt;
&lt;br /&gt;
* International organizations (OSGeo, GeoSolutions, Boundless);&lt;br /&gt;
* Local organizations&lt;br /&gt;
&lt;br /&gt;
If there is a lot of local sponsorship we expect to drag the developers away from the task at hand and meet the local community (at a social evening or similar).&lt;br /&gt;
&lt;br /&gt;
=== OSGeo Funding Request ===&lt;br /&gt;
&lt;br /&gt;
The following information is requested by OSGeo Board [[Code_Sprint_Guidelines]]:&lt;br /&gt;
&lt;br /&gt;
* [[Java_2017_Code_Sprint_Budget_:_Budget|Java 2017 Code Sprint Budget]]&lt;br /&gt;
&lt;br /&gt;
== GeoServer ==&lt;br /&gt;
&lt;br /&gt;
The GeoServer team really benefited from [[GeoServer Code Sprint 2016|geoserver code sprint 2016]] and is eager to repeat the success.&lt;br /&gt;
&lt;br /&gt;
=== GeoServer Plans (choose ONE of the following)  ===&lt;br /&gt;
&lt;br /&gt;
We are still at the planning stage so please let us know if a particular topic interests you or would be a deal breaker. The sprint does not have to be a single topic, if we can swarm a large beast good, but if someone wants to join and work on a side topic to leverage the presence of others, that’s good too.&lt;br /&gt;
&lt;br /&gt;
==== CITE ====&lt;br /&gt;
&lt;br /&gt;
The [http://cite.opengeospatial.org OGC Compliance Program] provides the CITE tool for testing standards compliance. Our build process makes heavy use of this tool ... ensuring that each and every release of GeoServer correctly implements WMS, WFS, and WCS.&lt;br /&gt;
&lt;br /&gt;
There are three problems with this:&lt;br /&gt;
&lt;br /&gt;
* We last updated our CITE build tool 2012 (so our testing is quite out of date).&lt;br /&gt;
* Our geoserver.org website can only say we are a &amp;quot;compliant implementation&amp;quot;, rather than a &amp;quot;certified implementation&amp;quot; of the WCS, WMS and WFS standards.&lt;br /&gt;
* New services such as WPS and CSW are not &amp;quot;blackbox&amp;quot; tested.&lt;br /&gt;
&lt;br /&gt;
The OGC provide the CITE Team Engine both as a web service and as an open source project that can be used to check a single instance of GeoServer. This is a little awkward as we would like to integrate these tests into our build server; as such our build server stands up a geoserver instance, performance the tests, and publishes the results [http://ares.boundlessgeo.com/jenkins/view/testing-cite/ here]. These tests also require a database - and modify that database over the course of the tests (so our build server needs a PostGIS running).&lt;br /&gt;
&lt;br /&gt;
Armed with a positive test result we can ask OSGeo to pay for OGC certification, allowing us to update our website. As an alternative to paying money the OGC allows open source projects to be listed as a &amp;quot;reference implementation&amp;quot; (providing an instance of the server is available online for potential clients to test against).&lt;br /&gt;
&lt;br /&gt;
Rough planning:&lt;br /&gt;
&lt;br /&gt;
* Upgrade the test harness&lt;br /&gt;
* Make sure the tests are still passing (probably they won’t),&lt;br /&gt;
* Add new test that we are missing&lt;br /&gt;
** WFS 2.0,&lt;br /&gt;
** WCS 2.0&lt;br /&gt;
** CSW&lt;br /&gt;
** WMTS 1.0&lt;br /&gt;
** WPS 1.0,&lt;br /&gt;
** maybe GML and KML and GeoPackage&lt;br /&gt;
* OGC Certification&lt;br /&gt;
** Submit required paperwork, and test results, update website&lt;br /&gt;
* Reference Implementation &lt;br /&gt;
** Maybe stand up a reference server for OGC to use (if OSGeo or OGC provide hardware) with one test per workspace/virtual service?&lt;br /&gt;
&lt;br /&gt;
==== REST API  ====&lt;br /&gt;
&lt;br /&gt;
The REST API for GeoServer is popular, but not well maintained, collecting a large number of outstanding bugs. Many of these complain about functionality and lack of documentation. The large number of bugs (API called correctly but produced an error) may be producing more requests for documentation (developer assumed they called it incorrectly, and asks for improved documentation with an example that works).&lt;br /&gt;
&lt;br /&gt;
Internally the REST API is written using an early java library called &amp;quot;restlet&amp;quot; (http://restlet.com/). There is a desire to migrate to spring rest api which is annotation driven and better supported. The risk in performing a migration to Spring MVC is introducing more bugs than are fixed. This is somewhat offset by having a larger pool of developers familiar with the codebase and the technologies used.&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * API endpoint to get details on a specific layer&lt;br /&gt;
     * @param wsName The workspace name&lt;br /&gt;
     * @param name The layer name&lt;br /&gt;
     * @param req The HTTP request&lt;br /&gt;
     * @return The layer, encoded as a JSON object&lt;br /&gt;
     */&lt;br /&gt;
    @RequestMapping(value=&amp;quot;/{wsName}/{name:.+}&amp;quot;, method = RequestMethod.GET)&lt;br /&gt;
    public @ResponseBody JSONObj get(@PathVariable String wsName, @PathVariable String name, HttpServletRequest req) {&lt;br /&gt;
&lt;br /&gt;
Rough plan:&lt;br /&gt;
&lt;br /&gt;
* Create a rest-ng module (alongside existing rest, restconfig, importer-rest, ....)&lt;br /&gt;
** Module based on Spring MVC - see simple  [https://github.com/boundlessgeo/suite/blob/master/geoserver/webapp/src/main/java/com/boundlessgeo/geoserver/api/controllers/ProjController.java PrjController.java] example and complex [https://github.com/boundlessgeo/suite/blob/master/geoserver/webapp/src/main/java/com/boundlessgeo/geoserver/api/controllers/LayerController.java LayerController.java] example.&lt;br /&gt;
** Set up converters/encoders for resources&lt;br /&gt;
* Migrate restconfig functionality&lt;br /&gt;
* Migrate importer-rest functionality&lt;br /&gt;
* resource-rest-api&lt;br /&gt;
* rest-upload&lt;br /&gt;
* Audit functionality against GUI&lt;br /&gt;
** shortlist missing functionality for proposal and implementation (examples recalculate feature type columns, rest layer bounds from SRS boudns, ...)&lt;br /&gt;
* Test cases should remain unchanged &lt;br /&gt;
* Documentation&lt;br /&gt;
** Set up documentation team operating concurrently, capturing each resource as it is completed&lt;br /&gt;
** Go for a resource description, json and xml example, example of each kind of request (GET, PUT, POST, DELETE) as appropriate. See [https://www.mapbox.com/api-documentation/?language=cURL#styles mapbox example] and [https://github.com/boundlessgeo/suite/wiki/Layers-API boundless example].&lt;br /&gt;
** Consider auto generating example output from test case (see [https://projects.spring.io/spring-restdocs/ spring-restdocs])&lt;br /&gt;
&lt;br /&gt;
This activity will require quite a bit of people (all hands on deck).&lt;br /&gt;
&lt;br /&gt;
Reference:&lt;br /&gt;
&lt;br /&gt;
* [https://osgeo-org.atlassian.net/issues/?jql=project%20%3D%20GEOS%20AND%20status%20%3D%20Open%20AND%20component%20%3D%20REST Searching for REST]&lt;br /&gt;
* [https://osgeo-org.atlassian.net/issues/?jql=project%20%3D%20GEOS%20AND%20status%20%3D%20Open%20AND%20component%20%3D%20REST Searching for Module] (not always properly assigned)&lt;br /&gt;
&lt;br /&gt;
==== Mapbox Style ====&lt;br /&gt;
&lt;br /&gt;
The GeoServer application can be extended to work with multiple styling languages (SLD, CSS, YSLD). Mapbox has recently defined an open standard for drawing vector tiles that has been picked up by not only their own software but by the OpenLayers team. Initial investigation into this standard shows that it is a &amp;quot;whole&amp;quot; map standard similar to &amp;quot;sld&amp;quot; describing both the layers that make up the map, and the symbology used to represent them visually.&lt;br /&gt;
&lt;br /&gt;
While some features (3d extrusions, camera and lighting angle) are not suitable for use by GeoServer the rest of it looks quite fun.&lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
&lt;br /&gt;
* https://www.mapbox.com/mapbox-gl-style-spec/&lt;br /&gt;
&lt;br /&gt;
* https://boundlessgeo.com/2017/01/using-mapbox-style-objects-open-layers/&lt;br /&gt;
&lt;br /&gt;
Rough planning:&lt;br /&gt;
&lt;br /&gt;
* Focus on styling a single layer using a mapbox style&lt;br /&gt;
** Requires a parser for mapbox style capable of producing the internal geotools style objects; package as a geotools community module.&lt;br /&gt;
** Setup geoserver extension and integration for new style format&lt;br /&gt;
* Whole map styling (optional)&lt;br /&gt;
** LayerGroup defines both an order of layers, and the style associated with each layer - this information can be defined from a single mapbox style&lt;br /&gt;
** (Optional) Consider offering SLD the same ability to define a LayerGroup&lt;br /&gt;
&lt;br /&gt;
==== Library upgrades ====&lt;br /&gt;
&lt;br /&gt;
Last year's sprint was devoted to updating a key library and required all hands on deck to help make the transition a smooth one. Ideally we would like to stay on top of library upgrades; however often a change to one has a cascade effect as we need to update (and test) each library in turn.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: solid grey 1px; width:100%&amp;quot; class=&amp;quot;sortable&amp;quot;&lt;br /&gt;
|+ Libraries&lt;br /&gt;
|-&lt;br /&gt;
| Library || Version || Latest || Description ||&lt;br /&gt;
|-&lt;br /&gt;
| Wicket || 7.1.0 || 7.6.0 || user interface (note 8.x milestones being released presently)&lt;br /&gt;
|-&lt;br /&gt;
| hsql || 2.3.0 || 2.3.4 || java database&lt;br /&gt;
|-&lt;br /&gt;
| h2 || 1.1.119 || 1.3.176 || java database (1.4.x beta currently available)&lt;br /&gt;
|-&lt;br /&gt;
| commons-dbcp || 1.4 || 2.2 || database connection pool&lt;br /&gt;
|-&lt;br /&gt;
| commons-beanutils || 1.9.2 || 1.9.3 || java bean utility library &lt;br /&gt;
|-&lt;br /&gt;
| commons-collections || 3.2.2 || 4.1 | java collection classes&lt;br /&gt;
|-&lt;br /&gt;
| guava || 17.0 || 21.0 || java collection classes and more &lt;br /&gt;
|-&lt;br /&gt;
| log4j || 1.2.12 || 2.7 || supports java 8 lambda, consider migrating to yaml/json config?&lt;br /&gt;
|-&lt;br /&gt;
| (and much more) || || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
* We may wish to migrate from guava to java 8 and commons collections; as guava often produces conflicts for downstream projects&lt;br /&gt;
&lt;br /&gt;
== GeoTools ==&lt;br /&gt;
&lt;br /&gt;
=== GeoTools Plans ===&lt;br /&gt;
&lt;br /&gt;
The GeoTools codebase has a number of smaller of ideas that may of be of interest to volunteers:&lt;br /&gt;
&lt;br /&gt;
* JDK 9 + maybe JDK 8 updates in the code base (like stream ready support for feature collection, where we can use lambda for profit)&lt;br /&gt;
* JDK 9 replacement for plugin system (service registry) is required&lt;br /&gt;
&lt;br /&gt;
The above ideas may also be suitable to anyone attending remotely who like the focus and support of a dedicated code sprint block on the calendar.&lt;br /&gt;
&lt;br /&gt;
[[Category:Code Sprints]]&lt;br /&gt;
[[Category:Java Tribe Code Sprint]]&lt;/div&gt;</summary>
		<author><name>Wiki-Dvntucker</name></author>
	</entry>
</feed>