<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Introducing Sproiiiing: the Hottest New EoC Framework</title>
	<atom:link href="http://benjismith.net/index.php/2007/05/02/sproiiiing/feed/" rel="self" type="application/rss+xml" />
	<link>http://benjismith.net/index.php/2007/05/02/sproiiiing/</link>
	<description>Benji Smith, Software Research</description>
	<lastBuildDate>Mon, 23 Jan 2012 23:42:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Iwein Fuld</title>
		<link>http://benjismith.net/index.php/2007/05/02/sproiiiing/comment-page-1/#comment-108578</link>
		<dc:creator>Iwein Fuld</dc:creator>
		<pubDate>Wed, 18 Jun 2008 18:21:03 +0000</pubDate>
		<guid isPermaLink="false">http://benjismith.net/index.php/2007/05/02/sproiiiing/#comment-108578</guid>
		<description>Very funny indeed, but I think you might be better off using annotations because xml is evil!

@RunOnServerWith(&quot;&quot;)
@UsingDatabase(&quot;inlined conection settings&quot;)
@SecuredWith(YourFavoriteSecurityFramework.class)//ah shit, I would need an import for that..
...
@DomainEntity(type=&quot;...&quot;)
@DomainEntity(type=&quot;...&quot;)
@
@
class MyApplication {

  }

On a more serious note, I don&#039;t think frameworks in general are evil, you just need to use them on a &#039;need to use&#039; basis. When you need a good framework for date and time you use Joda time, when you need something to work with quantities and units you use jscience. Writing everything yourself is just plainly stupid in most cases. If I wanted to do that I&#039;d be programming in Smalltalk. In fact the current Java framework landscape would make you a fool if you ever worked with a socket or started your own thread (in most cases).</description>
		<content:encoded><![CDATA[<p>Very funny indeed, but I think you might be better off using annotations because xml is evil!</p>
<p>@RunOnServerWith(&#8221;")<br />
@UsingDatabase(&#8221;inlined conection settings&#8221;)<br />
@SecuredWith(YourFavoriteSecurityFramework.class)//ah shit, I would need an import for that..<br />
&#8230;<br />
@DomainEntity(type=&#8221;&#8230;&#8221;)<br />
@DomainEntity(type=&#8221;&#8230;&#8221;)<br />
@<br />
@<br />
class MyApplication {</p>
<p>  }</p>
<p>On a more serious note, I don&#8217;t think frameworks in general are evil, you just need to use them on a &#8216;need to use&#8217; basis. When you need a good framework for date and time you use Joda time, when you need something to work with quantities and units you use jscience. Writing everything yourself is just plainly stupid in most cases. If I wanted to do that I&#8217;d be programming in Smalltalk. In fact the current Java framework landscape would make you a fool if you ever worked with a socket or started your own thread (in most cases).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: benji</title>
		<link>http://benjismith.net/index.php/2007/05/02/sproiiiing/comment-page-1/#comment-52770</link>
		<dc:creator>benji</dc:creator>
		<pubDate>Fri, 07 Sep 2007 19:11:48 +0000</pubDate>
		<guid isPermaLink="false">http://benjismith.net/index.php/2007/05/02/sproiiiing/#comment-52770</guid>
		<description>Luciano says:
&lt;i&gt;&quot;The organisation I work for has about 500 programmers - all working on a single integrated application. Millions of lines of code. Two hundred thousand software modules of which 20% need to be revised each year because of changing business requirements (government legislation!). A mistake in any module can, potentially, stop the whole application - the cost of which is about $1,000,000 per hour because 30,000 employees cannot do their job.&quot;&lt;/i&gt;

Luciano, in your case, I&#039;d suggest that the application is just too damn big. There&#039;s nothing anyone can do, with any framework, to make a software project of that size comprehensible to the people who work on it.

Without knowing more about what the application does or how it works, I can&#039;t make any kind of definitive commentary, but I&#039;d suggest that the application should probably be broken into a smaller set of independent applications, sharing some small core codebase.

I also can&#039;t really comment on the applicability of IoC frameworks for huge applications like this. I&#039;ve worked on plenty of applications with a million or more lines of code (and in every case, where IoC and ORM frameworks were used, I&#039;ve thought it ended up being a total train wreck), but I haven&#039;t worked on anything that&#039;s quite at the scale you&#039;re implying.

Anyhoo...

I&#039;ve been meaning to write a more detailed essay lately, about the taxonomy of software packaging (platforms, frameworks, libraries, etc), where I clarify some of my terminology and make a more rigorous case against frameworks. But I haven&#039;t gotten around to it yet because I&#039;m busy &lt;a href=&quot;http://benjismith.net/index.php/2007/08/07/eternity-ii-is-here/&quot; rel=&quot;nofollow&quot;&gt;playing with puzzles&lt;/a&gt;.</description>
		<content:encoded><![CDATA[<p>Luciano says:<br />
<i>&#8220;The organisation I work for has about 500 programmers &#8211; all working on a single integrated application. Millions of lines of code. Two hundred thousand software modules of which 20% need to be revised each year because of changing business requirements (government legislation!). A mistake in any module can, potentially, stop the whole application &#8211; the cost of which is about $1,000,000 per hour because 30,000 employees cannot do their job.&#8221;</i></p>
<p>Luciano, in your case, I&#8217;d suggest that the application is just too damn big. There&#8217;s nothing anyone can do, with any framework, to make a software project of that size comprehensible to the people who work on it.</p>
<p>Without knowing more about what the application does or how it works, I can&#8217;t make any kind of definitive commentary, but I&#8217;d suggest that the application should probably be broken into a smaller set of independent applications, sharing some small core codebase.</p>
<p>I also can&#8217;t really comment on the applicability of IoC frameworks for huge applications like this. I&#8217;ve worked on plenty of applications with a million or more lines of code (and in every case, where IoC and ORM frameworks were used, I&#8217;ve thought it ended up being a total train wreck), but I haven&#8217;t worked on anything that&#8217;s quite at the scale you&#8217;re implying.</p>
<p>Anyhoo&#8230;</p>
<p>I&#8217;ve been meaning to write a more detailed essay lately, about the taxonomy of software packaging (platforms, frameworks, libraries, etc), where I clarify some of my terminology and make a more rigorous case against frameworks. But I haven&#8217;t gotten around to it yet because I&#8217;m busy <a href="http://benjismith.net/index.php/2007/08/07/eternity-ii-is-here/" rel="nofollow">playing with puzzles</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Luciano</title>
		<link>http://benjismith.net/index.php/2007/05/02/sproiiiing/comment-page-1/#comment-52686</link>
		<dc:creator>Luciano</dc:creator>
		<pubDate>Fri, 07 Sep 2007 01:00:45 +0000</pubDate>
		<guid isPermaLink="false">http://benjismith.net/index.php/2007/05/02/sproiiiing/#comment-52686</guid>
		<description>My post is actually referring to an old very humorous article, and subsequent comments, now archived here:

http://discuss.joelonsoftware.com/default.asp?joel.3.219431.12 

Cheers</description>
		<content:encoded><![CDATA[<p>My post is actually referring to an old very humorous article, and subsequent comments, now archived here:</p>
<p><a href="http://discuss.joelonsoftware.com/default.asp?joel.3.219431.12" rel="nofollow">http://discuss.joelonsoftware.com/default.asp?joel.3.219431.12</a> </p>
<p>Cheers</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Luciano</title>
		<link>http://benjismith.net/index.php/2007/05/02/sproiiiing/comment-page-1/#comment-52481</link>
		<dc:creator>Luciano</dc:creator>
		<pubDate>Wed, 05 Sep 2007 00:27:14 +0000</pubDate>
		<guid isPermaLink="false">http://benjismith.net/index.php/2007/05/02/sproiiiing/#comment-52481</guid>
		<description>I am afraid your humour is no longer funny.  I discovered your &quot;frameworks&quot; essay yesterday, and I was entertained - even though I do not agree with you at all - because your post did at least give some food for thought and makes one wary about what one is trying to accomplish with a framework.

You said: &quot;It makes me cringe.

And yet, for some reason, everyone I talk to just RAAAAVES about Spring. I don&#039;t get it. &quot;

Maybe the reason is that the frameworks actually works for them?

The organisation I work for has about 500 programmers - all working on a single integrated application.  Millions of lines of code. Two hundred thousand software modules of which 20% need to be revised each year because of changing business requirements (government legislation!).  A mistake in any module can, potentially, stop the whole application - the cost of which is about $1,000,000 per hour because 30,000 employees cannot do their job.

How does one TRUST all these programmers (and associated business analysts, database designers, etc) not to make mistakes?

Well, you can&#039;t.  Instead, you need to set things up so as to minimise the likelyhood of mistakes, and their impact.  These is where frameworks come in.

You also said: 
&quot;A library is something *contained* within my code.
A framework is a *container* for my application.&quot;

Absolutely right.  Because the framework is actually driving the application it can ensure that certain things happen exactly when they are supposed to happen.  You can&#039;t trust programmers to ensure they lock database records correctly, or commit transactions at the right time, or they access a database only a particular way, or provide a consistent interface across the thousands of screens or web pages - so instead you remove the need for the programmers to worry about these things by either preventing them from doing these things, or you give them only one way that works.

It is easier to do this with a framework than with any other way I&#039;ve seen.

In a sense the framework represents the overall design of the application - generally a good framework handles the non-business &quot;glue&quot; functions, and the programmers only worry about the business code.  Of course the world is not perfect and this separation is not so neat - but overall most things ARE separated, and a few very complex things remain - and they are the ones that rightly receive the most scrutiny (eg tuning for performance).
  
One needs to examine the framework and decide that it is appropriate for the application.  If it is appropriate, and the framework is good, then it should provide enormous benefits.  I am not familiar with Spring, but the support for it is evidence that there are classes of applications for which it must be very suitable.

Why do you think SAP is very popular?</description>
		<content:encoded><![CDATA[<p>I am afraid your humour is no longer funny.  I discovered your &#8220;frameworks&#8221; essay yesterday, and I was entertained &#8211; even though I do not agree with you at all &#8211; because your post did at least give some food for thought and makes one wary about what one is trying to accomplish with a framework.</p>
<p>You said: &#8220;It makes me cringe.</p>
<p>And yet, for some reason, everyone I talk to just RAAAAVES about Spring. I don&#8217;t get it. &#8221;</p>
<p>Maybe the reason is that the frameworks actually works for them?</p>
<p>The organisation I work for has about 500 programmers &#8211; all working on a single integrated application.  Millions of lines of code. Two hundred thousand software modules of which 20% need to be revised each year because of changing business requirements (government legislation!).  A mistake in any module can, potentially, stop the whole application &#8211; the cost of which is about $1,000,000 per hour because 30,000 employees cannot do their job.</p>
<p>How does one TRUST all these programmers (and associated business analysts, database designers, etc) not to make mistakes?</p>
<p>Well, you can&#8217;t.  Instead, you need to set things up so as to minimise the likelyhood of mistakes, and their impact.  These is where frameworks come in.</p>
<p>You also said:<br />
&#8220;A library is something *contained* within my code.<br />
A framework is a *container* for my application.&#8221;</p>
<p>Absolutely right.  Because the framework is actually driving the application it can ensure that certain things happen exactly when they are supposed to happen.  You can&#8217;t trust programmers to ensure they lock database records correctly, or commit transactions at the right time, or they access a database only a particular way, or provide a consistent interface across the thousands of screens or web pages &#8211; so instead you remove the need for the programmers to worry about these things by either preventing them from doing these things, or you give them only one way that works.</p>
<p>It is easier to do this with a framework than with any other way I&#8217;ve seen.</p>
<p>In a sense the framework represents the overall design of the application &#8211; generally a good framework handles the non-business &#8220;glue&#8221; functions, and the programmers only worry about the business code.  Of course the world is not perfect and this separation is not so neat &#8211; but overall most things ARE separated, and a few very complex things remain &#8211; and they are the ones that rightly receive the most scrutiny (eg tuning for performance).</p>
<p>One needs to examine the framework and decide that it is appropriate for the application.  If it is appropriate, and the framework is good, then it should provide enormous benefits.  I am not familiar with Spring, but the support for it is evidence that there are classes of applications for which it must be very suitable.</p>
<p>Why do you think SAP is very popular?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stephane</title>
		<link>http://benjismith.net/index.php/2007/05/02/sproiiiing/comment-page-1/#comment-50163</link>
		<dc:creator>Stephane</dc:creator>
		<pubDate>Fri, 10 Aug 2007 17:08:12 +0000</pubDate>
		<guid isPermaLink="false">http://benjismith.net/index.php/2007/05/02/sproiiiing/#comment-50163</guid>
		<description>Thanks!  This helped me alot in understanding the true benefits of XML.  Lightweight IS the way as you clearly demonstated it!</description>
		<content:encoded><![CDATA[<p>Thanks!  This helped me alot in understanding the true benefits of XML.  Lightweight IS the way as you clearly demonstated it!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: benji</title>
		<link>http://benjismith.net/index.php/2007/05/02/sproiiiing/comment-page-1/#comment-50007</link>
		<dc:creator>benji</dc:creator>
		<pubDate>Wed, 08 Aug 2007 15:04:29 +0000</pubDate>
		<guid isPermaLink="false">http://benjismith.net/index.php/2007/05/02/sproiiiing/#comment-50007</guid>
		<description>So that was you!!

I got the netflix-friend email yesterday and, obviously, I didn&#039;t recognize your name.

Nevertheless, I wondered if I actually knew you from somewhere but had forgotten your name. (I&#039;m like that. I tend to forget people&#039;s names shortly after I&#039;ve met them.)

I almost feel like we should have a cup of coffee or something first, before I let you peek inside my netflix account. :-)</description>
		<content:encoded><![CDATA[<p>So that was you!!</p>
<p>I got the netflix-friend email yesterday and, obviously, I didn&#8217;t recognize your name.</p>
<p>Nevertheless, I wondered if I actually knew you from somewhere but had forgotten your name. (I&#8217;m like that. I tend to forget people&#8217;s names shortly after I&#8217;ve met them.)</p>
<p>I almost feel like we should have a cup of coffee or something first, before I let you peek inside my netflix account. :-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: JD</title>
		<link>http://benjismith.net/index.php/2007/05/02/sproiiiing/comment-page-1/#comment-49944</link>
		<dc:creator>JD</dc:creator>
		<pubDate>Tue, 07 Aug 2007 18:08:47 +0000</pubDate>
		<guid isPermaLink="false">http://benjismith.net/index.php/2007/05/02/sproiiiing/#comment-49944</guid>
		<description>For a geek, you have amazing sense of humor! BTW, I added you in my NetFlix friends, I hope you don&#039;t mind.</description>
		<content:encoded><![CDATA[<p>For a geek, you have amazing sense of humor! BTW, I added you in my NetFlix friends, I hope you don&#8217;t mind.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Angstrom</title>
		<link>http://benjismith.net/index.php/2007/05/02/sproiiiing/comment-page-1/#comment-49210</link>
		<dc:creator>Angstrom</dc:creator>
		<pubDate>Wed, 01 Aug 2007 17:37:16 +0000</pubDate>
		<guid isPermaLink="false">http://benjismith.net/index.php/2007/05/02/sproiiiing/#comment-49210</guid>
		<description>The problem is...there&#039;s no XSLT file to dynamically generate an interpretation of the GUI.</description>
		<content:encoded><![CDATA[<p>The problem is&#8230;there&#8217;s no XSLT file to dynamically generate an interpretation of the GUI.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anonymous</title>
		<link>http://benjismith.net/index.php/2007/05/02/sproiiiing/comment-page-1/#comment-46611</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Fri, 06 Jul 2007 07:56:57 +0000</pubDate>
		<guid isPermaLink="false">http://benjismith.net/index.php/2007/05/02/sproiiiing/#comment-46611</guid>
		<description>Yes, where can I download!? ;)

It is frightening the trend we&#039;ve been having where people think that:

   


is somehow more flexible/readable/maintainable than:
if (expression) { doStuff() }</description>
		<content:encoded><![CDATA[<p>Yes, where can I download!? ;)</p>
<p>It is frightening the trend we&#8217;ve been having where people think that:</p>
<p>is somehow more flexible/readable/maintainable than:<br />
if (expression) { doStuff() }</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian Demant</title>
		<link>http://benjismith.net/index.php/2007/05/02/sproiiiing/comment-page-1/#comment-36673</link>
		<dc:creator>Brian Demant</dc:creator>
		<pubDate>Mon, 14 May 2007 07:35:20 +0000</pubDate>
		<guid isPermaLink="false">http://benjismith.net/index.php/2007/05/02/sproiiiing/#comment-36673</guid>
		<description>Very nice joke .. I found it refreshing to be reminded that I&#039;m not alone in not being fond of XML push ups. Although it might be that XML push up are like real push ups .. which are good for you, but unpleasant for those who isn&#039;t doing them regularly :)

@S.J. thank you for being (unintentionally) funny as well  :)</description>
		<content:encoded><![CDATA[<p>Very nice joke .. I found it refreshing to be reminded that I&#8217;m not alone in not being fond of XML push ups. Although it might be that XML push up are like real push ups .. which are good for you, but unpleasant for those who isn&#8217;t doing them regularly :)</p>
<p>@S.J. thank you for being (unintentionally) funny as well  :)</p>
]]></content:encoded>
	</item>
</channel>
</rss>

