« links for 2007-01-27 | Main | links for 2007-01-28 »

3 pillars

Ben: "I have been helping preed bring Mozilla into the world of distributed version control systems. It sucks."

Ben is getting his head around DVCS. Having started to look at these recently coming from the world of Subversion, and prior to that, CVS, I can sympathise with his pain, especially if you're dealing with a boehemoth like the Mozilla tree.

The conclusion I draw from this and my own experience having migrating my fair share of source trees is that the version control system is a first order effect on software, along with two others - the build system and the bugtracker. Those choices impact absolutely everything else. Things like IDEs, by comparison, don't matter at all. Even choice of methodology might matter less. Although I'm betting there are plenty of software and management teams out there that see version control, build systems and bugtrackers as being incidental to the work, not mission critical tools.

January 27, 2007 02:27 PM


(January 28, 2007 05:32 AM #)

Two-part question: Are most developers inevitably going to have to work with a distributed development evironment, and should they get used to working with some DVCS (darcs, Bazaar, whatever) sooner rather than later?

Subversion seems to have the current hip mindshare, and it's what I use, but experience working on the road, in airports, in coffeshops with unreliable Wi-Fi, have me thinking that a distributed system is going to be a bigger win in the long run.

Bill de hOra
(January 28, 2007 02:10 PM #)

"Are most developers inevitably going to have to work with a distributed development environment, and should they get used to working with some DVCS (darcs, Bazaar, whatever) sooner rather than later?"

No and No. But there are two caveats.

One is time based - it's no and no right now 'cos widespread adoption of DVCS is years away, practically speaking. I think for widespread adoption of DVCS you will need to see widespread adoption of OSS style development, bilateral patch sharing, more outsourcing and homeworking; that sort of thing. It'll take years for those techniques to trickle down. Most people are just getting their head around downloading the distros. But if I was a betting man, I would say OSS methods will be how general software development will come to be done, (largely because they are the most market efficient, but also because most systems will come to be dependent on OSS libraries under the hood). If OSS projects generally move to DVCS, the commercial sector will follow suit in time.

The other is to do with methodology. Most commercial/enterprise development is done on small/medium sized code bases with small/medium size teams (<100 head). The methodologies used for the most part are either code and fix, waterfall or iterative waterfall. These are command and control styles that have a bias to centralizing design, ticketing, documents and of course, code. Compliance also plays a part here. No LOB or compliance manager when asking the question "where is the code for this version" wants to hear "not sure, maybe on Dave's tree". It's easier for compliance and accountability if code versions are centralized, and the consequences of non-compliance are much easier to quantify than improvements in software techniques.

"Subversion seems to have the current hip mindshare, and it's what I use"

I agree (I tipped 07 to be Subversion's mainstream year way back). Subversion for most people is more than good enough, and always-on connectivity will only get better. Most of us are still going "wow!" because you can diff the code without a connection (I know I still am). I think you have to have used a DVCS (or an IDE like IDEA) that lets you work entirely locally to appreciate how far that can go.

Ryan Tomayko
(January 28, 2007 07:01 PM #)

I've always thought there could be a fourth pillar here: the robust documentation system. API documentation gets you about 25% of the way there but projects I've been involved with that get additional documentation facilities in place early on seem to also have a first order effect on ongoing project development.

Some examples would be Python, PostgreSQL, and FreeBSD. Each of these projects have an established set of expectations for how new functionality should be documented and I think that significantly increases the quality and quantity of good documentation the project receives.

Joel Hockey
(January 28, 2007 11:12 PM #)

For each of these 3 things (version control, build system, bug tracker), are there specific products that you think are best, or any that you would avoid?

Kragen Sitaker
(January 29, 2007 06:42 AM #)

Of the three, the version control system is the only one for which multiple companies use the same one. Everyone writes their own bug tracking system and their own build system, in my experience. It's bizarre.

Paul Browne - Technology in Plain English
(January 29, 2007 10:01 AM #)
Things like IDEs, by comparison, don't matter at all
Probably more accurate to say , things like IDE's almost don't matter at all. And that assuming that you've got Ant , Maven or some other standard build tool setup that you can use your editor of choice.

Regarding the version controlany of the main open source products that are out there are ok (some version control is better than none at all). Just don't get me started on some of the commercial VC products - the ones that look like development stopped on them 10 years ago.

Bill Higgins
(January 30, 2007 04:35 PM #)

Bill, you may be interested in some of the Jazz technology which is currently under development at Rational. Steve O'Grady had a nice write-up on this last year:


Bill de hOra
(January 30, 2007 07:07 PM #)

"are there specific products that you think are best"


in my experience:

bugtrackers: JIRA and Trac. In it's day bugzilla was good, but it's very complicated compared to those two. That JIRA is heavily adopted by OSS projects speaks volumes to its quality.

version control: Subversion, Perforce. CVS is dead to me at this point. I'm still experimenting with DVCS, but so far I'm mostly liking mercurial and then bazaar.

build tools:. ant, rake. I find make painful. Maven is a good idea let down by implementation (so much I won't risk a project on it)

of the 3 areas, I think build tools are the weakest. Ant isn't quite expressive enough, make has the right idea (it's an expert system) but is too complicated. rake is clean, but too procedural.

Post a comment

(you may use HTML tags for style)

Remember Me?

Trackback Pings

TrackBack URL for this entry: