Continuous Collaboration with Mingle, SVN, Email and Wiki – Part 1 (Forming)


Agile has been around for sometime now. Most use it as a buzz word, not benefiting from its core principles people maturity and and need to extreme communication. This development life cycle is initiated by developers essentially. Think about it. All that CMMi gives you, is a top bottom approach. And since the acceptance of the young generation to agile is just so high, CMMi has to give way. So they just “accept” what you say, and today CMMi is just a certificate with very less value with the young generation.

Obviously just like PMI, CMMi is struggling to prove its point today. That processes are important and if not done the CMMi or PMI way, will fall flat. The fact remains that organizations with PMI and CMMi are falling flat. They no longer do the amount of software development they use to. They now focus their business on “servicing” software products already developed. Basically they could not keep up with the pace. Not their fault in my opinion, just that the pace is too fast for anyone to keep up.

It needs you to think that you are “worthless”, and start studying again. Pick up your database book, design patterns book and programming language book and start writing some code, debuggers, watch’s. Get your head out of excel sheets, ppts and mpp’s :). It is when you dont get your head out and start studying, you realize that you cannot keep up with the pace. And start believing that without CMMi and PMI projects cannot run. Until you get a rude wake up call by a young engineer (but considering the youngsters today, I dont think they care about wasting their time with you). So guys/gals wake up. Get your head out, and into the right things.

So what has this got to do with Continuous Collaboration. Well, everything.

The above was a wake up call for you to realize that today running projects is about collaboration. As a manager if you frequently think, “if the Iteration Manager/Business Analyst will do this, what will I do”, its time for you to wake up (read the first few para’s).

You have to do some real contribution. Martin Flower says it. Write some code (gain respect of your fellow’s). Create a framework that can replace and refactor some dirty code. Reproduce some bugs, play with the interim builds of the product and give valuable feedback. Dont need your tech leads to sit thru all meetings to give feedback to UX. In other words do some real contribution. Ask relevant questions, effectively communicating with lesser words and more diagrams. Do some tech talks. Show them that analytical ability only increases with time and age, and not the other way around.

SVN for developers (avoid all svn Error: 155005 Error: 150002 Error: 200009 Error: 155007)


This blog will help you “prevent” all the svn shit you and your team have been going thru.
– As a developer I care for coding, a tool is to help me make things easier. svn helps, but has its own pitfalls. I have managed to find a organized way of doing things that help me keep things clean.
– As a manager, I cant let my dev’s fall into the trap of svn issues.

You and me both know that a troublesome svn commit can kill your evening. Right ?

So I’ll try to explain and go into detail of every step explaining “why” too, but you dont have to understand why. Just follow the steps and you should be fine.

Create 3 directories (checkout, wip and bb)
wip stands for work in progress, you knew that.. didn’t u..
bb stands for buddy build

1) You use “svn checkout” to get your project from the svn server.
2) Now dont start work, copy these files to your “wip” directory. Do all that you want to here.
3) When you are ready to checkin, create a subdirectory in your bb directory. May be call it YYYYMMDD. In this directory create wip and checkout directory.
4) copy stuff from the wip directory to your bb/YYYYMMDD/wip directory
5) in your checkout directory, run a “svn update” so that you get the latest from svn
6) copy the project from your checkout directory to your bb/YYYYMMDD/checkout directory
7) Now, open a directory compare tool, meld, araxis merge or beyond compare. On the left keep your bb/YYYYMMDD/checkout directory and on the right keep you bb/YYYYMMDD/wip directory
8) Move only “files” from your right to left, DO NOT move directories. Delete files in your checkout directory if need be
9) Copy your bb/YYYYMMDD/checkout directory to your checkout directory and overwrite your checkout folder
10) Build the bb/YYYYMMDD/checkout directory to ensure that you dont mess up the build.
11) in your checkout directory do a ‘svn status’.

This is where the fun starts
For every ? do a svn add file/directory name
For every ! do a svn delete file/directory name

12) Do a ‘svn status’ again unless you get a M, A or a D against all the files (MAD). If you have a MAD, then you are ready for commit.
13) ‘svn commit -m “your message”‘. It will work :).

Now, why create so many directories.
– checkout is obvious, you want to get the latest and best from svn folder
– wip is obvious, you want to work somewhere, with no worries to get screwed by a svn update
– bb, is not obvious, a file/folder compare can screw up very easily. If you move a file from left to right instead of right to left, you are screwed. you can loose all your changes in your wip folder.
– why step 9, you ask, since you dont want to check in .class files and .obj files right ?
– why only copy files and NOT directories. Since svn maintains the state of your file/directories in a hidden folder .svn. If you copy directories, you can overwrite your checkout folder and mess things up.

More details for the people who want to know about the svn commands.
svn checkout – will check out the files from the project.
Here you will edit your source files, unit test to ensure that u have all covered. By now you have 3 things to worry about.
1) Someone else make checkins to the same project you are working on.
2) Someone made changes to your source files
3) You may break them, or they may break you.

svn status – will check the status of your files. Ideally you should just have a M, A or a D before each file name. M, meaning modified file, A meaning this file was added to your directory and D, meaning a file was deleted.

svn status -u – will do that sanity check for you. It will return a list of files with the result of the sanity test. The character denotes the status of the file you have checked out.
U means the server has a more later checkin of the file, from the last time you checkedout/updated the local working repository
G means that svn can automatically merge the files (the changes are in different parts of the source code)
C There are conflicts, same part of the code has been modified by a different dev on the svn server. This needs to be merged manually.

(CVS guys please note : cvs update does both status and update of svn, so get used to using status and update separately on svn).

For every file labelled C on the svn status output, 3 files will be created .mine (file before editing), .rold (file after editing), .rnew (updated file from svn server)

One more change is made, to your original source file. Markers are added to your orignial code to identify what code was yours and what has come from the svn server.

To Merge you have the following options
– Manually edit the source file, since you can search the markers, you can identify and play around with the code.
– Use a graphical tool like kdiff3 source.cpp.mine source.cpp.rnew -o source.cpp
– Use tkdiff -conflict source.cpp
– Junk the changes, you dont want changes from the svn server :), svn revert source.cpp

Hope I have kept it simple for you to understand and play round with.

Twiki Server Setup – Yup!! Its a dream…


Now, why do you think I am crazy. Just because I want to expore the option of running my own collaboration suite for my miniproject ?

For a min, lets imagine that you are working with me on a project. And all you need a link to go thru the requirements and designs. Once you are rampedup, you can get started with code. Yes, I will have all user stories on the wiki :).

So now, I have the same scenario as my svn server. Once I configure the svn server, I will start on the twiki. Will that be fun or what 🙂