FINAL
This proposal is now complete and has been submitted for a VOTE.
Apache Juneau is a toolkit for marshalling POJOs to a wide variety of content types using a common framework, and for creating sophisticated self-documenting REST interfaces and microservices using VERY little code.
An external website has been set up to point to existing libraries and documentation: https://sites.google.com/site/apachejuneau/
Juneau consists of 4 components: Core, Server, Client, and Microservice.
Juneau has been in use for years on over 50 projects throughout IBM. Recently it was hosted as a component of Jazz Foundation where it was used by several projects that make up Rational Collaborative Lifecycle Management. Many projects use only the marshalling framework, while others use the entire API to create sophisticated REST server/client interfaces.
It started life as an IBM Community Source (internal open source) project called "JJSON", a POJO JSON marshalling library. It was later renamed "Juno" due to existing use of the name.
Between 2008-2012, the project was used by many IBM projects and was at times the 2nd-most popular community source project in IBM.
In 2012, the project was merged into Jazz Foundation, but it also remained as a separate IBM Community Source project. The "main" stream was in Jazz Foundation, and the streams would periodically be synced to produce standalone releases for non-Jazz products.
In April 2016, the lead developer left IBM to join Salesforce. IBM agreed to make it an open source project so that development on it could continue.
Peter Haumer is the IBM liaison in this endeavor. He will be handling the legal aspects of this contribution. He uses Juneau in multiple projects and has an interest in seeing development continue. He has plans on enhancing the RDF support.
Currently, there is no common framework for marshalling POJOs in a consistent fashion to a variety of content types. Having a single common API for serializers and parsers allows for a REST API that's considerably simpler than similar frameworks such as JAX-RS.
The use of a common infrastructure for marshalling has many advantages. Enhancements can often be made in the core framework without having to modify the serializers and parsers. And an exhaustive set of JUnit testcases ensure that POJOs are represented in a consistent way when represented in any of those content types.
Combining the marshalling framework with an annotation-based REST API produces a framework that allows developers to create REST interfaces using POJOs without having to deal with complexities of proper handling of Accept and Content-Type headers on HTTP requests and responses. The result is a REST interface that can automatically parse requests into POJOs and serialize POJOs in responses in any of the supported languages.
The goals of Juneau include:
Juneau currently exists under the code name "Juno" within Jazz Foundation and is actively used in many business units throughout IBM and throughout the world. This project is an attempt to convert that code base into an open source library. "Juneau" is a fork from this existing codebase that will be maintained and hosted in a separate GitHub repository.
The codebase is mature and tested. The code and documentation is up-to-date. It includes 3000+ JUnit testcases that ensure that POJOs are represented consistently across all supported content types.
Juneau was originally created by James Bognar, team lead in Jazz Foundation, in 2007 as part of Rational Asset Analyzer as a tool for converting POJOs to JSON. Later, it grew as a superior replacement to Restlet for creating REST interfaces. Then in 2012, it was merged into Jazz Foundation as the preferred framework for creating REST interfaces in Jazz-based products.
Juneau created a strong following over the years as an IBM Community Source project.
Slack has been used heavily by this community within IBM. A new Slack community has been set up as a transition for this community: https://juneau-cloud.slack.com
Juneau was started as an internal IBM Community Source project with a diverse set of community members from around the world.
The initial list of core developers started from that community and have an interest in seeing it opened up as an open source project outside of IBM.
Juneau contains dependencies on the following projects:
Most of the development of the project has been done by James Bognar. Much work has been done by this developer to make this a consumable library, and so there is a desire to continue it's development.
This reliance on a single developer is a known issue that we hope to remediate.
The initial developers are very familiar with the use of existing open source products in commercial products and working on projects within the Eclipse community.
This is the first time the developers have submitted and worked on an Apache open source project.
The two initial developers span two different companies: Salesforce and IBM.
We highly anticipate that the list of developers will quickly grow to include existing community members located in places such as China and India.
It's expected that development will occur primarily on volunteer time as it has in the past.
Juneau contains dependencies on the following projects:
Our interest in submitting this as an Apache-branded product is mostly due to its existing co-dependence on other Apache-branded products.
We plan on making this an open-source project regardless of whether it makes it out of incubator stage.
Links to all documentation: https://sites.google.com/site/apachejuneau/links
Javadocs: https://juno-cloud-api-javadocs.mybluemix.net/index.html
Overview: https://juno-cloud-api-javadocs.mybluemix.net/overview-summary.html#TOP
Release Notes: https://juno-cloud-api-javadocs.mybluemix.net/overview-summary.html#ReleaseNotes
The source code is currently located in a Rational Team Concert source code repository internally in IBM.
IBM legal has given approval for making this project available as an Apache-branded product. Peter Haumer will handle requests for more information.
All source code will be made available under the Apache V2 license.
The dependences all have Apache compatible licenses.
Juneau contains no cryptographic resources.
private@juneau.incubator.apache.org dev@juneau.incubator.apache.org
Not used.
Source code: https://git-wip-us.apache.org/repos/asf/incubator-juneau.git
Site code: https://git-wip-us.apache.org/repos/asf/incubator-juneau-site.git
JIRA Juneau
None.
John D Ament - (johndament at apache dot org)
John D Ament - (johndament at apache dot org)
Jochen Wiedmann - (jochen at apache dot org)
Craig L Russell - (craig dot russell at oracle dot com)
Stian Soiland-Reyes - (stain at apache dot org)
We request that the Incubator PMC sponsors this project