Proposal: Roller 4.0 release
(proposals should start with name Proposal)
Status | Proposal under development |
Target Release | 4.0 |
Original Authors | Dave Johnson |
Abstract
This is a proposal to make a Roller 4.0 release, a major new release to introduce some infrastructure improvements and upgrades that we've been wanting to make for a long time. This includes a new data-mappper back-end with a JPA implementation, Struts 2 support and a requirement for Java SE 5.
Requirements
There are four requirements: upgrade Struts, add JPA back-end, remove Hibernate-native back-end and require Java SE 5. Here are the details:
- Introduce data-mapper based back-end with JPA implementation. Introduce a new back-end implementation based on a data mapper architecture, which is designed to support multiple back-end implementations, and a new Java Persistence Architecture (JPA) implementation of those interfaces. The JPA back-end exists and is passing 100% of our JUnit "business" tests.
Major release to modernize infrastructure with Java 5, JPA and Struts 2. Also includes new theme management and easy-install features.
Requirements
Upgrade dependencies, switch to new back-end, improve blog customization and introduce other new features.
- Introduce new ASF-license-compatible persistence framework. Replace our existing Hibernate based Roller back-end with one based on Apache OpenJPA. Drop Hibernate from the Roller distribution (but keep it in SVN until everybody has transitioned away from it)Remove Hibernate-native back-end. Now that we have a JPA based back-end, we can drop our Hibernate-native support thereby removing any dependence on LGPL from Roller code. If folks want to continue using Hibernate, they can either stick with Roller 3.0 or use Hibernate's JPA API support.
- Upgrade to Struts 2. The Roller UI needs significant improvement and modernization . It's clunky in places and does not and by upgrading to Struts 2 if will be easier for us to meet the higher standards that are expected of "Web 2.0" web applications. But we don't want to do additional UI work with Struts 1.x. We're tired of Struts 1.x pain and those of us who have looked at Struts 2 believe it's very good upgrade and are ready to make the move. We can add Struts 2 support to Roller, keep our existing Struts 1.x code in place and migrate portions of the UI as needed (this proposal does not yet include any UI rewrites, just the addition of Struts 2). Upgrading to Struts 2 does not preclude use of JSF in Roller because it's possible to use JSF pages and components in a Struts 2 application.
- Introduce requirement for Java SE 5. We've been stuck on Java 1.4.2 for a long time now, there are significant improvements in Java SE 5 and the libraries that we depend on are starting to take advantage of those improvements (i.e. Struts annotations and ROME)
Issues
Issues to be considered
- Which JPA implementation should we ship with Roller 4.0? We've been doing all of our work with the Glassfish/Toplink implementation, so that's probably the best choice.
Design
...
Design
- New JPA based backend follows same design as old Hibernate backend
- New Struts 2 UI architecture is summarize in Allen's Struts2 Migration guide
- See individual proposals for design information.
Proposals implemented
- Proposal_ThemeEncapsulation - Better encapsulation and modularization for themes.
- Proposal Individual Templates By Action Support a way to define individual or separate template files for various weblog page actions
- Proposal_TemplateEditorEnhancements - Improvements to usability and functionality of Preferences->Templates pages
- Proposal Stylesheet Overrides for Weblogs - a way to allow weblogs to do stylesheet customizations without having to customize their theme and hack the templates
- Proposal Easy Install - Making it really easy to install Roller, targets 4.0
- Proposal_FeedHistory - Add Atom-friendly feed-history (paging) support to our feeds.
- Proposal_SearchFeeds - Add support to generate feeds from search results.
- Proposal Account Activation via Email - Add support for registration via email (patch from Sedat Çiftçi)
- Proposal Introduce DI with Guice - Use Guice to implement Dependency Injection (DI) in Roller to make the back-end more modular, flexible and testable.
Comments
Please comment on the Roller-dev mailing list.