Skip to content

Contributing to Project Wonder

Pascal Robert edited this page Oct 5, 2013 · 5 revisions

Introduction

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.

Project Wonder is a large set of frameworks and example applications and utility applications. 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.

Webcast

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

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.

  • Ajax - Ajax-capable components and code
  • D2W - DirectToWeb, prefix inherited from WebObjects. May also be seen as "DTW".
  • Drew - 2 classes, author: Drew
  • DR - 14 classes - ??
  • EG - 2 files - ??
  • EO - EnterpriseObject, prefix inherited from WebObjects
  • ER - author: "eResource", a company that become NetStruxr and contributed lots of code
  • ERC - variation of ER?
  • ERD - variation of ER?
  • ERI - variation of ER?
  • ERX - variation of ER?
  • GC - Google Chart
  • GS - author: GammaStream Technologies, Inc.
  • IERX - Interfaces should start with
  • JS - JavaScript
  • JSON - JavaScript Object Notation
  • NEU - related to the "New" look in DirectToWeb
  • SC - SproutCore
  • Selenium - the testing tool
  • UJAC - Useful Java Application Components, see http://ujac.sourceforge.net/
  • WO - WebObjects, , prefix inherited from WebObjects
  • WR - WebObjects Reporting?
  • WX - WebObjects Extension?
  • YUI - Yahoo! User Interface, see http://developer.yahoo.com/yui

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".

  • You need to add a .gitignore file in the project so that the content of build/ and bin/ is not committed in Git (if you use eGit in Eclipse, right click on the build folder and select Team -> Ignore).

  • When adding a new project to Wonder, you need to add it to the Ant build files, in Build/build/build.xml (check the existing targets for examples). After you done that, build Wonder (ant examples) and check if your new app have been built like the other examples.

  • If your example is using a database, it should be set to H2 by default, so that people don't need something else to run it.

Some ground commit rules

  • DO small commits so that it can be easier to revert one of the commits if something went wrong in one of your changes.

  • Your contributions MUST be done in the integration branch, the reason being that we can check if it works with other changes, and won't break the stable (master) branch.

  • 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.