[ullright] development workflow and philosophy

The "extreme programming" inspired development workflow for ullright: 

1) Preparation

Make sure you have a clean development environement before you start to work on a new task.

  • svn update to the latest version
  • php symfony doctrine:build --all --and-load --no-confirmation
  • php symfony cache:clear
  • Run php symfony test:all to check if all tests are green, so you're sure nothing is broken in the repository.

2) Write Automated Tests

Think about the task. What is the desired result? How can it be implemented?

Write or adapt automated tests for the desired result.


For changes in models and classes write unit tests.

For actions and frontend features write functional tests.


Run the written test. The tests will fail of course because you haven't coded yet.

Nevertheless this important to make sure the tests don't work by coincidence.


This will help you to focus on the desired result and how you will implement the solution.

More about our test environment: http://www.ullright.org/ullWiki/show/docid/162


3) Write Code

Now code the desired functionality piece by piece until all tests are green.


When you discover that you need to add or change some functionality in order to complete you task do it again as described in section 2.


4) Write and Update Documentation

  • Update the changelog if there is something to do manually with the customer installations
  • If you added or changed functionality that is relevant for the user write and update the documentation. 


5) Commit early, commit often

When you completed a task run all tests and commit into the subversion repository.


When it is a more complex task split it into parts and apply the process described in this document for every part.


It makes much sense to commit everytime a feature is stable and tested. This can be many times a day.

Commit at least once every day.

Why? Because it's much easier to track progress and to debug and roll back in case of errors.


Always run the complete test suite before committing to make sure your new feature has no sideefffects.



  •  Build the model and reload fixtures:
    • php symfony doctrine:build --all --and-load --no-confirmation
  • Clear the cache
    • php symfony cc
  • Run the test suite
    • php symfony test:all
  • Commit only if all tests are green. If there are failing tests you have to fix them first.
  • Remember to refresh the project in Eclipse ([F5]) before commiting, otherwise Eclipse may not be aware of some files generated on the command line.