Login / Status
developer.Resource
Home . Documentation . Document Library . Extension Manuals
Sponsors
hosted by punkt.deTYPO3 and Open Source MagazineAOE Media

1.6. Development Workflow

Who works on further development?

At the moment (May 2008) there are three persons involved in the active development of this extension. We're looking for others to help us on working on this extension. If you'd like to contribute, please read the section “Helping out” in this document.

Oliver Klee

The inventor of this extension who is the chief developer. Oliver keeps track of the road map, the global direction of the extension and provides the most new functionality and bug fixes.

Mario Rimann

Joined the team in October 2005 and is involved in writing documentation, providing bug fixes and developing new functionality. Recently he has also coordinated the translation work with several translators.

Niels Pardon

Joined the team in December 2006 and is involved in creating and planning the new back-end module. He also provides bug fixes and helps out where help is needed.

The developers mailing list and wiki

We have a page in the TYPO3 wiki for storing texts, drafts and other stuff.

We use the mailing list/newsgroup on lists.netfielders.de for talking about development.

Changing or customizing the extension

If you want to change the extension itself, it is highly recommended to contact the developers and contribute your changes back to the project. This has several advantages:

  1. You can still get further updates of the extension without having to apply your changes again.

  2. The extension developers can help you integrate your code better with the other parts of the extension.

  3. Other users of the extension can benefit from your contributions.

Getting the extension from Subversion

To always have the latest and greatest version of this extension for development, you can either download the nightly builds from http://typo3xdev.sourceforge.net/ or retrieve the files from the SourceForge.net Subversion (SVN). These are the access parameters as entered in Eclipse/Subclipse/Subversive:

Connection type

https

User

your SF.net user name (only needed if you want to commit any changes)

Password

your SF.net password (only needed if you want to commit any changes)

Host

typo3xdev.svn.sourceforge.net

Repository Path

/svnroot/typo3xdev/

Module name

tx_seminars (check out only the “trunk” folder for the latest sources)

Note: The nightly builds and the code from SVN might still contain severe bugs, break your fridge or make your cat lose all its hair. Use them at your own risk. You have been warned.

Code statistics

We generate statistic reports on our work on a daily base. These reports are generated using StatSVN and are available at http://rimann.org/index.php?id=110.

Workflow description

The development process looks roughly like the process on Mozilla.org and aims at creating high-quality code and facilitating learning from other coders.

  1. Make sure to always use the latest code and documentation from SVN.

  2. Look in the bug tracker if your specific bug or feature request already has been reported. If this is not the case, enter a new bug report/feature request.

  3. Set yourself as the bug's assignee to show you'd like to work on this bug. At this point, the bug status still is NEW.

  4. Assign the bug yourself when you've actually started to work on this bug. This will change the bug's status to ASSIGNED.

  5. Use a test-first approach: When you add a new function or change a function, first write some unit tests that fail as long as the bug is not fixed and that pass when the bug is fixed.

  6. Write the necessary code and test it locally (in addition to the unit tests). Make sure it works and doesn't generate any warnings or errors.

  7. Create a patch. Make sure to read it yourself first. Then attach it to the bug report. Check “patch”, set “review” to “?” and select “Seminar Manager QA” in the drop-down list next to the question mark.

  8. The reviewer might give you a review- and list the things that need to be changed. In that case, go back to the previous step and create a new patch.

  9. Or the reviewer might grant you the review, giving you a review+ (possibly listing some things that need to be changed bug that don't require a new review).

  10. If you have the review+, you can update and commit to SVN. Never check in code that has not been reviewed yet! In the check-in comment, write the number of the bug report, what the patch changes and who has reviewed your patch. It is also possible that the reviewer checks the code in.Example: [Bug 1840] Create an extension icon, r/a=Oliver

  11. Resolve the bug report as FIXED.

Notice: To commit files to the SVN, you need a SourceForge.net account to get write access (please e-mail your user name to Oliver so he can arrange things). If other members of the development team will check your patches in, you don't need an SourceForge.net account.

Please don't change the Manual in SVN (as SVN doesn't allow merging changes in binary files) unless you have explicitly been allowed to do so. If you're allowed to change the manual, please make sure to SVN lock it before you start editing it.

Code style guidelines

This extension follows the following code style guidelines:

We then have added a few modifications, additions and clarifications:

  1. Use UTF-8 and Unix line endings.

  2. Remove all trailing spaces and trailing tabs.

  3. Don't use end-line comments.

  4. Lines must not be longer than 80 characters. This also includes comments and documentation comments (also for @param and @return). The only exception are include_once statements (which should be on one line, overriding the 80-character rule) and the declarations of unit tests. Concerning line wrapping, have a look at the line-wrapping guidelines.

  5. Use early returns only for guard clauses and only if they greatly improve readability.

  6. Don't use @var.

  7. Functions that return void don't need to have a return statement.

  8. File names are allowed to be longer than 31 characters.

  9. Use strict camelCase for function and variable names. Good: createIndex, readIsoImage. Bad: create_index, readISOImage.

  10. Private and protected function and variable names must not begin with an underscore.

  11. Don’t add blank lines after { or before }.

  12. Don’t check in commented-out code to SVN. If you absolutely need to do so anyway, you must include a comment (including a reference to a bug) stating when this code can be removed or reactivated.

  13. Sentences in comments (including @param and @return) should either be

    1. incomplete sentences that start lowercase and don’t have a full stop at the end, or

    2. complete sentences that have a capital letter at the start and a full stop at the end.

  14. Comments should be written in the third person (or in the first person in some cases).

  1. We already require PHP5 and don't need to be PHP4-compliant anymore. So please use type hinting, exceptions and access modifiers like public or private and don't use @access anymore. Also use public/private/protected instead of var for member variables.

Strategy when a checkin causes a regression

Generally, regressions should be avoided by using unit tests. As some parts of the code are not covered by unit tests (or some cases are not covered yet), regressions might be undetected by the existing unit tests. Those regressions then need to be fixed and covered by unit tests. We have agreed on the following strategy for this:

  1. If there have not been any checkins after the checkin that has caused the regressions, we will directly revert the checkin. We then need a fixed version of the patch (including unit tests for the regression). Otherwise:

  2. If a developer can fix the problem within 48 hours (including unit tests for the regression), we will do that. Otherwise:

  3. If we can reverse-apply the patch that has caused the problem within 48 hours, we will do that. We then need a fixed patch. Otherwise:

  4. If all else fails, we will just do our best to fix the problem as fast as possible.

Release checklist

The following points are checked before a new version is released. This workflow is started as soon as all open to-do items for the upcoming version are done. Responsible for this is the chief developer (Oliver Klee).

  1. Remove completed tasks from the “Known Problems” part of this manual.

  2. Enter the release date for the current milestone in the changelog.

  3. Check the Extension Manager if there are no warnings.

  4. Generate a new ext_emconf.php (updating the MD5 hashes for all files).

  5. Upload the extension to the TER.

  6. Check in the actual ext_emconf.php to the SVN (comment: new version).

  7. Create an SVN tag.

  8. If this is a major release:

    1. Create an SVN branch.

    2. Enter the next milestone in the bug tracker.

    3. Change the version number in ext_emconf.php to x.y.99 and check in the changes to the trunk (not the branch!).

    4. Move maintenance bugs to the next maintenance version.

    5. remove the old upgrade notes in the trunk manual and new notes for the next version

  9. Enter the new (upcoming) version into changelog.txt.

  10. Enter the just-released version in the bug tracker.

  11. Important: Wait until the new version appears in the TER (this may take some time).

  12. Update the extension on the translation server (Mario)

  13. Inform the persons that are known users of this extension and persons that were in contact with the development team (concerning this extension).

  14. Spread the official announcement to the newsgroup.

  15. Do a party :-)

Used tools

We use (mostly) the following tools to work on this extension:

  1. Eclipse with PhpEclipse, Aptana and Subclipse (editor and SVN client)

  2. Browsers: Firefox and Camino

  3. The GIMP (image manipulation software)

  4. BugZilla (the system behind the bug tracker)

  5. Sourceforge.net (SVN)

  6. StatSVN (for statistics on the SVN repository)