The ourfaces project is intended to be a casual, yet very useful repository of JavaServer Faces components. I say casual because we want have a low barrier to entry for adding new components to the repository. The project leader, Matthias Unverzagt, has made it very easy to get started as a contributor, in four simple steps. Of course, if it's easy to be a contributor, it's even easier to be a user.

If you look at http://www.jsfcentral.com/you'll see there are at least ten different entries for JavaServer Faces component libraries, and most of them are not dollar cost free, nor are they free software. I feel it is important to have a high quality, open source, dollar cost free component library for Faces, and the OurFaces project intends to be just that.

Let's take a look at how the project is structured. We've made the project easy to access by building the component catalog in an easy-to-deploy WAR file during the standard build process. This enables you to explore the runtime performance of the components. The source tree is broken down as follows.

ourfaces/

  licenses/ 

    Any licenses that apply to this project go here

  src/

    <component>/

      Where <component> is one of the components in the catalog.
      Currently, we have calendar, code, tree, and table.

        catalog/

          Any artifacts relating to displaying this component in the
          catalog.  These are user-level artifacts, not core component
          artifacts.

            java/

              Java code for displaying the component in the catalog

            web/

               Any non-java code artifacts for displaying the component
               in the catalog.  This includes skinability, sample HTML,
               CSS, XML config files, etc.

        owner.xml

          The XML file that declares the owner of this component.  The
          owner is responsible for everything in this component,
          including its display in the catalog.  

        taglibrary/

          The java code that makes up the UIComponent subclass,
          (optional) Renderer, and UIComponentTag subclass.


    code/

      Any supporting code relating to the display of the catalog

    platform/

      Any supporting code used by the components.

This framework allows the component library to accept contributions from arbitrary parties, while allowing each party to own their components in the repository. As you can see, we currently only have three components, so we're eager to accept more contributors. We hope that becoming a member of the java-enterprise community will give us more visibility.

Please feel free to read and post on the discussion forum!