Brian Leathem

4 minute read

RichFaces

I am excited to announce the release of RichFaces 5.0.0.Alpha1. While RichFaces 5.0.0.Alpha1 is an incredibly significant release (with almost all aspects of the framework seeing some changes) the release is in fact functionally equivalent to RichFaces 4.3.2.Final. So go ahead an try it out, and give us your feedback!

To try out this release: You can download the distribution directly, or for maven users, increment the RichFaces version in your pom.xml to 5.0.0.Alpha1. For more information on setting up a RichFaces 5 application, refer to our getting started guide.

Release highlights

The primary goals for RichFaces 5.0.0.Alpha1 were as follows:

Read a summary of each of these changes below, with links to blogs containing additional details.

Re-structure the build

The original design goal of the RichFaces 4 build was to enable partial builds of the framework to reduce the developer turnaround time in developing new components. While this breaking apart of the build into pieces was an attractive idea on paper, it didn’t work out that well in practice. The cost of assembling the partial build artifacts into the distributed framework was too high, and the various partial builds turned out to be more inter-dependent than expected.

With the 4.3.0.Final release of the RichFaces CDK we introduced an incremental build feature that removed the need for these partial builds. With this incremental build we could now build the framework in a piecewise manner, without requiring the framework to be segmented into partial builds. This led us to re-engineer the build based on current requirements and use cases, and was one of the primary motivating factors for RichFaces 5.

The end result is a build structure now contained within a single repository that is easier for both newcomers and seasoned RichFaces developers to grok. We hope this will encourage more community members to dive into the source code and contribute to the success of the framework. Should you still need to work with the RichFaces 4 source, it is available in the separate RichFaces 4 GitHub "organization"

Blog Read more about the motivation and implementation of the new build in the RichFaces Build Re-Structure blog post.

Collapse the rich: and a4j: namespaces

As you may know, the current RichFaces framework is built from the old Ajax4Jsf project, and the original RichFaces component set. This distinction of the libraries has been preserved in the RichFaces framework with the use of the rich: and a4j: namespaces. However this distinction has blurred over time, and has unfortunately become a barrier to adoption for new RichFaces users.

In RichFaces 5, starting with this Alpha1 release, we are collapsing the namespaces into the single r: namespace. This will ease adoption for new developers, and allow for a more intuitive tooling experience within your IDE.

Blog Read more about the namespace change, and how to automate the migration of your own applications to use the the new namespace in the Namespace section of the Build Re-Structure blog.

The RichFaces 5 Showcase has been updated to reflect the simplified showcase.

Framework distribution simplification

Incorporating RichFaces into your applications is easier with RichFaces 5. We now distribute a single richfaces.jar. No more separate API/UI/Impl jars, and no more BOM! If you are using maven, simply add the RichFaces jar to your project as in:

<dependency>
    <groupId>org.richfaces</groupId>
    <artifactId>richfaces</artifactId>
    <version>5.0.0.Alpha1</version>
</dependency>

Improvements to testing

Testing has always been a primary concern of the RichFaces project. In RichFaces 5 we have taken our testing efforts to the next level with the incorporation of the Arquillian Graphene and Arquillian Warp extensions.

Blog Read how RichFaces uses these tools to provide real, automated and fast tests for our framework.

Blog Read how you can use these tools yourself to test your JSF applications with this blog series on testing JSF.

Move to asciidoc for our documentation

Last but not least I’ll mention the improvements we’ve made to our documentation workflow. Docs for RichFaces have always been a big part of the project. However we recently started to notice we had a large barrier for doc contributions that were anything more substantial than minor edits and small additions. This was due to the manual/direct editing of the Docbook XML source. XML is simply not conducive to an efficient authorship workflow.

In RichFaces 5.0.0.Alpha1 we have incorporated AsciiDoc into the top of our existing Docbook tool-chain. This has dramatically improved our documentation contribution workflow without compromising any flexibility nor expressibility. The RichFaces 5 docs are already quite more accessible than the RichFaces 4 ones, and we’ve only just begun to re-vamp the content.

Blog Read more about our move to AsciiDoc in this blog post RichFaces moves to AsciiDoc.

Next Steps

With these high-impact (yet mundane) changes behind us, we are excited to move forward with RichFaces 5 development. We’ve already started laying out our RichFaces 5.0.0.Alpha2 sprints as we execute on our RichFaces 5 Road Map. Next up is LESS/Bootstrap integration, and incorporation of our standalone javascript widgets.