Difference between revisions of "Java 2017 Code Sprint"

From OSGeo
Jump to navigation Jump to search
m (added possible plans)
 
(69 intermediate revisions by 10 users not shown)
Line 1: Line 1:
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.
+
The current plan is for the Java tribe to meet in Italy the week of March 27th. This page will allow us to plan the event.
  
We will be hosted at the GeoSolutions offices in beautiful Tuscany for
+
Questions:
a week long sprint.
+
 
 +
1. Who would be interested in joining as a participating? <br/>Please add your name under "participants" below, availability is limited.
 +
 
 +
2. Who would be interested in sponsoring? ;-) <br/> Thanks to Gaia3d and OSGeo for sponsoring, and GeoSolutions for the generous In-Kind contribution of sprint venue.
 +
 
 +
== Location ==
 +
 
 +
We will be hosted at the GeoSolutions offices in beautiful Tuscany for a week long sprint.
 +
Available seats are limited to 10 to 15!
 +
 
 +
Additional travel information is outlined in the budget details provided below.
 +
 
 +
=== Contacts ===
 +
 
 +
# GeoSolutions Office +390584962313
 +
# Simone Giannecchini +393338128928
 +
 
 +
== Sponsors ==
 +
 
 +
We would like to extend our thanks to the following sponsors:
  
Questions:
+
=== Gold Sponsors ===
# Who would be interested in joining as a participating?
+
 
# Who would be interested in sponsoring? ;-)
+
{| cellpadding="20"
# Do you have any preferred week between say Feb 13 and end of March?
+
| [[File:Gaia3d.png|350px|link=http://www.gaia3d.com/]]
 +
| [[File:Boundless_Logo.png|350px|link=http://boundlessgeo.com]]
 +
|-
 +
| [[File:OSGeo logo 750 317.png|350px|link=http://www.osgeo.org]]
 +
| [[File:insurance_australia_group_logo.png|350px|link=https://www.iag.com.au]]
 +
|-
 +
| [[File:geodan_logo.png|350px|link=http://www.geodan.nl]]
 +
|
 +
|}
  
== Plans ==
+
=== Bronze Sponsors ===
  
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.
+
{| cellpadding="20"
 +
| [[File:How2map logo.png|250px|link=http://www.how2map.com]]
 +
| [[File:German-speaking local-chapter-fossgis logo.png|250px|link=https://www.fossgis.de/]]
 +
| [[File:Atol logo.png|250px|link=https://www.atolcd.com]]
 +
|}
  
* JDK 9 + maybe JDK 8 updates in the code base (like stream ready support for feature collection, where we can use lambda for profit)
+
=== In-Kind Support ===
* CITE - upgrade the test harness, make sure the tests are still passing (probably they won’t), add new test that we are missing, WFS 2.0, WCS 2.0, CSW, WMTS 1.0, WPS 1.0, maybe GML and KML and GeoPackage,    maybe stand up a reference server for OGC to use, with one test per workspace/virtual service?
 
* REST API switch to Spring MVC (Andrea and Ian worried about making things worse user wise in terms of bugs) --- idea can we couple also fixing the actual bug reports in Jira? What about the other modules using restlet, importer and resource-rest-api, rest-upload, sldService, anything else? Need quite a bit of people.
 
* Mapbox style
 
* Library upgrades
 
  
 +
{| cellpadding="20"
 +
| [[File:Geosolutions_logo.png|250px|link=http://www.geo-solutions.it]]
 +
| | [[File:AstunLogo.png|250px |link=http://astuntechnology.com]]
 +
|}
  
 
== Participants ==
 
== Participants ==
  
Please add your name and the projects  
+
Please add your name and the projects you are planning to sprint and note the likehood of your attendance.
you are planning to sprint and note the likehood of your attendance.
+
 
 +
{| style="border: solid grey 1px; width:100%" class="sortable"
 +
|+ Participants
 +
|-
 +
| # || Participant || Country || Organization || Arrival ||  Departure || Project Work on || Notes || Attendance
 +
|-
 +
| 1 || Andrea Aime || Italy || GeoSolutions ||  ||    || CITE or REST API switch || Preference for CITE, I'm game for the REST API switch too  || Confirmed
 +
|-
 +
| 2 || Ian Turton  || UK    || Astun        ||  ||    || CITE, Java 8 upgrade  || || Booked
 +
|-
 +
| 3 || Andrea Antonello  || Italy    || HydroloGIS        ||  ||    || gvSIG and cross-project ideas    ||  I have a strong preference for the end of March || Canceled
 +
|-
 +
| 4 || Jody Garnett  || Canada    || Boundless        ||  ||    || GeoServer and GeoTools    ||  Enthusiastic about CITE and REST API work || Booked
 +
|-
 +
| 5 || Niels Charlier  || Belgium    || Scitus Development        ||  ||    || GeoServer and GeoTools    || Keen to do REST API work, MapBox seems interesting too.  || Canceled
 +
|-
 +
| 6 || Torben Barsballe  || Canada    || Boundless        ||  ||    || REST API or CITE    ||  Preference for REST API, would also be fine with CITE || Booked
 +
|-
 +
| 7 || Mike Pumphrey || USA || Boundless || || || Documentation || I'll help out with whatever you all decide on || Confirmed
 +
|-
 +
| 8 || [[User:ksmith|Kevin Smith]] || Canada || Boundless || || || GeoServer, GeoTools, and GeoWebCache || REST update, Language Update prep, library updates, deguavafication are all interesting || Booked
 +
|-
 +
| 9 || Nuno Oliveira || Portugal|| GeoSolutions|| || || GeoServer, GeoTools || REST update, CITE tests, Clustering, Language Update prep, library updates || Confirmed
 +
|-
 +
| 10 || Matt  Kruszewski || St. Louis || Boundless || || || GeoServer  || REST update or CITE tests || Confirmed
 +
|-
 +
| 11 || Quinn Scripter || Washington, DC || Boundless || || || GeoServer  || REST update or CITE tests || Booked
 +
|-
 +
| 12 || David Vick || St Louis, MO || Boundless || || || GeoServer || REST update || Booked
 +
|}
 +
 
 +
== Sponsorship ==
 +
 
 +
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.
 +
 
 +
Sponsors will receive the following benefits / honours:
 +
 
 +
* Your logo at the top of this page
 +
* Mention in all of our public communication, including GeoServer 2.12 release announcement
 +
* Our gratitude :)
 +
 
 +
This event provides the following sponsorship levels:
 +
 
 +
{| class="wikitable"
 +
|-
 +
| Gold
 +
| style="text-align:right;" | $1000 USD
 +
| style="text-align:right;" | €950 EUR
 +
|-
 +
| Silver
 +
| style="text-align:right;" | $500 USD
 +
| style="text-align:right;" | €470 EUR
 +
|-
 +
| Bronze
 +
| style="text-align:right;" | $250 USD
 +
| style="text-align:right;" | €235 EUR
 +
|-
 +
| In-Kind || colspan="3" | In-kind support graciously accepted
 +
|}
 +
 
 +
This is an official OSGeo event, your contribution counts towards being recognized as an [http://www.osgeo.org/content/sponsorship/sponsors.html OSGeo Sponsors].
 +
 
 +
For more information on sponsorship, please contact [[Jody Garnett]], [[User:Aaime|Andrea Aime]].
 +
 
 +
=== How to Sponsor ===
 +
 
 +
Sponsorship is accepted through PayPal:
 +
 
 +
# Navigate to the [http://www.osgeo.org/ OSGeo website]
 +
# Click on the "Donate" button in the top right corner
 +
# Donations are handled through PayPal, when making the donation be sure to:
 +
#* Check the currency (USD rates are provided above)
 +
#* Use the "Add special instructions to the seller" field on the confirmation page to mention the event (example "GeoServer code sprint sponsorship")
 +
#* To make alternative arrangements contact OSGeo [[Treasurer]]
 +
# The OSGeo [[Treasurer]] will contact both you and the event organizers to acknowledge your sponsorship
 +
#* Please have a logo ready for your organization if you wish to be acknowledged publicly
 +
#* Your event sponsorship, at your request, can contribute towards [http://www.osgeo.org/sponsorship being recognized] as an OSGeo Foundation sponsor
 +
 
 +
We can also ask that OSGeo provide an invoice for payment (contact [[Jody Garnett]], [[User:Aaime|Andrea Amie]] to make arrangements).
 +
 
 +
=== Sponsorship Outreach ===
 +
 
 +
We are reaching out to organizations to see if there is interest in sponsorship:
 +
 
 +
* International organizations (OSGeo, GeoSolutions, Boundless);
 +
* Local organizations
 +
 
 +
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).
 +
 
 +
=== OSGeo Funding Request ===
 +
 
 +
The following information is requested by OSGeo Board [[Code_Sprint_Guidelines]]:
 +
 
 +
* [https://docs.google.com/spreadsheets/d/1SKwH9ExjJtzONTLw04lMq3Sqy5V9m8CGis5Fpyvgp5s/edit#gid=990228872 Java 2017 Code Sprint] (Google Docs)
 +
* [[Java_2017_Code_Sprint_Budget_:_Budget|Java 2017 Code Sprint Budget]]
 +
 
 +
== GeoServer ==
  
 +
The GeoServer team really benefited from [[GeoServer Code Sprint 2016|geoserver code sprint 2016]] and is eager to repeat the success.
 +
 +
=== GeoServer Planning ===
 +
 +
The following topics were proposed:
 +
 +
* [https://github.com/geoserver/geoserver/wiki/CITE-Test-Upgrade CITE Test Upfrade]
 +
* '''[https://github.com/geoserver/geoserver/wiki/REST-API-Refresh REST API Refresh]''' - see details below
 +
* [https://github.com/geotools/geotools/wiki/Mapbox-Style Mapbox Style]
 +
* Library Upgrade
 +
 +
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.
 +
 +
==== REST API  ====
 +
 +
''The [https://github.com/geoserver/geoserver/wiki/REST-API-Refresh REST API Refresh] focuses on migrating the module from Restlet to the more popular Spring MVC, fixing as many issues as we can, and documenting the result.''
 +
 +
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).
 +
 +
Internally the REST API is written using an early java library called "restlet" (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.
 +
 +
    /**
 +
    * API endpoint to get details on a specific layer
 +
    * @param wsName The workspace name
 +
    * @param name The layer name
 +
    * @param req The HTTP request
 +
    * @return The layer, encoded as a JSON object
 +
    */
 +
    @RequestMapping(value="/{wsName}/{name:.+}", method = RequestMethod.GET)
 +
    public @ResponseBody JSONObj get(@PathVariable String wsName, @PathVariable String name, HttpServletRequest req) {
 +
 +
Rough plan:
 +
 +
* Create a rest-ng module (alongside existing rest, restconfig, importer-rest, ....)
 +
** 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.
 +
** Set up converters/encoders for resources
 +
* Migrate restconfig functionality
 +
* Migrate importer-rest functionality
 +
* resource-rest-api
 +
* rest-upload
 +
* Audit functionality against GUI
 +
** shortlist missing functionality for proposal and implementation (examples recalculate feature type columns, rest layer bounds from SRS boudns, ...)
 +
* Test cases should remain unchanged
 +
* Documentation
 +
** Set up documentation team operating concurrently, capturing each resource as it is completed
 +
** 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].
 +
** Consider auto generating example output from test case (see [https://projects.spring.io/spring-restdocs/ spring-restdocs])
 +
 +
This activity will require quite a bit of people (all hands on deck).
 +
 +
Reference:
 +
 +
* [https://osgeo-org.atlassian.net/issues/?jql=project%20%3D%20GEOS%20AND%20status%20%3D%20Open%20AND%20component%20%3D%20REST Searching for REST]
 +
* [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)
 +
 +
==== Library upgrades ====
 +
 +
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.
  
 
{| style="border: solid grey 1px; width:100%" class="sortable"
 
{| style="border: solid grey 1px; width:100%" class="sortable"
|+ Participants
+
|+ Libraries
 +
|-
 +
| Library || Version || Latest || Description ||
 +
|-
 +
| Wicket || 7.1.0 || 7.6.0 || user interface (note 8.x milestones being released presently)
 +
|-
 +
| hsql || 2.3.0 || 2.3.4 || java database
 +
|-
 +
| h2 || 1.1.119 || 1.3.176 || java database (1.4.x beta currently available)
 +
|-
 +
| commons-dbcp || 1.4 || 2.2 || database connection pool
 +
|-
 +
| commons-beanutils || 1.9.2 || 1.9.3 || java bean utility library
 +
|-
 +
| commons-collections || 3.2.2 || 4.1 | java collection classes
 +
|-
 +
| guava || 17.0 || 21.0 || java collection classes and more
 +
|-
 +
| log4j || 1.2.12 || 2.7 || supports java 8 lambda, consider migrating to yaml/json config?
 
|-
 
|-
| # || Participant || Country || Organization || Arrival ||  Departure || Project Work on || Attendance / Notes
+
| (and much more) || ||  
 +
|}
 +
 
 +
Note:
 +
 
 +
* We may wish to migrate from guava to java 8 and commons collections; as guava often produces conflicts for downstream projects
 +
 
 +
== GeoTools ==
 +
 
 +
=== GeoTools Plans ===
 +
 
 +
The GeoTools codebase has a number of smaller of ideas that may of be of interest to volunteers:
 +
 
 +
* JDK 9 + maybe JDK 8 updates in the code base (like stream ready support for feature collection, where we can use lambda for profit)
 +
* JDK 9 replacement for plugin system (service registry) is required
 +
 
 +
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.
 +
 
 +
[[Category:Code Sprints]]
 +
[[Category:Java Tribe Code Sprint]]

Latest revision as of 01:29, 27 March 2017

The current plan is for the Java tribe to meet in Italy the week of March 27th. This page will allow us to plan the event.

Questions:

1. Who would be interested in joining as a participating?
Please add your name under "participants" below, availability is limited.

2. Who would be interested in sponsoring? ;-)
Thanks to Gaia3d and OSGeo for sponsoring, and GeoSolutions for the generous In-Kind contribution of sprint venue.

Location

We will be hosted at the GeoSolutions offices in beautiful Tuscany for a week long sprint. Available seats are limited to 10 to 15!

Additional travel information is outlined in the budget details provided below.

Contacts

  1. GeoSolutions Office +390584962313
  2. Simone Giannecchini +393338128928

Sponsors

We would like to extend our thanks to the following sponsors:

Gold Sponsors

Gaia3d.png Boundless Logo.png
OSGeo logo 750 317.png Insurance australia group logo.png
Geodan logo.png

Bronze Sponsors

How2map logo.png German-speaking local-chapter-fossgis logo.png Atol logo.png

In-Kind Support

Geosolutions logo.png AstunLogo.png

Participants

Please add your name and the projects you are planning to sprint and note the likehood of your attendance.

Participants
# Participant Country Organization Arrival Departure Project Work on Notes Attendance
1 Andrea Aime Italy GeoSolutions CITE or REST API switch Preference for CITE, I'm game for the REST API switch too Confirmed
2 Ian Turton UK Astun CITE, Java 8 upgrade Booked
3 Andrea Antonello Italy HydroloGIS gvSIG and cross-project ideas I have a strong preference for the end of March Canceled
4 Jody Garnett Canada Boundless GeoServer and GeoTools Enthusiastic about CITE and REST API work Booked
5 Niels Charlier Belgium Scitus Development GeoServer and GeoTools Keen to do REST API work, MapBox seems interesting too. Canceled
6 Torben Barsballe Canada Boundless REST API or CITE Preference for REST API, would also be fine with CITE Booked
7 Mike Pumphrey USA Boundless Documentation I'll help out with whatever you all decide on Confirmed
8 Kevin Smith Canada Boundless GeoServer, GeoTools, and GeoWebCache REST update, Language Update prep, library updates, deguavafication are all interesting Booked
9 Nuno Oliveira Portugal GeoSolutions GeoServer, GeoTools REST update, CITE tests, Clustering, Language Update prep, library updates Confirmed
10 Matt Kruszewski St. Louis Boundless GeoServer REST update or CITE tests Confirmed
11 Quinn Scripter Washington, DC Boundless GeoServer REST update or CITE tests Booked
12 David Vick St Louis, MO Boundless GeoServer REST update Booked

Sponsorship

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.

Sponsors will receive the following benefits / honours:

  • Your logo at the top of this page
  • Mention in all of our public communication, including GeoServer 2.12 release announcement
  • Our gratitude :)

This event provides the following sponsorship levels:

Gold $1000 USD €950 EUR
Silver $500 USD €470 EUR
Bronze $250 USD €235 EUR
In-Kind In-kind support graciously accepted

This is an official OSGeo event, your contribution counts towards being recognized as an OSGeo Sponsors.

For more information on sponsorship, please contact Jody Garnett, Andrea Aime.

How to Sponsor

Sponsorship is accepted through PayPal:

  1. Navigate to the OSGeo website
  2. Click on the "Donate" button in the top right corner
  3. Donations are handled through PayPal, when making the donation be sure to:
    • Check the currency (USD rates are provided above)
    • Use the "Add special instructions to the seller" field on the confirmation page to mention the event (example "GeoServer code sprint sponsorship")
    • To make alternative arrangements contact OSGeo Treasurer
  4. The OSGeo Treasurer will contact both you and the event organizers to acknowledge your sponsorship
    • Please have a logo ready for your organization if you wish to be acknowledged publicly
    • Your event sponsorship, at your request, can contribute towards being recognized as an OSGeo Foundation sponsor

We can also ask that OSGeo provide an invoice for payment (contact Jody Garnett, Andrea Amie to make arrangements).

Sponsorship Outreach

We are reaching out to organizations to see if there is interest in sponsorship:

  • International organizations (OSGeo, GeoSolutions, Boundless);
  • Local organizations

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).

OSGeo Funding Request

The following information is requested by OSGeo Board Code_Sprint_Guidelines:

GeoServer

The GeoServer team really benefited from geoserver code sprint 2016 and is eager to repeat the success.

GeoServer Planning

The following topics were proposed:

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.

REST API

The REST API Refresh focuses on migrating the module from Restlet to the more popular Spring MVC, fixing as many issues as we can, and documenting the result.

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).

Internally the REST API is written using an early java library called "restlet" (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.

   /**
    * API endpoint to get details on a specific layer
    * @param wsName The workspace name
    * @param name The layer name
    * @param req The HTTP request
    * @return The layer, encoded as a JSON object
    */
   @RequestMapping(value="/{wsName}/{name:.+}", method = RequestMethod.GET)
   public @ResponseBody JSONObj get(@PathVariable String wsName, @PathVariable String name, HttpServletRequest req) {

Rough plan:

  • Create a rest-ng module (alongside existing rest, restconfig, importer-rest, ....)
  • Migrate restconfig functionality
  • Migrate importer-rest functionality
  • resource-rest-api
  • rest-upload
  • Audit functionality against GUI
    • shortlist missing functionality for proposal and implementation (examples recalculate feature type columns, rest layer bounds from SRS boudns, ...)
  • Test cases should remain unchanged
  • Documentation
    • Set up documentation team operating concurrently, capturing each resource as it is completed
    • Go for a resource description, json and xml example, example of each kind of request (GET, PUT, POST, DELETE) as appropriate. See mapbox example and boundless example.
    • Consider auto generating example output from test case (see spring-restdocs)

This activity will require quite a bit of people (all hands on deck).

Reference:

Library upgrades

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.

Libraries
Library Version Latest Description
Wicket 7.1.0 7.6.0 user interface (note 8.x milestones being released presently)
hsql 2.3.0 2.3.4 java database
h2 1.1.119 1.3.176 java database (1.4.x beta currently available)
commons-dbcp 1.4 2.2 database connection pool
commons-beanutils 1.9.2 1.9.3 java bean utility library
commons-collections 3.2.2 java collection classes
guava 17.0 21.0 java collection classes and more
log4j 1.2.12 2.7 supports java 8 lambda, consider migrating to yaml/json config?
(and much more)

Note:

  • We may wish to migrate from guava to java 8 and commons collections; as guava often produces conflicts for downstream projects

GeoTools

GeoTools Plans

The GeoTools codebase has a number of smaller of ideas that may of be of interest to volunteers:

  • JDK 9 + maybe JDK 8 updates in the code base (like stream ready support for feature collection, where we can use lambda for profit)
  • JDK 9 replacement for plugin system (service registry) is required

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.