OGRE code would have cost millions to write?

· by Steve · Read in about 4 min · (726 Words)

I happened to be looking at Koders.com today and stumbled across the project summary page for OGRE, which has some really interesting stats. Particularly eyebrow-raising was the estimated development cost based on KLOC metrics - not a super-accurate estimating tool by any means but it’s the kind of metric many people use to estimate cost in the absence of anything else. Based on that, everything that’s in the OGRE CVS repository would have taken 683 man-months and cost 3.5 million dollars to develop! That’s food for thought 😀

This includes all the community add-ons too, if you just take core OGRE the figures are about a third to a half of that - excluding comments ogrenew alone contains about 250,000 lines of C++ code, and all the other stuff like documentation, setup scripts is extra. Also, in the time that OGRE has been around, many parts of that code have been rewritten or replaced, so KLOC isn’t that accurate (as if it ever was) as an effort metric, it’s probably a little underestimating in a project this mature. Plus, we tend to think that designing well so as to write less code is a better development model, so if we were sloppier coders there would be more lines there 😉 Still, raw and unrepresentative as it is, it does give a taster for just how well the open source model works - we’ve produced a system that would have taken a seriously large amount of money to create otherwise. 😀

I’ve been working hard all week on contract work so this weekend I’m going to try to catch up on at least one of the more significant bits of OGRE work that have suffered as a result, first of all reviewing the LiSPSM patch LordSteiner worked on using the new pluggable shadow basis classes in Eihort. He identified a couple of other useful things that custom shadow approaches could need and we had a good debate on ways to incorporate those tidily, so I’ll be doing some thinking about that and hopefully it will go into CVS before the end of the weekend.

I’m also still fighting with the dilemma of paid work versus my strategic direction. As I’ve said I’ve biased my time towards contract work this month since I had an exisiting commitment, but that together with just the day-to-day work (forum maintenance, bugfixes, admin etc) I’m finding almost no time for future OGRE work or my own projects, hence why I’m working on OGRE this weekend again. My priority list for the immediate future is to get Eihort done, then to work on the toolset I have in my head that I’m really excited about (and of course on what comes after Eihort). From my experience this month I realise now how difficult it is to fit all these things in, and I’m getting a little frustrated at times. Whilst the contract work is welcome, I will definitely have to rein it in more from next month and concentrate on future direction. Contract work is very much like employment, in that on the plus side it brings in money but on the downside you don’t personally have anything to show for it at the end of the day (except some experience) - like a bicycle it only keeps going forward for as long as you pedal and gains no extra momentum of its own - thus not very strategic as a business approach (unless you intend to grow into a big consultancy business, which isn’t feasible for me). I had already intended to sacrifice ‘current bucks’ for ‘potential future bucks’ (this is my main currency right now, although the shops seem reluctant to accept it ;)) by leaving my employment so I should be careful about falling back into the same model and not actually making forward progress on more long-term goals. On the one hand I feel like a bum if I don’t earn a decent amount (even though we’d planned for that financially, as my wife keeps reminding me), but on the other hand if in 6 months all I’ve managed is to keep OGRE ticking over and worked on other people’s projects for cash, I’ll be disappointed. Finding the right blend between the two is critical, and I’m not there yet. Early days though, this is still month 1 😀