- Kaolin Project Proposal
1. Kaolin Project Proposal
This is a draft version of the Kaolin proposal. Please use the Incubator general mailing list or the separate KaolinProposalDiscussion page to discuss this proposal. You can "Subscribe" this page to get notified whenever changes are made. See the proposal guide for a description of the expected proposal content.
Author: Antonio Petrelli <apetrelli AT apache DOT org>
Date: January 2008
Online version: http://wiki.apache.org/incubator/KaolinProposal
Status: .:: D R A F T ::.
1.1. Kaolin, a multi-channel framework Proposal
Kaolin is an Apache Tiles extension that delivers customized content for different users, devices or other criteria.
The Kaolin extension for Apache Tiles is capable of delivering different "aspects" of the same website. By recognizing the calling user and its devices, it organizes the pages using different layout, depending on the developers configuration.
This is especially useful for multi-channel websites, to allow a wider range of users to visit a site, by reducing the size of pages for smaller screens, or by showing certain page sections only if a user has sufficient credentials.
Kaolin is the new name of Dimensions, due to the fact that there is already a software called Dimensions.
Kaolin natural place is as an Apache Tiles extension, since it relies on Tiles' concepts, like "definition" and "DefinitionsFactory", and it cannot exist without Tiles.
The initial idea was to deliver different views for different client devices, leaving the same business logic and control. This way much of the development can be reused, changing only the "view" layer of the application.
In 2004 the ability of delivering different contents was extended not only on different calling devices, but also on different calling users role. This kind of capability is enabled by using configuration files, that maps all user roles/device crosspoints to a certain site layout.
The concept of a "dimension" arised: the user role was a dimension, while the device was the other. But this kind of concept can be extended infinitely, allowing to create a n-dimensional space in which each crosspoint is a website layout.
The name "Kaolin" came out when we needed to rename Dimensions: the kaolin is the main constituent of tiles (as in masonry) and colored as the need of the end customers.
Currently, when a Java EE website needs to be ported for other devices, it needed the creation of a new project, or at least a new section of the same project. This kind of procedure can lead to code repetition and lack of coherence.
Kaolin solves this problem by providing customized aspects for the same website: only the visible part of it will change (depending on the condition imposed by the developer), but the rest of it will remain the same, including the "controller" and "model" part of the application.
1.1.5. Initial Goals
The initial goals of the proposed project are:
- Include the Apache Software Foundation header in all source code.
- Viable community around the Kaolin codebase.
- Active relationships and possible cooperation with related projects and communities, especially those that include Apache Tiles support.
- Clean-up of the code, by following the Apache Tiles standard.
220.127.116.11. Current Status
All initial committers are familiar with the meritocracy principles of Apache, and have already worked on the various source codebases. We will follow the normal meritocracy rules also with other potential contributors.
Kaolin community will be, probably, Apache Tiles community, i.e. people that relies on the "Composite View" pattern in web applications. Kaolin will help this people to build multi-user web application easily.
Moreover, multi-device web application developers would benefit from the client device recognition facility of Kaolin. There are a number of similar targeted projects around the WWW that could help in creating a broader community, like WURFL and Milyn Tinak.
18.104.22.168.3. Core Developers
The initial set of developers comes from various backgrounds, as they are in Apache Tiles project, with different but compatible needs for the proposed project.
Kaolin will likely be widely used by various open source and commercial projects that have a dependency on Apache Tiles.
22.214.171.124. Known Risks
126.96.36.199.1. Orphaned products
There is a risk of making Kaolin an orphaned product, but most probably it will follow Apache Tiles steps. Since Tiles is widely adopted in Java EE applications, it is difficult that Kaolin will be abandoned.
188.8.131.52.2. Inexperience with open source
All the initial developers have worked and are PMC members of Apache Tiles.
184.108.40.206.3. Homogeneous developers
The initial developers come from a variety of backgrounds and with a variety of needs for the proposed extension.
220.127.116.11.4. Reliance on salaried developers
Kaolin does not rely on salaried developers.
18.104.22.168.5. Relationships with Other Apache Products
Kaolin is strongly related to Apache Tiles to the point that it should be a subproject of it.
Kaolin relies on Tiles' concepts, like "definition" and "DefinitionsFactory". Kaolin cannot exist without Tiles.
22.214.171.124.6. An Excessive Fascination with the Apache Brand
All of us are familiar with Apache and we have participated in Apache projects as contributors, committers, and PMC members. We feel that Apache Tiles is a natural home for a project like this.
The official documentation is hosted in a Sourceforge website: http://mutidimensions.sourceforge.net/
The CC/PP standard is used to recognize certain devices..
1.1.7. Initial Source
Kaolin will take all of his source code from Dimensions Sourceforge site. Due to the fact that there is an existing piece of software named Dimensions, Tiles developers decided to rename it to Kaolin.
1.1.8. Source and Intellectual Property Submission Plan
All source code is copyrighted by Aaron Roller, Free2Be LLC, Antonio Petrelli.
Aaron Roller wants to donate the code without further involvement in the the development but he has not filed a CLA yet.
Free2Be LLC changed its name to "MotionBased", and Aaron Roller is the sole owner and committer of the code.
1.1.9. External Dependencies
Kaolin depends on Apache Tiles and some Jakarta Commons libraries. The only dependency outside of Apache is DOM4J, that is BSD-style licensed.
Kaolin does not handle cryptography in any way.
1.1.11. Required Resources
126.96.36.199. mailing list(s)
During incubation, the Kaolin team could make use of the usual set of lists
- kaolin-user AT incubator DOT apache DOT org
- kaolin-dev AT incubator DOT apache DOT org
- kaolin-commits AT incubator DOT apache DOT org
until Kaolin really joins Apache Tiles.
188.8.131.52. Subversion repository
184.108.40.206. Issue Tracking
Kaolin (KAO) inside Struts JIRA instance, under the "Tiles Framework" category.
1.1.12. Initial Committers
- Antonio Petrelli: apetrelli at apache dot org
David H. DeWolf: ddewolf at apache dot org
- Greg Reddin: greddin at apache dot org
- Nathan Bubna: nbubna at apache dot org
220.127.116.11. Nominated Mentors
18.104.22.168. Sponsoring Entity
- Apache Tiles Project.