wiki:SummerOfCode

OpenLayers 2 is outdated. Go to the latest 3.x version: http://openlayers.org/

Summer Of Code

Google's SoC program allows for students to receive a stipend for developing open source software under the tutelage of a mentor from the project. Most of these projects require reasonably significant Javascript knowledge to be successful, but no specific GIS knowledge. Here are some Google Summer of Code development ideas:

Ideas

Applications

Application Toolkit

Various efforts are underway to combine client-side application frameworks with OpenLayers. MapFish and GeoExt couple OpenLayers with the Ext JS. These efforts could be combined to provide a common front-end toolkit for building map related applications. The project would focus on developing modular application components with no specific server-side dependencies. The goal of the project would be to develop a library that facilitates quick application development with richly interactive map related components.

The student would gain skills in:

  • Using application building libraries (Ext JS) for real world applications
  • How to use the OpenLayers library in an application framework

Ideal for a student with:

  • Skills developing web applications
  • Experience with Ext JS or another similar library
  • A desire to learn about web mapping applications

Willing to Mentor:

  • Tim Schaub
  • David Bitner
  • Eric Lemoine
  • Lorenzo Becchi
  • Andreas Hocevar

Drag and Drop Mapping Widgets

Create a browser based application that will allow a user to create a mapping web page using drag-and-drop type and selection boxes to select widgets and data sources. The resulting web page could be deployed by itself, or embedded in a hosted portal service.

The application may make use of Mapbuilder's config.xml file which describes all XML models, widgets, and tools in a Mapbuilder HTML page. This project will complement the project Web-based Configuration using Mapbuilder.

The student will become familiar with:

  • AJAX software development
  • building Openlayers and Mapbuilder applications
  • XSL transformations
  • Model/View/Controller design pattern
  • Exposure to Open Geospatial Consortium Standards: Web Map Service (WMS), Web Feature Service (WFS), Catalog Service for Web (CSW), Keyhole Markup Language (KML), Style Layer Descriptor Language (SLD), Web Map Context (WMC). Also Upcoming Standards like Tile Cache, Open Web Services Context (OWC).
  • Exposure to standards like XML based Atom Feeds.

Willing to Mentor:

  • Cameron Shorter (LISAsoft)
  • Steven Ottens
  • Roald de Wit (will not be available for 1 month around June/July due to holidays)

Improved Editing Application

Editing GIS data usually means working with a schema, fixed attributes, etc. Additionally, users expect to simply be able to deploy an 'application' rather than needing to write a lot of custom code to deploy an editing interface. Create a generalized editing application which has support for reading from a schema (either via some remote request, or defined locally) to determine attributes, and using that schema to build a UI for editing the attributes of various features. The end result of this would be a product which is suitable for deployment against a specific remote-server with minimal configuration of application level setup: simply set up the server information, and possibly the schema (if the server can't deliver it) and no additional code is necessary.

This would teach the student about:

  • How OpenLayers works with remote data sources
  • How the vector editing tools need to interact with each other
  • How web-based editing happens via the specific protocol supported.

Willing to Mentor:

  • Christopher Schmidt
  • Tim Schaub

KML WYSIWYG

KML has essentially become the "HTML of the GeoWeb"... but unlike HTML, there are relatively few tools for crafting KML in a GUI-like interface. Unlike HTML, geographic information is hard to visualize as text, so a UI for building this information is even more important than in the case of HTML. Create an OpenLayers-based KML generation tool, which allows users to do something akin to WYSIWYG development of KML information, including styling, name/description fields, etc. The end result should be a KML file which can be serialized from the information -- this will most likely be a specialized KML serializer, built on top of Format.KML, with the additional serialization of styles, descriptions, etc. that might otherwise not be included in the KML.

This would teach the student about:

  • The KML Format and how it is used on the web
  • How the KML format is used in OpenLayers
  • How to build a UI for allowing user-centric development of interesting geographic-based information.

Willing to Mentor:

  • Christopher Schmidt
  • Roald de Wit (will not be available for 1 month around June/July due to holidays)

Style Editing

One of the biggest difficulties with developing cartography in open source tools is the lack of support for any tools to build cartographic styles. Web-based mapping is especially suffers in this regard, since web mapping typically requires significantly more cartographic development to support the many scales of visualization. One of the best ways to improve this is via in-browser cartographic development, using standards like SLD to describe styles, and then passing these styles up to a server for rendering. This project could be to build a browser-based styling engine to develop high-quality cartographic representations in a standards oriented way. It is likely that some level of vector-based rendering would be useful as a first pass, allowing the user of the application a highly interactive styling approach which can then be confirmed with a round trip to the server.

This would teach the student about:

  • The way that OpenLayers does styling of its vector features
  • Standards for generating style information (SLD)
  • The way to interact with remote servers to request styled layers
  • The aspects of styling which are important to users, and how to build a good UI around them.

Willing to Mentor:

  • Christopher Schmidt
  • Tim Schaub
  • Steven Ottens
  • Andreas Hocevar

Web-based Configuration

An application to develop a map based on the loading of layer information from remote data sources would allow for users who are not familiar with WMS, WFS, Catalogs, KML, WMC, OWS Context, Tile Cache Services, and similar standards to configure a map. Layers can be styled using a wizard to build a SLD document (to be written). The resulting map could be saved into various formats, including WMC, OWS Context, KML, etc. This would allow for more GIS-style usage, where a map is built based on a set of dialogs and choices based on a remote layer.

The student will likely build upon work from two projects

  1. The "OWS Manager" project by Lorenzo, and the "OLON" (OpenLayers Object Notation) for serializing and loading information into a map. http://trac.openlayers.org/wiki/Addins/OWSManager
  2. Mapbuilder extends Openlayers and uses browser based XSL (instead of loading into Javascript and manipulating the DOM). XSL is a powerful tool for converting XML documents from standards based services to HTML, or other XML based output formats. The Mapbuilder framework uses the classic Model/View/Controller design pattern, storing XML documents as a model. This design makes it easy to drive multiple widgets from a variety of different XML documents. The 1.5rc2 release of Mapbuilder (due end of March) contains an OWS Context builder which can load layers from WMS, WFS, WMC and some Catalogs.

Chris Holmes does a good job describing the use case to be addressed in his blog.

The student will become familiar with:

  • An excellent overview of Geospatial technologies, in particular, the Open Geospatial Consortium Standards: Web Map Service (WMS), Web Feature Service (WFS), Catalog Service for Web (CSW), Keyhole Markup Language (KML), Style Layer Descriptor Language (SLD), Web Map Context (WMC). Also Upcoming Standards like Tile Cache, Open Web Services Context (OWC).
  • Other standards like XML based Atom Feeds.
  • building Openlayers and Mapbuilder applications
  • AJAX software development
  • Ways of serializing information about OpenLayers state
  • XSL transformations
  • Model/View/Controller design pattern

Willing to Mentor:

  • Christopher Schmidt
  • Lorenzo Becchi (ominoverde)
  • Cameron Shorter (LISAsoft)
  • Steven Ottens
  • Roald de Wit (will not be available for 1 month around June/July due to holidays)

Library Improvements

Remote Data Management Improvements

Improve the way that OpenLayers interacts with remote datasources by writing code to abstract protocols away from the application level, allowing for the use of any number of different protocols for managing remote data.

Willing to Mentor:

  • Christopher Schmidt
  • Tim Schaub

Vector rendering improvements

Support for text in vector rendering? Support for vector symbols?

Good for a student who is interested in:

  • SVG / VML-based in-browser rendering
  • Improved support for in-browser vector visualization

Willing to Mentor:

  • Christopher Schmidt
  • Tim Schaub
  • Pierre Giraud
  • Andreas Hocevar

Improved Vector Feature Selection

Currently, we depend on browser-based DOM elements for feature selection. Due to technical limitations in browsers, this drastically limits our support for selecting features from multiple layers at once. Recently, support for determining intersecting features has been added, which can be used to improve our feature selection. Additionally, feature selection based on selecting an area, selecting features using modifiers (Shift, ctrl, etc.) and so on are beneficial. A student could add this support to OpenLayers to improve our general capabilities for interacting with layered vector features.

The student would:

  • Learn about the way that OpenLayers Control and event handling works
  • Add support for a new way of interacting with features
  • Solve a long-standing bug/feature request which has limited a number of deployments of OpenLayers

Willing to Mentor:

  • Christopher Schmidt
  • Tim Schaub
  • Eric Lemoine
  • Andreas Hocevar

Memory Management

Due to quirks in the way that browsers handle memory management, it is necessary in Javascript to carefully clean up references in Javascript to DOM objects and vice versa. Currently, OpenLayers has a framework for doing this, but the way it is done is not always sufficient to ensure that the memory leaks are properly cleaned up.

It should be possible, using tools like Drip, and other memory leak finding tools, to explore the different OpenLayers classes looking for memory leaks. It is likely that the end result of this would be to make OpenLayers more robust, and usable for longer sustainted periods of time.

The student would:

  • Get a good overview of OpenLayers coding practices without requiring too much in the way of understanding of Javascript ahead of time
  • Be developing a more robust baseline application profile for use of OpenLayers in a broader variety of situations.
  • End up with a good solid baseline knowledge of a wide swath of the OpenLayers codebase.

Willing to Mentor:

  • Christopher Schmidt
  • Tim Schaub
  • Erik Uzureau

Client Side Topological Operations

Develop a library for use with OpenLayers which supports client-side topological operations (Buffering, convex hull, centroid, simplification, etc.). This library would allow for more complex GIS-related tasks to be performed entirely in the browser. This would be an ideal project for a student who is more well versed in mathematical topological operations and interested in using them in a browser.

The student would learn:

  • How geometries are represented in OpenLayers
  • How to write Javascript code that acts on these geometries to perform topological operations.

Willing to Mentor:

  • Christopher Schmidt
  • Tim Schaub
  • Andreas Hocevar

Mentors

Mentors should have a strong knowledge of Javascript, sound knowledge of OpenLayers, and be interested in helping to teach a student the 'ropes' of OpenLayers development. Mentors should expect to spend an average of 5 hours per week mentoring a student for the duration of the summer of code period (late May to end of August).

  • Chris Schmidt
  • Attila Csipa
  • Tim Schaub
  • Erik Uzureau
  • Steven Ottens
  • Cameron Shorter
  • Eric Lemoine
  • Pierre Giraud
  • Roald de Wit (will not be available for 1 month around June/July due to holidays)
  • Andreas Hocevar
  • Sebastian Benthall

Projects with no specific mentors

The following projects don't have specific mentors associated with them, and may not be appropriate for Summer of Code applicants as is. The "questions" section should be answered before these are integrated back into the list.

OpenLayers iPhone Development

The iPhone SDK may present a way to create an OpenLayers-based native iPHone app which takes advantage of aspects of the iPhone like multitouch. With that in mind, it's possible that investigating OpenLayers development on this platform could be valuable, similar to the current 'native' Google Maps app.

Questions:

  • Is this really an OpenLayers thing, or an entirely seperate project?

Maps for Enterprise Applications

Create a Java framework which will use custom jsp tags to simplify the use of open layers in web applications, these tags will go to java through Ajax, based on a configurable value by Spring framework. This is an idea of how to make it simple for the developers creating web applications, since all they need to do is specify events in the tag and use them in small custom templates. JSP/JSF/Struts page will have TLD tags allowing you to place the tags within the page The tag will generate all javascripts for the map based on velocity templates. All the configuration, extent, WMS servers, etc is done through Spring framework.

The student would become familiar with:

  • How to plug Openlayers in his/her web application

Questions:

  • How is this directly "OpenLayers development"? We don't have anything like a place to put Java code at this time, and I don't anticipate changing that.

More information is given in Gallery http://trac.openlayers.org/wiki/Gallery under Back - end chapter.

Last modified 7 months ago Last modified on May 20, 2016 1:09:53 AM