OGNL

Abstract

The following proposal is about Apache OGNL, a Java development framework for Object-Graph Navigation Language, plus other extras such as list projection and selection and lambda expressions.

Proposal

OGNL started out as a way to set up associations between UI components and controllers using property names. As the desire for more complicated associations grew, Drew Davidson created what he called KVCL, for Key-Value Coding Language, egged on by Luke Blanshard. Luke then reimplemented the language using ANTLR, came up with the new name, and, egged on by Drew, filled it out to its current state. Later on Luke again reimplemented the language using JavaCC. Further maintenance on all the code is done by Drew (with spiritual guidance from Luke). Today OGNL is maintained by Lukasz Lenart.

Background

OGNL is a long living project born in the 1997 thanks to Drew Davidson initial effort, moved under the OpenSymphony umbrella in June 2005 or thereabouts, then moved on its own domain on ognl.org that's no more maintained, then finally found place on GitHub, maintained by Lukasz Lenart.

Rationale

OGNL stands for Object Graph Navigation Language. It is an expression and binding language for getting and setting properties of Java objects. Normally the same expression is used for both getting and setting the value of a property.

Many people have asked exactly what OGNL is good for. Several of the uses to which OGNL has been applied are:

Most of what you can do in Java is possible in OGNL, plus other extras such as list projection and selection and lambda expressions.

Current Status

Meritocracy

As a majority of the initial project members are existing ASF committers, we recognize the desirability of running the project as a meritocracy. We are eager to engage other members of the community and operate to the standard of meritocracy that Apache emphasizes; we believe this is the most effective method of growing our community and enabling widespread adoption.

Core Developers

In alphabetical order:

Alignment

The purpose of the project is to develop and maintain OGNL implementation that can be used by other Apache projects.

Known Risks

Orphaned Products

Being OGNL widely adopted we believe there is minimal risks of this work becoming non-strategic and the contributors are confident that a larger community will form within the project in a relatively short space of time.

Moreover, OGNL has been already used by the following projects for years:

Inexperience with Open Source

All of the committers have experience working in one or more open source projects inside and outside ASF.

Homogeneous Developers

The list of initial committers are geographically distributed across the USA and Europe with no one company being associated with a majority of the developers. Many of these initial developers are experienced Apache committers already and all are experienced with working in distributed development communities.

Reliance on Salaried Developers

To the best of our knowledge, none of the initial committers are being paid to develop code for this project.

Relationships with Other Apache Products

A number of existing ASF projects already benefit from OGNL implementation, including Apache Struts, Apache Tapestry, Apache Tiles and Apache Camel. It is hoped that members of those projects will be interested in contributing to and adopting this implementation.

A Excessive Fascination with the Apache Brand

OGNL fits naturally in the ASF because :

Documentation

  1. The original OGNL HomePage

  2. The OGNL Language Guide

  3. The OGNL Developer Guide

Initial Source

The intial source comprises code developed on GitHub contributed under Grant from Marc A. Davidson for OGNL.

Source and Intellectual Property Submission Plan

Source code will be moved from GitHub space inside the SVN space of the podling.

External Dependencies

Currently OGNL depends on Javassist, that's released under dual license MPL (the license under which javassist is usually distributed) and LGPL2.1 (the license under which javassist is distributed when it is bundled with JBoss). Since MPL is one of Reciprocal Licenses, we intend to respect the Javassist inclusion under conditions described on that page.

Cryptography

The project does not handle cryptography in any way.

Required Resources

Initial Committers

Names of initial committers - in alphabetical order - with affiliation and current ASF status:

Sponsors

Champion

Nominated Mentors

Sponsoring Entity

Other interested people (in alphabetical order)

OGNLProposal (last edited 2011-04-23 10:44:51 by SimoneTripodi)