jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jukka Zitting" <jukka.zitt...@gmail.com>
Subject [VOTE] Approve the Sling project for incubation
Date Mon, 27 Aug 2007 16:47:44 GMT
Hi,

As recently discussed, the Sling project [1] is being proposed for
incubation at the Apache Incubator. See [2] for the full proposal
including all the initial committers and nominated mentors. A full
copy of the proposal is also included at the end of this message.

As described in [3], I'd like to call the Jackrabbit PMC to vote on
sponsoring the Sling project and approving it for incubation. The vote
is open for the next 72 hours and only votes from the Jackrabbit PMC
members are binding. The vote passes if the majority of binding votes
is positive.

Please cast your votes:

    [ ] +1 Approve the Sling project for incubation
    [ ] -1 Don't approve the project, because...

See [4] for more information on the Incubator policies, and [5] for a
detailed description of the role and responsibilities of a Sponsor.

[1] http://wiki.apache.org/jackrabbit/ApacheSling
[2] http://wiki.apache.org/jackrabbit/SlingProposal
[3] http://incubator.apache.org/incubation/Incubation_Policy.html#Entry+to+Incubation
[4] http://incubator.apache.org/incubation/Incubation_Policy.html
[5] http://incubator.apache.org/incubation/Roles_and_Responsibilities.html#Sponsor

BR,

Jukka Zitting

----------

Sling Proposal

Abstract

Sling is a framework to develop content centric web applications based
on the idea of modularizing the rendering of HTTP resources.

Proposal

Sling allows easy development of web application which are centered
around content which is acted upon. As such each request URL addresses
a Content object which in turn resolves to a Component, which finally
is responsible for handling the request and providing a response.
Though Content is a Java abstraction, the main source of data is a
Java Content Repository conforming to the JSR 170 API such as Apache
Jackrabbit.

Background

Sling came to live in an effort to rewrite the central request
processing engine of Day Communiqué 4.0 and make it available for
other applications requiring an easy to use and flexible web
application framework. As such, the guidelines to develop Sling can be
summarized as follows:

Modularization

Functional blocks of the processing engine should be split to enable
independent upgrade and replacement. At the same time some degree of
dependency management amongst the modules is required.

Runtime Management

Modules must enabled to be separatly started and stopped as well as
installed, upgraded and removed.

Components

Recognizing the need to componentize development of Web Applications
and have easy mix and match for such components to build web pages,
the basic building blocks of web pages are called components.

Content Repository

Leading the Java Content Repository (JCR) initiative a new request
processing engine must natively support JCR (e.g. Apache Jackrabbit)
as the store for its content.

By leveraging the OSGi core service platform specification the
modularization and runtime management goals can be more than met.
Sling is therefore built as a set of bundles. Additionally Sling
provides a standalone application launcher and a web application to
launch Apache Felix as its OSGi framework to deploy the Sling bundles
into.

Rationale

Content repositories, as defined in the Content Repository for Java
Technology API (JCR), are well suited to work as content stores of web
applications. However, the JCR API deals with generic Nodes and
Properties and not with business objects that would be more meaningful
to application developers. Therefore one of the building blocks of
Sling is the integration of a content mapping infrastructure, namely
Jackrabbit Object Content Mapping.

Another cause of regular headaches in current web application
frameworks is managing the life cycle of long-running applications:
Add new functionality, fix bugs, starting and stopping modules. This
is where the OSGi service platform comes into play. This specification
provides both help in the area of modularization and lifecycle
management (and more, actually) and definitions of services, so called
Compendium Services, which help concentrate on the core application
and not worry about issues such as logging, configuration management
etc. Sling uses Apache Felix as the OSGi framework.

Third, a request will generally not be handled by a single Component
but a series Components. The idea is that a request URL addresses a
Content object, which is mapped from a JCR Node and which is serviced
by a Component. The Component may then access child Content objects,
aka child nodes, and have Sling service those Content objects through
their Components again. Using this mechanism, each Component only
contributes to part of the final web page.

The advantage of this mechanism is, that Sling does not require tons
of templates or scripts to render different pages. Rather the
developer may provide a tool box of Components which may be
mix-and-matched as required. In addition this even allows for easy
content authoring.

In short, the main features of Sling may be summarized as follows:

    * Uses a JCR Repository as its data store
    * Uses Jackrabbit OCM to map Repository Items to Java Objects
    * Internally deals with Java Objects
    * Built as OSGi Bundles supporting any compliant OSGi framework
    * Provides integration into Apache Felix for launching and OSGi
services support
    * Componentized data model allowing flexible web application building
    * Based on standard Servlet API
    * Open to allow support for web application complying with REST
architectural style
    * Each Node for which a valid Jackrabbit OCM mapping exists may be
addressed by URL

Initial Goals

Establish Sling as the content centric web application framework for
JCR repositories. As such, it is intended for Sling to mature into a
subproject of Apache Jackrabbit.

Current Status

Meritocracy

We plan to do everything possible to encourage an environment that
supports a meritocracy.

Community

By proposing this project to the Incubator for inclusion as subproject
of Apache Jackrabbit we hope grow Sling into first class web
application framework which leverages the know-how of the Apache
community.

Core Developers

The project was founded be Felix Meschberger in late 2006 at Day.
Currently only Day employees work on this project, though this will
change as soon as we get a chance to invite more people to join this
effort. In fact the initial committer list already contains several
people not related to Day.

Alignment

Sling is targeted to be deployed into any compliant OSGi framework. To
support HTTP requests Sling interoperates with the OSGi ?HttpService.
This allows deployment of the framework inside a Servlet API compliant
servlet container given appropriate bridging or the framework may be
run as a standalone application, where an implementation of the OSGi
?HttpService handling the HTTP requests is deployed.

To access content addressed by URLs, Sling depends on any compliant
implementation of the JCR API, such as Jackrabbit, plus the Jackrabbit
Object Content Mapping.

Known Risks

Orphaned products

This is an active project within Day Software and will be the basis of
ongoing work of Day's own content management products, such as Digital
Asset Manager. In addition, it is foreseen, that Web services of
Jackrabbit may be ported to Sling.

Inexperience with Open Source

All committers have experience working on open source projects and
several are veterans at Apache.

Homogenous Developers

Sling is currently being developed only by Day employees, but we hope
that the framework will attract interest from other individuals and
companies.

Reliance on Salaried Developers

Most of the developers are paid by their employer to contribute to
this project, but given the anticipation from the Java community for
Sling the committers' sense of ownership for the code, the project
would continue without issue if no salaried developers contributed to
the project.

Relationships with Other Apache Products

    * Apache Jackrabbit
    * Apache Felix

A Excessive Fascination with the Apache Brand

Day actively contributes to Apache Jackrabbit and other Apache
projects, and the individuals behind the Sling project feel that an
Apache community would be the best environment for the codebase to
grow and attract new users and contributors.

Documentation

Initial Documentation is made available on the Jackrabbit Wiki pages
at http://wiki.apache.org/jackrabbit/ApacheSling.

Initial Source

Currently Sling is a closed source project. For this reason the source
can only be opened upon the acceptance of the project as an Apache
Incubator project by the IPMC. Upon the acceptance of the project and
submission of the Software Grant by Day, the source code will be
committed to the Apache SVN repository.

Source and Intellectual Property Submission Plan

The code base will be licensed to the ASF using a software grant from
Day, allowing Apache to relicense as pure Apache License 2.0 code.

External Dependencies

Besides depending on two Apache projects, namely Jackrabbit and Felix,
Sling depends on the OSGi API libraries, which are made available as
part of the Apache Felix project under the Apache License 2.0.

Cryptography

    * none

Required Resources

Mailing lists

    * sling-dev at incubator.apache dot org
    * sling-commits at incubator dot apache dot org
    * sling-private at incubator dot apache dot org

Subversion Directory

    * https://svn.apache.org/repos/asf/incubator/sling

Issue Tracking

    * JIRA Sling (SLING)

Java Packaging

    * All Sling classes live inside and below sling. It is foreseen to
root sling at org.apache such as to have all Sling classes at or below
org.apache.sling.

Other Resources

    * none

Initial Committers

    * Felix Meschberger (fmeschbe at apache dot org)
    * Carsten Ziegeler (cziegeler at apache dot org)
    * Bertrand Delacretaz (bdelacretaz at apache dot org)
    * Christophe Lombart (clombart at apache dot org)
    * Juan José Vázquez Delgado (juanjo dot vazquez at gmail dot com)
    * Karl Pauls (pauls at apache dot org)
    * Alexandru Popescu (apopescu at apache dot org)

Affiliations

Of the committers Felix, Carsten and Bertrand are tasked by Day to
work on Sling. All of them have a professional as well as an personal
interest to further develop this project. Neither of the other initial
committers is affiliated with Day in any way.

Sponsors

Champion

    * Jukka Zitting (jukka at apache dot org)

Nominated Mentors

    * Jukka Zitting (jukka at apache dot org)
    * Gianugo Rabellino (gianugo at apache dot org)
    * J Aaron Farr (farra at apache dot org)

Sponsoring Entity

    * Apache Jackrabbit PMC
Mime
View raw message