Hi,

I recently authored an article for Java Developerâs Journal where I
describe a set of reusable components for web application personalization.
I found these components to be very useful, and I thought it will be
beneficial to create a new Jakarta Commons package for personalization
components. The design and the code presented in the article can be
enhanced to add functionality and make these components more powerful.
Please take a look at the enclosed proposal and let me know what you think.
I added a link to the JDJ article (Section (2) of the proposal) for your
reference.

Regards,
Daniel Vlad

Proposal for a new Commons Personalization package

(0)  rationale

Personalization is a major requirement for many web applications, yet most
developers still implement these requirements by intermixing
personalization logic with application code and even hard-coding
personalization requirements directly in JSP.
Most of the personalization solutions in the industry target Portlet
development, and they are not appropriate for standalone web applications.
A set of lightweight, framework-independent, reusable personalization
components can provide significant benefits to application development:
-  decouple personalization-related code from the rest of the application,
thus simplifying the application maintenance.
-  centralize the management of the personalization rules, ensuring
application consistency.
-  simplify web application development by shifting the complex task of web
application personalization from Java developers to Web page authors.
-  improve the performance of the application by caching the outcomes of
the personalization decisions.


(1)  scope of the package

The package will create a set of reusable components to decouple
personalization rules from the rest of the application logic and to
centralize the management of these rules.
Personalization rules will be defined and configured in an XML
configuration file. An application will invoke these components either
programmatically or through JSP tags.
Web pages will be personalized by using custom JSP tags that evaluate
personalization rules and decide what personalized content to be displayed
to various users.


(1.5)  interaction with other packages

The package will use the following external packages:
Commons Digester - to parse the personalization XML file
Commons Logging - for logging

(2)  identify the initial source for the package

The initial codebase will be contributed by Daniel H. Vlad, and it is based
on the article "Personalize Your Web Applications", authored by Daniel and
published as a Cover Story in Java Developerâs Journal, December 2004,
pages 34-40.

Article URL: http://www.sys-con.com/story/?storyid=47357&DE=1
Pdf download: http://pdf.sys-con.com/Java/JDJDecember2004.pdf

The code base from the JDJ article will be re-designed and enhanced to:
-  add content rules, rules that dynamically decide the content that should
be displayed to users. This can be accomplished, for example, by
categorizing users in groups using grouping criteria and mapping these user
groups on content items using an XML mapping file.
-  add caching to improve performance.

(2.1)  identify the base name for the package
org.apache.commons.personalization
(2.2)  identify the coding conventions for this package
Sun coding conventions

(3)  identify any Jakarta-Commons resources to be created
(3.1)  mailing list
Until traffic justifies, the package will use the Jakarta-Commons list for
communications.
(3.2)  CVS repositories
For the time being, the package will use a root branch of the
Jakarta-Commons CVS.
(3.3)  Bugzilla
The package should be listed as a component of under the Jakarta-Commons
Bugzilla entry.

(4)  identify the initial set of committers to be listed in the Status
File.
Daniel H. Vlad
other committers

Reply via email to