In the past weeks 52°North has updated the licenses of two projects to facilitate their usage by switching over to a non-copyleft license. The project 52n-commons-xml was switched completely to the Apache Software License Version 2.0. The internal API and dependent code from the 52°North WPS project was also moved to the Apache 2.0 license. The implementation of this API, however remains under GPL v2. We hope this will allow more users to integrate our work into their architectures and source code projects. Below is a short description of why and how we did this.
Three source code modules of the WPS, 52n-wps-algorithm, 52n-wps-commons and 52n-wps-io, are all you need to extend the WPS by adding custom Java algorithms, parsers or generators. To stress this fact and to ease the creation of new WPS components for different applications, we changed the license of these three modules to the Apache Software License 2.0.
Regarding the source code and license management, let’s take a look at some technical details. The modules are still part of the WPS project, which in general keeps the GPL 2 license. The modules have their own LICENSE file and the containing source files have their own license headers. The headers are checked against a separate template. The instructions for this are specified in the pom files of the modules and leverage Maven plugins for license and NOTICE-file management:
<plugin> <groupId>com.mycila</groupId> <artifactId>license-maven-plugin</artifactId> <configuration> <header>../misc/licenses/license_header_for_api_modules.txt</header> </configuration> </plugin> <plugin> <groupId>org.jasig.maven</groupId> <artifactId>maven-notice-plugin</artifactId> <executions> <execution> <id>check-licenses</id> <phase /> </execution> </executions> </plugin>
The modules are also the basis of a separate project, called WPS-Extension-Skeleton. This Maven project contains all dependencies needed to create custom algorithms, parsers or generators and therefore is the perfect starting point for your own Java algorithms. It is available at GitHub under the Apache Software License 2.0. There are a number of Geoprocessing tutorials available to show you how to extend the WPS.
XML Schema Bindings
The 52n-commons-xml library is a set of OGC schema libraries for Java. These libraries provides an easy integration of documents and workflows defined by OGC, since a Java developer can work with Java classes to generate, parse, and validate standardized XML documents.
The OGC publishes the outcome of its standardization process as official service interface standards, best practices, and discussion papers. These schemas become available as a formularized set of XML schemas. The 52n-commons-xml libraries can be used for client and server development within the OGC domain (see some of them below). With the release of version 2.0.0, we decided to publish the XML binding modules under Apache Software License 2.0 (a business friendly open source license) and hope that others also find them useful for integrating the OGC layer in their applications.
The 52n-commons-xml project provides a multi module Maven setup to compile the XML schemas via XmlBeans to Java libraries so that standardized XML documents can be easily constructed and validated. However, using the libraries does not require you to build the libraries from source: When an application has been setup as Maven project, you can add the needed bindings as a Maven dependency! See how easy it can be:
<dependency> <groupId>org.n52.sensorweb</groupId> <artifactId>52n-xml-sos-v20</artifactId> <version>2.0.0</version> </dependency>
The XML bindings have been published to the public Maven central, i.e. they are directly available without including 3rd party repositories.
You can find the source code on our GitHub repository.
52°North uses these libraries in a number of projects:
- and a lot more …
Please let us know what you think about this! We are also curious about what projects (will) use the XML bindings as well, so do not hesitate to comment below or subscribe to our mailinglist(s) directly.