Friday, September 7, 2007

Source Code Experimental Branches and Agile Development

In any agile development project there is a need for experimental branches. An experimental branch is where you put code that you do not want to check into main/trunk for various reasons:

- You do not want to affect the trunk in any way
- The code will probably go away at some point in the future
- It is used for a spike and you want to preserve the code
- It allows developers working on a spike to easily share the code
- A developer want to preserve some code for a while or needs to stop working on a feature. The feature might not be ready for trunk yet, but the work so far must be preserved.


Normally, an experimental branch only lives for the time of the spike or otherwise. A decision is made to either destroy it or possibly merge to trunk after discussion.
Branches in our source code control system should be cheap and fast to create (unlike CVS). Normally, the developer would create the branch with a name something "spike_name_experimental_1", so all developers have the capability to create and destroy these types of branches.
This type of branch is standard in the industry, just search on "SVN experimental branch" on Google.
Of course, the QA/release team would only create the production/release branches and strictly control access to them per normal corporate policy.

Wednesday, September 5, 2007

Web Development Tools

Some of my favorite Web Development Tools