Built with Seam

You can find the full source code for this website in the Seam package in the directory /examples/wiki. It is licensed under the LGPL.

If you have been named a module lead, you can follow this document to get your module's infrastructure setup.


A module's infrastructure consists of:

You will need to work with the Seam project leads to get these established. However, to create a module, first need commit access.

Commit access

The first thing you need to gain commit access to Seam is an invitation from the Seam project lead. We will reach out to you when we feel it's time. Assuming you have received the invite, you will need to become a JBoss contributor.

To become a JBoss contributor, you need to:

Once that it done, the Seam project lead will need to approve it. To request commit access to the Seam repository:

  • email your username and github username to the Seam project lead
This process is described from the perspective of the module lead on the page Setting Up a New Committer.

With that out of the way, it's time to setup your module's infrastructure, starting with the SCM source root.

SCM source root

Seam currently uses Git as the source code management tool. Even though you are a committer, you will still use your own account to commit changes. Once the changes are ready, you will send a pull request to have the Seam integration manager merge them into master. Here is the documentation for the pull request process on

The Seam administrators will setup the master repository for your module.

If you want pull-request merge notifications (so that when you merge someones pull request they get an email) add as a Post Receive URL hook on github's admin page for your repository (or ask a project admin to do it).

Source layout and build

Please see the Module Anatomy page for instructions on how to structure the module project and setup the build.

JIRA project

Each module has it's own JIRA project to track issues. The process is to email Shane or Rodney, cc'ing the seam-dev list, requesting a project is created. You need to include:

  • the key of the project (e.g. SEAM{MODULE})
  • the user friendly name of the project
  • the username of the project lead
  • the username of the project lead
  • a description of the project
  • a list of any additional project adminstrators (the project lead and the full time team will automatically be made adminstrators)
  • a seed list of project developers
  • any components (i.e., categories) you want to start with

Here is an example for the JMS module that you can use as a template:

Friendly Name: Seam JMS
Lead ( & username): Jordan Ganoff (jganoff)
Project URL:
Additional Project Administrators ( username): Dan Allen (dan.j.allen)
JIRA Components: Injection, Event Forwarding
Developers ( usernames): Jordan Ganoff (jganoff)

The project should be configured as follows:

Issue Type Scheme: Seam Issue Type Scheme
Notification Scheme: Seam
Field Configuration Scheme: Seam Field Configuration Scheme
Workflow Scheme: Seam Workflow Scheme v2
Project Category: c) Programming Model

It should also use the orange Seam logo (instead of the blue one).

After the project is created, it should appear in the list of projects that you can administer.

Each JIRA project should have at least the following set of components (categories) in which issues can be filed:

  • Build Infrastructure
  • Compliance
  • Documentation
  • Test Suite

You should create additional components for each major subdivision of the API. If the module is small, you can simply use Core API and Core Implementation components.

See the Seam Faces and Solder projects for examples.

Hudson build

The final step to setting up your project is to create a Hudson build. You'll need three jobs:

  • Continuous integration
  • Artifact snapshot publishing
  • Documentation snapshot publishing

First, create a JIRA in your module's issue tracker for setting up these jobs. Then coordinate with Seam QE to have the work completed.

In order for the documentation snapshot to work, you'll need to get someone with access to to create the following directory:


Hudson sends out emails if a commit you make causes the build to fail. If you work for Red Hat, your email address is set up automatically. If you don't, and you do commit to Weld or Seam, please could you send Shane your username, and the email address you would like these emails to go to so he can check that you have the correct details entered into Hudson.

Module page

Each module should have a page that provides the mission statement, a list of developers and contributors, a description, a roadmap and design notes. It's your module's start page or dashboard. In the beginning, it's mostly design notes and a rough overview. As the module matures, it tightens up, includes some getting started references (or snippets), etc. I do feel that there should always be a little whiteboard at the bottom to host emerging ideas.

It's okay if each module's page develops it's own unique style, though the pages shouldn't be too divergent. We don't want to shock the user, but we don't want to look cookie cutter either.

But we have to begin with something, so here's a template you can use to get started:

Creating the module page template is a bit tricky. Follow these steps to create it:

  1. Go to the main Seam 3 page
  2. Click on Browse in the Controls panel (below the navigation)
  3. Click Create subdirectory
  4. Name the directory {Short name} Module, where {Short name} is the short name of the module (e.g., Faces)
  5. Enter the description Seam 3 {Short name} module
  6. Save
  7. Click Close Workspace in the Controls panel
  8. Click New Document in the Controls panel
  9. Name the document {Short name} Module Overview
  10. Uncheck Render name as document title
  11. Enter in progress... in the document
  12. Save
  13. Click Close Workspace in the Controls panel
  14. Go back to Browse mode
  15. Click on Edit Directory in the Controls panel
  16. Select the overview page as the default document
  17. Save
  18. Go to Status page
  19. Click Edit in the Controls panel
  20. Add a line for your module to the Modules table
  21. Save

Now populate the overview page with the content from the Module Page Template and customize to your module. Don't forget to remove the sentence This document is the template you should follow...

We also recommend these settings for the overview page:

  • Edit > Properties - Uncheck Enable comments
  • Add the tag Seam 3
  • Admin Options > Footer - [<=hideCreatorHistory]