Project Management and Revision Control

I quite like trac and use it for “managing” (for well defined values of managing) the various projects I work on (I’m currently using subversion for version control and so trac makes logical sense as it was designed to work with subversion, although other version control backends are now supported).

Recently a former student at Warwick, Peter Ellis, gave an interesting talk on managing projects based upon his experience working in industry. During his talk he alluded to liking the bazaar revision control system. Bazaar is a distributed system, as opposed to subversion and the older cvs systems which rely on a central repository.

Personally I could not see the advantage of distributed versioning over centralised and could not get my head past the idea the distributed versioning would result in a horrendous mess of different version distributed all over the place which were completely out of sync.

Seeking further enlightenment, I spoke to some of my peers at Warwick who were using a distributed versioning system for the project they were working on. They pointed out that as the version control is distributed every checkout is in effect also a repository. This allows the same work flow to occur offline as online with all of the changes to the repositoy pushed upstream when it is more convinient (i.e. an internet connecting is available). As a result many changesets can be applied to the local repository, which is desirable when multiple major alterations are being made to a project. With subversion this would not be possible without a connection to the central server due to its concept of a single ‘Working copy’ when offline.

The only downside I see to switching to bazaar (or a similer versioning system) is that my use of trac’s bug tracking/milestone management and wiki, negate the benefits as I have to have an internet connection to use them. While I could live without the Wiki as I can just store text files inside the repository with the same contents (in fact the wiki was initially populated from text files containing various ideas I’d had, when I started using trac) I cannot do without the bug tracking and milestone management.

Looking around on the internet I found a couple of promising looking bug tracking systems designed to be used with distributed revision control systems, such as Bugs Everywhere and artifacts. Tracker for ruby also looked quite nice, until I realised it was using SQLlite which, although it stores its data in a single file on the filesystem, uses a binary format which is unlikely to place nice with most (if not all) versioning systems. Both Bugs Everywhere and artifacts are written in Python. I was unable to get Bugs Everywhere to run under Windows, and artifacts seems to run but spaffs out a lot of warnings if not being run within a darcs repository.

As a result I am sorely tempted to write my own bug/milestone tracking system in Perl (using only standard libraries, nothing from cpan, so it should just-work™ on most systems with Perl out-of-the-box™). The obvious criteria (besides just-working™) being a text-based storage method such that adding/removing & updateing bugs is easilly diff-able (for the revision control system), completely usable offline, allowing the grouping of bugs for milestones and reasonably attractive to use (whilst being command-line driven and avoiding the use of ncurses for the purpose of compatiblity, see below). Ideally the fields (priority/summary/milestone etc) would not be pre-defined so the user can create what is needed depending on the project (e.g. in an personal project ‘assigned to’ would be completely redundant as there is only one developer, me).

Whilst it would be nice to use BASH(and associated “standard” unix utilities) to write this, I think this would be a bad idea for two reasons 1. It does not solve the not working on Windows problem (I’m completely side-stepping cygwin here on the grounds that my laptop, which is my primary development machine, has ActivePerl installed for my third year project, but not cygwin under Windows) and 2. I can forsee this getting quite complex should I wish to add more nifty features (a stand-alone webserver for a web-interface would be nifty(if somewhat excessive!), for example) as which point BASH may prove insufficient and the project ends up depending on BASH and Perl whereas I might as well have chosen Perl in the first place and only have one dependancy.

Of course, even starting this project depends on me getting sufficiently far ahead with my third year project to set aside a day or two to write most of the code. The whole idea may end up on my stack of nifty projects that never get properly started, along with all the other projects I’ve been shelving there since my GCSE days.

On the topic of project management, I work Saturday mornings at Startin Tractors and often come home feeling that I’ve worked solidly for 5 hours and achieved nothing. This morning I made an effort to ensure I worked away at the bug list for the system I wrote and closed the tickets as I fixed them. As a result I returned home having commited 9 changes to subversion (as I avoid commiting broken code, on principle, this suggested that 9 problems were fixed), closed 4 tickets (however some items are, of course, considered to minor to ticket, like changing the wording of a dialogue) and opened 5 new tickets. Although a net increase in open tickets I came away felling I had accumplished a lot in the time due to the amount of activity showing up in the trac timeline.

Incidentally, looking at the timeline I can determine exactly what I was doing at any given point of the morning. I can tell, for instance, that the first fourty minutes of the day were spent fixing a bug in the “latest arrivals” facility whilst the last hour was spent (desperately!) fixing a critical bug in the caching system which caused the entire edit feature to die horribly whenever a change was made to an existing piece of machinery.

Oh CompSoc, CompSoc, CompSoc. Will you ever learn?

I had quite a mix of responses to my previous post, which was hardly unexpected (although the large volume of resonses was). Interestingly all of the comments were made to me in person with noone leaving commants on the blog.

Unfortunately I can summerise all of the comments made as one of four categories, having heard exactly the same things over and over again from diferent people. There were a number of people who wholehartedly agreed with what I said (worryingly this includes quite a few (ex-)exec members), others agreed there were some issues to be resolved but things are not as bad as I think. The others either thought there was nothing wrong (in fact, I count just one person who expressed this opinion to me) and a further group who completely misunderstood what I was talking about and tried to read between the lines where there was nothing to read.

As a direct result of the feed back recieved (and this was supported, in part, by an incident involving an exec member since my post) I sent an email to the exec proposing that the issues raised by members to me be discussed at the next exec meeting. The responses by two of the exec have been less than encouraging, and I suspect would be quite damaging to the members faith in the exec should the comments made get back to the people who had expressed the views in question. Fortunately an ex-exec member has got his head screwed on right and has given some useful insight, as well as trying to calm the involved parties down somewhat.

On an unrelated note, I found this titbit in my IRC awaylog this morning:

00:44:44 $member1@ >> However you dress it up, Laurence and $member2 suddenly coming out of the woodwork is suspicious and seems to me a power grab, especially given the discussions in #wuglug when $LUG_exec_member wasn’t there

I have been an active member of the LUG since my first year, so I fail to see continuing to be one as a “comming out the woodwork”. As far as I can recall the only thing I’ve really actively done, aside from continuing to attend the meethings, is agree to create a Wiki page listing the comparative commands for various package managers. This clearly an attempt to seize power – I could start editing existing pages next! Aside from which I have not recently been involved in any discussions in #wuglug, ignoring it in favour of #lug which had more activity. It would seem that attending meetings and agreeding to create wiki pages is now a sign of trying to seize power. Imagine if someone in the government ever turned up to Westminister and then agreed to do some work. They would obviously be trying to take over as a dictator.

This was in the middle of a discussion about the change of irc channel, which although it was voted upon and minuted at the last meeting some people were not happy about. As I recall I was the only one who did not vote in favour of changing to #wuglug (I abseined as I do not think the channel name makes any difference, but everyone else was in favour). Clearly I’m power mad.

Life, The Universe, CompSoc and third year projects

It’s been quite a while since I’ve written anything on my blog. To a great extent I’ve just been far too busy (this hasn’t changed, but being back at Uni there is noone watching me from behind to see if I’m not working) and during the holidays I do not get the oportunity to use a computer much outside of work due to a lack of time.

Three important things have happened since my last blog entry;

Firstly, I’ve had surgery on my mouth to remove two of my existing teeth and have implants placed into my jaw which will, when healed in 3 to 6months time will support four false teeth in their place. I am missing a significant number of teeth (which I’ve never had) and the problem seems to be genetic – my mother has a large number of teeth missing as did her father. The ongoing appointments for this are proving quite disruptive and I an ending up missing lectures quite regularly at the moment (co-incidentally the lectures always seem to be for the ‘Compiler Design’ course, dispite me missing them on different days and at different times.

Secondly, The deadline for handing in my third year project specification was last Thurday. While I managed to hand in the required work before the deadline, the work I handed in contained a number of errors which I should have spotted. The main reason for this was that I made a mistake and overwrote the latest version of the specification with an older version which ment I then had to waste a lot of time recovering the newer copy. Had this not happened I would probably have had an extra 3-4hours to spend on getting it right and would not have rushed and handed in an erroneous version.

Finally, Over the holiday I have reached the conclusion that CompSoc, as a group of people, suck. The ideas on which CompSoc is founded, as an academic society who provide support, guest lectures and tutorials for people who like computers are great and like a number of people in CompSoc I simply love computers, however CompSoc is increasingly being taken over by two types of people. One of these is the gaming types, whose sole interest is playing games at every opportunity and are of the opinion that anyone who doesn’t want to play games all the time is not worthy of being in the society. The other group are the type who simply moan all the time about everything. They seem to complain for the sake of complaining and are completely unwilling to do anything productive to fix the problems they moan about.

I for one am sick to the back teeth(well, sick to what back teeth I have) of people moaning and bitching at people needlessly. This is the reason I have left, and do not intend to return to, the #compsoc irc channel on their irc network which is where all of the active members tend to spend their time. Since leaving #compsoc I have noticed no unjustified moaning occuring in any of the other 13 channels I am in on CompSoc’s IRC network. The thing that really gets to me is people bitching non-stop about things which other members have put a significant amount of their time and effort into and get nothing in return. Members have no obligation to take part and do stuff for CompSoc, like the website, the IRC bot, helping manage the servers and setup LANs the least they could expect is not to be bitched at constantly for something they have given time and effort for, entirely volunterially.

There was a suggestion that the Warwick Linux User’s Group could part from CompSoc and form its own society. This idea was quickly shouted down as, among other things, it might spell the end for CompSoc. I’m not sure that this would have been a bad idea. If the LUG had left, at least CompSoc might have been forced to get its arse in gear and stop being the ‘gamers and bitchers’ society.

If it weren’t for my multiple obligations to the society and the fact that I know a grand total of about 0 people outside of CompSoc I would seriously consider having nothing more to do with them. Thankfully the LUG, which has not had any of these issues, is continuing to move in the direction it was 2 years ago with semi-regular tutorials planned and maintaining the social atmosphere of their meetings. Had the LUG left CompSoc, it would have been a much better society than that which CompSoc has become.

Ututo, SuSE 10.1 & Debian and the evil KDE

Last weekend was a Warwick CompSoc LAN party weekend, which for me ment the customary ‘trying the latest Linux releases’ as well as playing the odd game. (Incidentally, Fred introduced me to TO:Crossfire which is a great mod for UT2004, and looks to be better than Tactical Ops for UT)

A friend of mine (and shameless free-as-in-speach-software advocate and HURD user), Tim, asked me to try Ututo for him, so I tried to install it on my laptop first. For some reason it failed to boot past the ‘ISOLINUX’ stage. Suspecting a possibly duff CD-R I used the downloaded ISO image to install it in a virtual machine. It successfully installed in the VM, but failed to boot. Declaring Ututo an unmitigated failure, I moved on…

Next on the list was SuSE 10.1 which had been released on Thursday. SuSE 10.1 seems a lot stabler than 9.3 and 10.0 were. I only had one KDE application crash on me, where as on 9.3 and 10.0 this was a regular occurence. The knetworkmanager application is a fantastic addition to the KDE desktop, and automatically picked up the university access point which was within range at the LAN. For Linux newbies, and people who want a ‘just works’ Distro SuSE 10.1 has to be one of the best. Shame I don’t fall into one of those groiups ;)

…so back to Debian. After re-installing it I decided to install KDE since it is a nice desktop (dispite the fact that, by default, konqueror, konsole and konversation all use different shortcuts for switching between tabs. (Alt+Left/Right, Shift+Left/Right and Ctrl+,/. iirc)). For a distro which has a reputation for being Gnome-oriented when using a full desktop environment its KDE packages are great. Everything just works as expected, and I’m very pleased with it. I wonder how long it’ll last until I decide to go back to something more minimal (e.g. evilwm).

Yay, I'm now offically 'Laurence'

My shell account on the Warwick Computing Society‘s server had the login ‘laurence2′ as ‘laurence’ was taken by a former member whose account had not been removed for reasons unknown. After nearly two years of moaning and harasing various people I have finally had ‘laurence’s account removed and replaced with mine.
This makes me a very happy bunny. Now all I need to do is finish the coursework due in on Monday…