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:

  • A binding language between GUI elements (textfield, combobox, etc.) to model objects. Transformations are made easier by OGNL's TypeConverter mechanism to convert values from one type to another (String to numeric types, for example).
  • A data source language to map between table columns and a Swing TableModel.
  • A binding language between web components and the underlying model objects (Web{{`OGNL, Tapestry, Web}}Work, Web`Objects).
  • A more expressive replacement for the property-getting language used by the Apache Commons BeanUtils package or JSTL's EL (which only allow simple property navigation and rudimentary indexed properties).

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:

  • Antonio Petrelli <apetrelli at apache dot org>
  • Christian Grobmeier <grobmeier at apache dot org>
  • Jesse Kuhnert <jkuhnert at apache dot org>
  • Jochen Wiedmann <jochen at apache dot org>
  • Lukasz Lenart <lukaszlenart at apache dot org>
  • Olivier Lamy <olamy at apache dot org>
  • Marc Andrew Davidson <drewd at apple dot com>
  • Maurizio Cucchiara <mcucchiara at apache dot org>
  • Simone Tripodi <simonetripodi at apache dot org>
  • Upayavira <upayavira at apache dot org>

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:

  • Apache Struts;
  • Apache Tapestry;
  • Apache Camel;
  • Apache Tiles;
  • MyBatis (formerly Apache iBATIS);
  • Spring WebFlow.

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 :

  • It is already adopted by ASF Projects;
  • It is a key component on which many other projects can depend on.

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:

  • Antonio Petrelli <apetrelli at apache dot org> (PMC Member)
  • Christian Grobmeier <grobmeier at apache dot org> (ASF Member)
  • Jesse Kuhnert <jkuhnert at apache dot org> (PMC Member)
  • Jochen Wiedmann <jochen at apache dot org> (PMC Member)
  • Lukasz Lenart <lukaszlenart at apache dot org> (ASF Member)
  • Olivier Lamy <olamy at apache dot org> (ASF Member)
  • Marc Andrew Davidson <drewd at apple dot com> (ICLA signed)
  • Maurizio Cucchiara <mcucchiara at apache dot org> (Committer)
  • Simone Tripodi <simonetripodi at apache dot org> (PMC Member)
  • Upayavira <upayavira at apache dot org> (ASF Member)

Sponsors

Champion

  • Lukasz Lenart

Nominated Mentors

  • Christian Grobmeier <grobmeier at apache dot org>
  • Jochen Wiedmann <jochen at apache dot org>
  • Olivier Lamy <olamy at apache dot org>
  • Upayavira <upayavira at apache dot org>

Sponsoring Entity

Other interested people (in alphabetical order)

  • Dave Newton <davelnewton at gmail dot com>
  • Nuwan Arambage <nuwan dot arambage at gmail dot com>
  • Tiger Gui <tigergui1990 at gmail dot com>
  • Xun Long Gui <ustbcoder at gmail dot com> (already worked on Commons SCXML on Sandbox for GSoC 2010)
  • No labels