<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.8.1">
</HEAD>
<BODY>
On Tue, 2006-04-04 at 12:10 +0200, Ulrich Mök wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE>
<FONT COLOR="#000000">instead of quarreling all that time, you could have done it yourself in </FONT>
<FONT COLOR="#000000">the meantime!</FONT>
</PRE>
</BLOCKQUOTE>
<BR>
I realise this was a joke, Ulrich, but I'm going to respond seriously because there's a serious issue underlying the joke.  It's an issue that, I think, is the single largest problem with free or open software, in fact.<BR>
<BR>
The easiest part of any software project is coding the problem domain components.<BR>
<BR>
I put that on a line by itself to draw people's eyes to it.  I also fully anticipate the howls of outrage from the cowboy coder camp.  The fact remains, however, that in most (possibly even all) cases of software development, the problem domain is the minor component.<BR>
<BR>
The hardest part of any software project is designing and implementing the interfaces.<BR>
<BR>
That's the part that needs the most work in any software product.  Whether you're talking about the human interface, inter-component interface, storage interface, system interface -- whichever interface it is you're talking about, this is where the real work is in software development.  It is also the part that is least glitzy, glamorous and fun.  As a result it is the part that is shirked in most (possibly even all) software development efforts.<BR>
<BR>
Free (and open) software is most prone to stopping once the problem domain is coded.  GUI work is hard, fiddly and boring.  Only a crazed person would waste that much time and boredom on unpaid effort.  If a GUI is made, it tends to be hacked together quickly.  (Sbackup is a prime example of this -- sorry, Peter -- as is that spec on the wiki that was cited before.)  Further it tends to be hacked together quickly <B>after</B> the problem domain code is pretty much in a fixed state.  So whatever warts exist in the problem domain's interface are worked around in the GUI.<BR>
<BR>
This is completely bass-ackwards.  The interfaces -- all of them -- should be thought about, designed, prototyped and perfected before the first line of problem domain code is even touched.  Hell, to be really dogmatic your test cases should be complete before you touch a line of the problem domain code.  But that's not what happens -- especially in projects run by and maintained by volunteers.<BR>
<BR>
So what does this rant have to do with your joke?  Long before I code a backup system I'll have use cases drawn up, GUIs specced out and prototyped, test cases worked out and coded -- THEN, finally, the trivial part (flipping bits around disks) is up on the queue.<BR>
<BR>
Do you  <B>really</B> think this quarrel went on so long I could have done all that?  <IMG SRC="cid:1144147584.14229.116.camel@localhost.localdomain" ALIGN="middle" ALT=";)" BORDER="0"><BR>
<BR>
<TABLE CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
--<BR>
<B>Michael T. Richter</B><BR>
<I><FONT SIZE="2">Email:</FONT></I><FONT SIZE="2"> ttmrichter@gmail.com, mtr1966@hotpop.com</FONT><BR>
<I><FONT SIZE="2">MSN:</FONT></I><FONT SIZE="2"> ttmrichter@hotmail.com, mtr1966@hotmail.com; </FONT><I><FONT SIZE="2">YIM:</FONT></I><FONT SIZE="2"> michael_richter_1966; </FONT><I><FONT SIZE="2">AIM:</FONT></I><FONT SIZE="2"> YanJiahua1966; </FONT><I><FONT SIZE="2">ICQ:</FONT></I><FONT SIZE="2"> 241960658; </FONT><I><FONT SIZE="2">Jabber:</FONT></I><FONT SIZE="2"> mtr1966@jabber.cn</FONT><BR>
<BR>
<I><FONT SIZE="1">"My paramount object in this struggle is to save the Union, and is not either to save or to destroy slavery."</FONT></I><FONT SIZE="1"> </FONT><B><FONT SIZE="1">--Abraham Lincoln</FONT></B>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>