incubator-general mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexandru Popescu ☀" <>
Subject Re: [Proposal] Sling
Date Wed, 08 Aug 2007 14:03:23 GMT
Very interesting initiative Felix! Still, I am wondering why this
would not start as a Jackrabbit contrib project, and I don't think I
have seen this in the attached proposal.


.w( the_mindstorm )p.

On 8/8/07, Felix Meschberger <> wrote:
> Hi all,
> I would like to propose a new Apache project named Sling. The proposal
> text is attached to this message and can also be found at [1].
> More information on Sling may be found in the Jackrabbit Wiki at [2].
> I would like to have the discussion on this proposal to go on in
> parallel in the Jackrabbit Developers and Incubator General mailing
> lists to gather as much feedback as possible. The vote for submission of
> the project will be held on the Jackrabbit Developers list.
> Of course we still welcome people willing to contribute to Sling or
> merely serve as additional mentors.
> Regards
> Felix
> [1]
> [2]
> Sling Proposal
> ==============
> This is a draft version of a proposal to take the ApacheSling to the
> Apache Incubator with a goal of becoming an Apache Jackrabbit
> subproject. Discuss this proposal on the Jackrabbit Dev List. See the
> proposal guide for a description of the expected proposal content.
> 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
> 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
>       *
> 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
> 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)
>       * ... More to be invited ...
> 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)
> Sponsoring Entity
>       * Apache Jackrabbit PMC (vote needed)

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message