There are many ways for anyone to help develop Project Wonder. It would be helpful to become familiar with the information in Getting the Wonder Source Code, Creating and Submitting an Acceptable Patch and Getting Started with Git. For more minute detail, you can keep up with the committers's progress moment by moment by subscribing to the Commit History RSS feed on GitHub.

Project Wonder is a large set of frameworks and example applications and utility applications. Project Wonder can be used with different versions of WebObjects. (What versions of Wonder are compatible with what versions of WebObjects?) Developers may be using different tool sets to edit their projects, including eclipse and Xcode. Contributors should keep all of this in mind as they make changes.

Please see this tutorial on importing the Project Wonder sources into your eclipse environment.

There are dependencies between the frameworks that make up Project Wonder that must be kept in mind while changes are being made.


We have done a webcast about how to contribute to Project Wonder by using Git, you can get the recording here

The "integration" branch

Starting February 17th 2011, we added a new "integration" branch in Project Wonder. This branch will include contributions from the community that will be added later in the "master" branch. Major changes, like new frameworks or big updates to existing code, will be added to this branch so that everyone can try it out and give feedback. After a couple of weeks, if nobody reports problems with changes in "integration", the changes will be pushed to "master".

Like the master branch, the integration branch is also build with Jenkins, you can find the artifacts on

WebObjects Version Differences

Since the move of Project Wonder to GitHub, the main branch ("master") is for WebObjects 5.4. If you use WebObjects 5.3, you have to use the Wonder_5_0_0_Legacy branch.

Naming Schemes

Project Wonder uses different name prefixes for different parts of the system. Prefixes include those in the list below. Note that there may be components and classes in very different parts of the system which do similar things. Code and resources are not necessarily organized by functionality, but may be organized by time of creation, by author, or by some other factor.

It is not always easy to find things. Ask the mailing list if you have questions.

Coding style

If you add new components into ERExtensions, please put your bindings into the WOD file. For other non-core frameworks and examples, you can use WOOgnl bindings.

If you are adding new code to Wonder, please use of the above prefix for your additions. If you don't know which one to use, go with "ER".

Some ground commit rules

Before EVERY commit, please make a diff and check if it's reasonable and then take care what you commit with which message.

Do NOT commit reformatted code, at the very least, do it in two steps, one for the reformat, one for the actual changes so one can see what is going on.

DO NOT commit changes in the d2wmodels when saved with RuleEditor. This should be obvious from the previous rule, but it's VITAL that these files are committed with one and one tool only.

You can do pretty much what you like in your own projects, but take EXTREME care in Frameworks/Core.

Formatting diffs

The burden is clearly on those who deliver patches to provide them in a way where you can actually see what has changed and to make these changes with minimal impact.
- Anjo Krank, 2011

Always messing up spacing and commiting spacing changes which upset everyone? With git, you can use

git diff -b <...>

When you generate any diff with -b, it will ignore spacing diffs. So then create a new branch (from master) and re-apply the diff. That way you'll only have real changes, not spacing ones.
Or just don't make formatting changes in the first place.
- Miguel Arroz, 2011

Git Branches of Project Wonder

One can see the different branches of the project by going to the GitHub branches page