incubator-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Incubator Wiki] Update of "JuneauProposal" by JamesBognar
Date Thu, 02 Jun 2016 18:05:57 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Incubator Wiki" for change notification.

The "JuneauProposal" page has been changed by JamesBognar:
https://wiki.apache.org/incubator/JuneauProposal?action=diff&rev1=1&rev2=2

+ = Juneau Toolkit =
  
+ == Abstract ==
  
- =Juneau Toolkit=
+ Apache Juneau is a toolkit for marshalling POJOs to a wide variety of content types using
a common framework, and for creating sophisticated self-document REST interfaces and microservices
using VERY little code. 
  
- ==Abstract==
+ == Proposal ==
  
- ==Proposal==
+ An external website has been set up to point to existing libraries and documentation:
+ https://sites.google.com/site/apachejuneau/
  
- ==Background==
+ Juneau consists of 4 components:  '''Core''', '''Server''', '''Client''', and '''Microservice'''.
+  * '''Core'''
+   * Simple, flexible, all-in-one API for serializing/parsing Java POJOs to JSON, XML, HTML,
URL-Encoding, UON, RDF/XML, RDF/XML-ABBREV, N3, Turtle, N-Tuple, XML-Schema, JSON-schema,
and Cognos-XML.
+   * Serialize/parse structured documents using beans, or unstructured free-form documents
using generic Maps and Collections.
+   * DTO objects for creating ATOM feeds, Cognos, and JSON-schema in any supported languages
(e.g ATOM in JSON or RDF).
+   * Serializers have many options for tweaking output (e.g. whitespace options, XML namespace
options, strict/non-strict syntax, etc...)
+   * Sophisticated JSON parsing support.  Supports ALL valid JSON.  It also supports Javascript-style
comments, single or double quoting, quoted (strict) or unquoted (non-strict) attributes, JSON
fragments (e.g JSON string, numeric, boolean values), and concatenated strings.
+   * Sophisticated API for reading and manipulating configuration INI files using POJOs.

+  * '''Server'''
+   * Build complex REST interfaces using annotations and servlets.
+   * Automatic parsing of POJOs from HTTP bodies, form posts, query parameters, URL variables,
request attributes, headers, etc...
+   * Automatic serializing of POJOs to HTTP responses.
+   * Automatic error handling.
+   * Automatic self-documenting OPTIONs pages.
+   * Support for guards, filters, etc...
+   * Simple internationalization support.
+   * JAX-RS integration support.
+  * '''Client'''
+   * Simple REST Client API for interacting with REST services using POJOs.  Built on top
of Apache HTTP Client.
+   * Ability to retrieve POJO proxies that use REST as the communcations protocol.
+  * '''Microservice'''
+   * Build self-contained REST interfaces as executable jars.
+   * Built on top of embedded Jetty and configured through either external INI config files
or manifest files.
  
- ==Rationale==
+ == Background ==
  
- ==Initial Goals==
+ 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.  
  
- ==Current Status==
+ It gained traction as a reusable toolkit for existing projects to create self-documenting
REST interfaces using their existing POJOs.
  
- ===Meritocracy===
+ == Rationale ==
  
- ===Community===
+ 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.  
  
- ===Core Developers===
+ == Initial Goals ==
  
- ===Alignment===
+ The goals of Juneau include:
+  * Simplicity!  The ability to create complex REST interfaces in as little code as possible.
 Let the developers deal with POJOs and let the framework handle the details of marshalling
those POJOs.  
+  * Discoverability!  Users should be able to navigate through and figure out how to use
a REST interface through the use of auto-generated OPTIONs pages.
+  * Customizability!  Lots of easy-to-understand configurable options throughout the framework.
+  * Performance!  Lots of work has been done to optimize the marshalling framework for use
in high-concurrency environments.  POJOs are marshalled directly without the use of intermediate
DOM objects.
+  * No code generation or code scanning.  Code generators are great until they break and
nobody knows how to fix them.
+  * No configuration or setup for using.  Simply include the library in your existing code
and start using.  Packaged as either an all-in-one jar or as OSGi bundles.
+  * Mimimal dependence on any 3rd party libraries.  See prereqs below.
+  * Always up-to-date information by using Javadocs for documentation.  The Javadoc overview
document provides an overview of the toolkit with links to detailed package-level topics.
  
- ==Known Risks==
+ == Current Status ==
  
+ 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. 
- ===Orphaned products===
- ===Inexperience with Open Source===
- ===Homogenous Developers===
- ===Reliance on Salaried Developers===
- ===Relationships with Other Apache Products===
- ===A Excessive Fascination with the Apache Brand===
  
- ==Documentation==
+ The codebase is mature and tested.  The code and documentation is up-to-date.  It includes
3000+ JUnit testcases.  
  
- ==Initial Source==
+ === Meritocracy ===
  
- ==Source and Intellectual Property Submission Plan==
+ Juneau was originally created by James Bognar 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.
  
- ==External Dependencies==
+ === Community ===
  
- ==Cryptography==
+ Juneau created a strong following over the years as an IBM Community Source project with
20+ community members.  
  
+ 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
- ==Required Resources==
- ===Mailing lists===
- ===Subversion Directory===
- ===Git Repository===
- ===Issue Tracking===
- ===Other Resources===
  
+ === Core Developers ===
- ==Initial Committers==
- ==Affiliations==
  
+ Initially, there are two developers leading this effort:
+  * James Bognar - james.bognar@salesforce.com
+  * Peter Haumer - phaumer@us.ibm.com
- ==Sponsors==
- ===Champion===
- ===Nominated Mentors===
- ===Sponsoring Entity===
  
+ It's anticipated that this list of core developers will grow to include several existing
community members from IBM.
  
+ === Alignment ===
  
+ Juneau contains dependencies on the following projects:
+  * Apache Jena
+  * Apache !HttpServer
  
+ == Known Risks ==
  
+ === Orphaned products ===
  
+ 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.    
  
+ === Inexperience with Open Source ===
  
+ 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.
  
+ === Homogenous Developers ===
+ 
+ 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.
+ 
+ === Reliance on Salaried Developers ===
+ 
+ It's expected that development will occur primarily on volunteer time as it has in the past.
+ 
+ === Relationships with Other Apache Products ===
+ 
+ Juneau contains dependencies on the following projects:
+  * Apache Jena
+  * Apache !HttpServer
+ 
+ === A Excessive Fascination with the Apache Brand ===
+ 
+ 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.  
+ 
+ == Documentation ==
+ 
+ Links to documentation can be found here:  https://sites.google.com/site/apachejuneau/links
+ 
+ == Initial Source ==
+ 
+ A GitHub repository has been set up for managing the source code:  https://github.com/jamesbognar/juneau
+ 
+ == Source and Intellectual Property Submission Plan ==
+ 
+ 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.
+ 
+ == External Dependencies ==
+ 
+ The dependences all have Apache compatible licenses.
+ 
+ == Cryptography ==
+ 
+ Juneau contains no cryptographic resources.
+ 
+ == Required Resources ==
+ 
+ === Mailing lists ===
+ 
+ === Subversion Directory ===
+ 
+ Not used.
+ 
+ === Git Repository ===
+ 
+ https://github.com/jamesbognar/juneau
+ 
+ === Issue Tracking ===
+ 
+ T.B.D - Probably JIRA?
+ 
+ === Other Resources ===
+ 
+ N/A
+ 
+ == Initial Committers ==
+ 
+ T.B.D
+ 
+ == Affiliations ==
+ 
+ T.B.D
+ 
+ == Sponsors ==
+ 
+ T.B.D
+ 
+ === Champion ===
+ 
+ T.B.D
+ 
+ === Nominated Mentors ===
+ 
+ T.B.D
+ 
+ === Sponsoring Entity ===
+ 
+ T.B.D
+ 

---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@incubator.apache.org
For additional commands, e-mail: cvs-help@incubator.apache.org


Mime
View raw message