Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
{toc} h3. Introduction There are many ways for anyone to help develop Project Wonder. It would be helpful to become familiar with the information in [documentation:Getting the Wonder Source Code], [Creating and Submitting an Acceptable Patch] and [documentation: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|https://github.com/projectwonder/wonder/commits/master]. 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|documentation:Working with Wonder source in Eclipse] on importing the Project Wonder sources into your eclipse environment. There are [dependencies|Project WOnder Framework Dependencies] between the frameworks that make up Project Wonder that must be kept in mind while changes are being made. h3. Webcast We have done a webcast about how to contribute to Project Wonder by using Git, you can get the recording [here|http://www.wocommunity.org/podcasts/ContributingToProjectWonder.mov] h3. 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 [jenkins.wocommunity.org|http://jenkins.wocommunity.org/job/WonderIntegration/]. h4. Merging from integration to master Commits from integration to master are integrated each two weeks. We merge commits that are more than 30 days old from the integration branch. The merge is done in a release candidate branch, so that people can try the release candidate before we merge this branch into master. To Wonder committers: you need to do the following: * Create a new branch for the release candidate: _git checkout master; git checkout \-b rc-wonder-5.x.x_ * Check the Git history of the integration branch and note the last commit that is 30 days old (remember to check if a fix to that commit have been done days after\!) * Do a merge with the commit id of the previous step:&nbsp;_git merge \-s recursive \-Xpatience \-Xtheirs XXXXXX_ * Push the release candidate to GitHub: _git push origin rc-wonder-5.x.x_ A week after the release candidate branch have been done, you need to merge the RC into master. You also need to tag the merge with a "wonder-5.x.x" tag (don't forget to push the tag to GitHub). h3. 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. h3. 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. * IER - ?? * IERX - ?? * 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. h3. 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 You need something like this: {color:#222222}<target name="ERProjectName.all">{color} {color:#222222}&nbsp; &nbsp;<antcall target="global.application.${color}{build.action}{color:#222222}" >{color} {color:#222222}&nbsp; &nbsp; &nbsp; &nbsp;<param name="project.principal.class" value="er.projectname.Application" />{color} {color:#222222}&nbsp; &nbsp; &nbsp; &nbsp;<param name="{color}[project.name|http://project.name/]{color:#222222}" value="ERProjectName" />{color} {color:#222222}&nbsp; &nbsp; &nbsp; &nbsp;<param name="project.dir" value="Path/To/ERProjectName.all" />{color} {color:#222222}&nbsp; &nbsp; &nbsp; &nbsp;<param name="wo.system.root.bundles" value="${color}{frameworks.system.core}{color:#222222}" />{color} {color:#222222}&nbsp; &nbsp; &nbsp; &nbsp;<param name="wo.external.root.bundles" value="${color}{frameworks.wonder.core}{color:#222222}/ERProjectName" />{color} {color:#222222}&nbsp; </antcall>{color} {color:#222222}</target>{color} And in the examples.all target (<target name="examples.all", near the end of the file), add ERProjectName.all 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. h5. 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. h5. Formatting diffs {quote} 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?? {quote} {quote} Always _messing_ up spacing and commiting spacing changes which _upset_ everyone? With git, you can _use_ {code}git diff -b <...>{code} 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?? {quote} h3. Git Branches of Project Wonder One can see the different branches of the project by going to the [GitHub branches page|https://github.com/projectwonder/wonder/branches]
Wiki Markup
Info

This page is now on GitHub