<?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: Rails is a Pre-Fab House</title>
	<atom:link href="http://yehudakatz.com/2008/06/04/rails-is-a-pre-fab-house/feed/" rel="self" type="application/rss+xml" />
	<link>http://yehudakatz.com/2008/06/04/rails-is-a-pre-fab-house/</link>
	<description>Random Geek-Related Thoughts</description>
	<lastBuildDate>Sat, 13 Mar 2010 08:40:57 -0800</lastBuildDate>
	
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: i am ruinous &#187; Blog Archive &#187; links for 2008-06-12 &#124; tales of failure and woe &#124; Ruby on Rails developer in Phoenix, Arizona</title>
		<link>http://yehudakatz.com/2008/06/04/rails-is-a-pre-fab-house/comment-page-1/#comment-12250</link>
		<dc:creator>i am ruinous &#187; Blog Archive &#187; links for 2008-06-12 &#124; tales of failure and woe &#124; Ruby on Rails developer in Phoenix, Arizona</dc:creator>
		<pubDate>Thu, 12 Jun 2008 05:36:38 +0000</pubDate>
		<guid isPermaLink="false">http://yehudakatz.com/?p=47#comment-12250</guid>
		<description>[...] Katz Got Your Tongue? » Rails is a Pre-Fab House (tags: merb rails ruby) [...]</description>
		<content:encoded><![CDATA[<p>[...] Katz Got Your Tongue? » Rails is a Pre-Fab House (tags: merb rails ruby) [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sensei</title>
		<link>http://yehudakatz.com/2008/06/04/rails-is-a-pre-fab-house/comment-page-1/#comment-12137</link>
		<dc:creator>sensei</dc:creator>
		<pubDate>Sat, 07 Jun 2008 05:13:24 +0000</pubDate>
		<guid isPermaLink="false">http://yehudakatz.com/?p=47#comment-12137</guid>
		<description>I totally agree.

You seem to have neglected, however, what Rails is really good for. It&#039;s really good for people who have never built houses before.

It&#039;s also really good for people who have been stuffed around by other dodgy prefab companies before - have had their houses built in really bad materials.

It was the first framework that let people focus on the important code decisions rather than the logistics of writing the code.

Truth is, Merb would BE without Rails, and I think you, as developers of Merb, need to respect that. 

I&#039;m not in any way bagging out Merb. Merb is necessary and very useful, and I love it a lot.

Now, the interesting thing for me, is that Rails is SORT-OF going down the microsoft route in that it has to maintain backwards compatibility and versioning.

I *hate* backwards compatibility and versioning. There should be versions for bug fixes, but I&#039;m not too much of a fan of versions for new feature sets, changes in API, etc. 

What I would *love* is if Merb had a set of releases - For instance Merb &quot;BlahBlah&quot;. Marketing departments might not like this much, but opensource software doesn&#039;t have marketing departments. It&#039;s like &quot;okay, we have a set of goals for merb BlahBlah, and the project will be FULLY COMPLETE when these goals are released&quot; in exactly the same way that unix commands are small, nice pieces that fit together well and should never break their own API&#039;s and syntax.

Does that make sense?

If I have a program, and all it has to do is take one number, and multiply it by 5, then the only &quot;versions&quot; that should be released for it are the versions that fix bugs in it. It is simple, and small, and tiny, and works its job, and that is all it does.

It is, essentially, its smallest part. Why would we need to upgrade it? From a marketing point of view, with Micrsoft Word, or Windows, or whatever, they want to keep making money, so they want to push &quot;upgrading&quot;.

My idea is ... Merb &quot;BlahBlah&quot; (or &quot;chocolate&quot; or &quot;puma&quot; or &quot;funky&quot; or whatever you call it) should do ONLY what its spec says. Nothing more. So Merb Core BlahBlah will have a spec, an API, and that is that. It is either finished or it&#039;s not, but it will never do more than its spec says. Thus we have a clearly defined API and we ALWAYS know what it does. 

I&#039;m fairly sure this is what you&#039;re trying to do with Merb: to get the simplest set of API&#039;s possible across smallest-possible objects. If all the pieces are very very small, and they all do only one job, and one job well, and they all fit together very well, then fixing it will be easy, changing it will be easy, etc.

In short, I love you guys. :)</description>
		<content:encoded><![CDATA[<p>I totally agree.</p>
<p>You seem to have neglected, however, what Rails is really good for. It&#8217;s really good for people who have never built houses before.</p>
<p>It&#8217;s also really good for people who have been stuffed around by other dodgy prefab companies before &#8211; have had their houses built in really bad materials.</p>
<p>It was the first framework that let people focus on the important code decisions rather than the logistics of writing the code.</p>
<p>Truth is, Merb would BE without Rails, and I think you, as developers of Merb, need to respect that. </p>
<p>I&#8217;m not in any way bagging out Merb. Merb is necessary and very useful, and I love it a lot.</p>
<p>Now, the interesting thing for me, is that Rails is SORT-OF going down the microsoft route in that it has to maintain backwards compatibility and versioning.</p>
<p>I *hate* backwards compatibility and versioning. There should be versions for bug fixes, but I&#8217;m not too much of a fan of versions for new feature sets, changes in API, etc. </p>
<p>What I would *love* is if Merb had a set of releases &#8211; For instance Merb &#8220;BlahBlah&#8221;. Marketing departments might not like this much, but opensource software doesn&#8217;t have marketing departments. It&#8217;s like &#8220;okay, we have a set of goals for merb BlahBlah, and the project will be FULLY COMPLETE when these goals are released&#8221; in exactly the same way that unix commands are small, nice pieces that fit together well and should never break their own API&#8217;s and syntax.</p>
<p>Does that make sense?</p>
<p>If I have a program, and all it has to do is take one number, and multiply it by 5, then the only &#8220;versions&#8221; that should be released for it are the versions that fix bugs in it. It is simple, and small, and tiny, and works its job, and that is all it does.</p>
<p>It is, essentially, its smallest part. Why would we need to upgrade it? From a marketing point of view, with Micrsoft Word, or Windows, or whatever, they want to keep making money, so they want to push &#8220;upgrading&#8221;.</p>
<p>My idea is &#8230; Merb &#8220;BlahBlah&#8221; (or &#8220;chocolate&#8221; or &#8220;puma&#8221; or &#8220;funky&#8221; or whatever you call it) should do ONLY what its spec says. Nothing more. So Merb Core BlahBlah will have a spec, an API, and that is that. It is either finished or it&#8217;s not, but it will never do more than its spec says. Thus we have a clearly defined API and we ALWAYS know what it does. </p>
<p>I&#8217;m fairly sure this is what you&#8217;re trying to do with Merb: to get the simplest set of API&#8217;s possible across smallest-possible objects. If all the pieces are very very small, and they all do only one job, and one job well, and they all fit together very well, then fixing it will be easy, changing it will be easy, etc.</p>
<p>In short, I love you guys. :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jake</title>
		<link>http://yehudakatz.com/2008/06/04/rails-is-a-pre-fab-house/comment-page-1/#comment-12087</link>
		<dc:creator>Jake</dc:creator>
		<pubDate>Thu, 05 Jun 2008 01:32:55 +0000</pubDate>
		<guid isPermaLink="false">http://yehudakatz.com/?p=47#comment-12087</guid>
		<description>I think it&#039;s great that we have both Rails and Merb. Right now Rails fits my needs very well and so I don&#039;t feel a compelling reason to switch to Merb, but if I need something different that a pre-fab house I think its great that I have more options available without leaving Ruby. I think it was very important for Ruby to have one app with a lot of focus and momentum to draw people in, and now I think that Merb is just what we need to challenge Rails while also giving more power to Ruby.</description>
		<content:encoded><![CDATA[<p>I think it&#8217;s great that we have both Rails and Merb. Right now Rails fits my needs very well and so I don&#8217;t feel a compelling reason to switch to Merb, but if I need something different that a pre-fab house I think its great that I have more options available without leaving Ruby. I think it was very important for Ruby to have one app with a lot of focus and momentum to draw people in, and now I think that Merb is just what we need to challenge Rails while also giving more power to Ruby.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: si</title>
		<link>http://yehudakatz.com/2008/06/04/rails-is-a-pre-fab-house/comment-page-1/#comment-12086</link>
		<dc:creator>si</dc:creator>
		<pubDate>Wed, 04 Jun 2008 21:20:20 +0000</pubDate>
		<guid isPermaLink="false">http://yehudakatz.com/?p=47#comment-12086</guid>
		<description>I think the prefab you are thinking of is Drupal or Mambo? 

Seriously, Rails is plenty flexible for the same target space as Merb. The plugin architecture and ecosystem is a great strength too.</description>
		<content:encoded><![CDATA[<p>I think the prefab you are thinking of is Drupal or Mambo? </p>
<p>Seriously, Rails is plenty flexible for the same target space as Merb. The plugin architecture and ecosystem is a great strength too.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: wycats</title>
		<link>http://yehudakatz.com/2008/06/04/rails-is-a-pre-fab-house/comment-page-1/#comment-12085</link>
		<dc:creator>wycats</dc:creator>
		<pubDate>Wed, 04 Jun 2008 21:00:58 +0000</pubDate>
		<guid isPermaLink="false">http://yehudakatz.com/?p=47#comment-12085</guid>
		<description>@jshen the purpose of merb-slices, which was released to some fanfare a few weeks ago, is to allow exactly what you suggest. You simply install a slice (blog) to an existing app and it can have routes and everything. You can also override individual parts of the slice (routes, views, controllers, models, JS, etc.) by simply putting the overridden stuff in /slices/* and the stuff in there will win over the defaults in the slice.

Because Merb is threadsafe, I don&#039;t see any reason why it wouldn&#039;t be able to handle a ton of simultaneous requests in one JRuby process. Ping me on IRC (wycats on freenode) and we can discuss that a bit more.</description>
		<content:encoded><![CDATA[<p>@jshen the purpose of merb-slices, which was released to some fanfare a few weeks ago, is to allow exactly what you suggest. You simply install a slice (blog) to an existing app and it can have routes and everything. You can also override individual parts of the slice (routes, views, controllers, models, JS, etc.) by simply putting the overridden stuff in /slices/* and the stuff in there will win over the defaults in the slice.</p>
<p>Because Merb is threadsafe, I don&#8217;t see any reason why it wouldn&#8217;t be able to handle a ton of simultaneous requests in one JRuby process. Ping me on IRC (wycats on freenode) and we can discuss that a bit more.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ben</title>
		<link>http://yehudakatz.com/2008/06/04/rails-is-a-pre-fab-house/comment-page-1/#comment-12084</link>
		<dc:creator>Ben</dc:creator>
		<pubDate>Wed, 04 Jun 2008 20:53:11 +0000</pubDate>
		<guid isPermaLink="false">http://yehudakatz.com/?p=47#comment-12084</guid>
		<description>I&#039;m in the process of migrating a Rails app to Merb.  It&#039;s currently running on two different slices of the same hardware.  The Rails apps take 110 MB each.  The Merb apps take just over 40!

the more I use merb the more I like.  only thing I&#039;m going to miss (a lot) is RPM.</description>
		<content:encoded><![CDATA[<p>I&#8217;m in the process of migrating a Rails app to Merb.  It&#8217;s currently running on two different slices of the same hardware.  The Rails apps take 110 MB each.  The Merb apps take just over 40!</p>
<p>the more I use merb the more I like.  only thing I&#8217;m going to miss (a lot) is RPM.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jshen</title>
		<link>http://yehudakatz.com/2008/06/04/rails-is-a-pre-fab-house/comment-page-1/#comment-12083</link>
		<dc:creator>jshen</dc:creator>
		<pubDate>Wed, 04 Jun 2008 20:38:09 +0000</pubDate>
		<guid isPermaLink="false">http://yehudakatz.com/?p=47#comment-12083</guid>
		<description>@wycats

I plan to try out merb once it&#039;s at 1.0 and has good documentation. I think the goal you laid out is a good one. There are a few other things that would lead me to switch to merb overnight (for my personal projects). If I can add another merb application to my site, like a blog app under /blog, AND not have to run 3 more separate mongrel processes for it as I do with rails. Also, if I can run it under jruby and not have to run separate processes to handle simultaneous requests. I can go on, but it&#039;s just the standard rails issues that everyone is aware of.

The first is big for me because I do a bit of consulting and most small/medium sized businesses want a custom site, a blog, and a message board or some such. Having to run 9 processes at minimum is prohibitive to say the least. 

I have no idea if merb addresses these issue or plans to, but I&#039;ll switch if it does.</description>
		<content:encoded><![CDATA[<p>@wycats</p>
<p>I plan to try out merb once it&#8217;s at 1.0 and has good documentation. I think the goal you laid out is a good one. There are a few other things that would lead me to switch to merb overnight (for my personal projects). If I can add another merb application to my site, like a blog app under /blog, AND not have to run 3 more separate mongrel processes for it as I do with rails. Also, if I can run it under jruby and not have to run separate processes to handle simultaneous requests. I can go on, but it&#8217;s just the standard rails issues that everyone is aware of.</p>
<p>The first is big for me because I do a bit of consulting and most small/medium sized businesses want a custom site, a blog, and a message board or some such. Having to run 9 processes at minimum is prohibitive to say the least. </p>
<p>I have no idea if merb addresses these issue or plans to, but I&#8217;ll switch if it does.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Carl</title>
		<link>http://yehudakatz.com/2008/06/04/rails-is-a-pre-fab-house/comment-page-1/#comment-12081</link>
		<dc:creator>Carl</dc:creator>
		<pubDate>Wed, 04 Jun 2008 19:44:56 +0000</pubDate>
		<guid isPermaLink="false">http://yehudakatz.com/?p=47#comment-12081</guid>
		<description>@wycats: I was just having some fun with the metaphor :P.</description>
		<content:encoded><![CDATA[<p>@wycats: I was just having some fun with the metaphor :P.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: wycats</title>
		<link>http://yehudakatz.com/2008/06/04/rails-is-a-pre-fab-house/comment-page-1/#comment-12080</link>
		<dc:creator>wycats</dc:creator>
		<pubDate>Wed, 04 Jun 2008 19:38:27 +0000</pubDate>
		<guid isPermaLink="false">http://yehudakatz.com/?p=47#comment-12080</guid>
		<description>@jshen my point had more to do with how a framework should go about providing ways to customize. Rails encourages the extensive use of things like alias_method_chain to extend any part of the framework. As a result, it&#039;s not easy for them to refactor and improve things because literally every method in Rails is considered &quot;public API.&quot;

Merb exposes very explicit modular extension points, and we&#039;ve given a lot of thought to exactly how things should fit together. It&#039;s much harder, but the benefit is that we don&#039;t use Ruby&#039;s metaprogramming facilities in lieu of a known developer API, and we can refactor internals much more easily.

In addition, it&#039;s a lot *less* likely that plugin authors will stomp on top of each other (although I agree that you can&#039;t eliminate that possibility entirely). In effect, we&#039;re taking convention over configuration to the next level and handing it to the PLUGIN authors.</description>
		<content:encoded><![CDATA[<p>@jshen my point had more to do with how a framework should go about providing ways to customize. Rails encourages the extensive use of things like alias_method_chain to extend any part of the framework. As a result, it&#8217;s not easy for them to refactor and improve things because literally every method in Rails is considered &#8220;public API.&#8221;</p>
<p>Merb exposes very explicit modular extension points, and we&#8217;ve given a lot of thought to exactly how things should fit together. It&#8217;s much harder, but the benefit is that we don&#8217;t use Ruby&#8217;s metaprogramming facilities in lieu of a known developer API, and we can refactor internals much more easily.</p>
<p>In addition, it&#8217;s a lot *less* likely that plugin authors will stomp on top of each other (although I agree that you can&#8217;t eliminate that possibility entirely). In effect, we&#8217;re taking convention over configuration to the next level and handing it to the PLUGIN authors.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jshen</title>
		<link>http://yehudakatz.com/2008/06/04/rails-is-a-pre-fab-house/comment-page-1/#comment-12079</link>
		<dc:creator>jshen</dc:creator>
		<pubDate>Wed, 04 Jun 2008 19:01:20 +0000</pubDate>
		<guid isPermaLink="false">http://yehudakatz.com/?p=47#comment-12079</guid>
		<description>@knowtheory

&quot;As a result, you lose the compatibility not only in terms of software (i.e. plugins and the like), but also in your ability to hire people who know Rails (well, that or you need more to time to train them).&quot;

more time to train them compared to what? Teaching someone your customizations while leveraging their previous knowledge for everything else (i.e. rails knowledge) is less time than if they had to learn your whole setup. 

&quot;Rails lets you paint yourself into a corner, or worse yet, lets plugin authors you rely on paint you into a corner (the company i work with has had that happen). Then you get to spend your time undoing other people’s bad decision making in order to continue moving forward.&quot;

I&#039;ve had this happen as well, but this isn&#039;t rails fault. It&#039;s the fault of the plugin authors and whomever made the decision to use that plugin. I learned very fast that most plugins are crap and I had to review them before allowing them into my apps. Again, this is not a rails problem and you&#039;ll find it anywhere you try to use third party code. Code reuse is hard, period. 

&quot;Wycats’s point, as i take it, is that merb is modularized to a degree where if a chunk of your app is causing you trouble, you can just pull it out and replace i&quot;

Again this goes against your argument about training time. Someone coming into a project where you did this will require more training than someone coming into a rails project with some customization.</description>
		<content:encoded><![CDATA[<p>@knowtheory</p>
<p>&#8220;As a result, you lose the compatibility not only in terms of software (i.e. plugins and the like), but also in your ability to hire people who know Rails (well, that or you need more to time to train them).&#8221;</p>
<p>more time to train them compared to what? Teaching someone your customizations while leveraging their previous knowledge for everything else (i.e. rails knowledge) is less time than if they had to learn your whole setup. </p>
<p>&#8220;Rails lets you paint yourself into a corner, or worse yet, lets plugin authors you rely on paint you into a corner (the company i work with has had that happen). Then you get to spend your time undoing other people’s bad decision making in order to continue moving forward.&#8221;</p>
<p>I&#8217;ve had this happen as well, but this isn&#8217;t rails fault. It&#8217;s the fault of the plugin authors and whomever made the decision to use that plugin. I learned very fast that most plugins are crap and I had to review them before allowing them into my apps. Again, this is not a rails problem and you&#8217;ll find it anywhere you try to use third party code. Code reuse is hard, period. </p>
<p>&#8220;Wycats’s point, as i take it, is that merb is modularized to a degree where if a chunk of your app is causing you trouble, you can just pull it out and replace i&#8221;</p>
<p>Again this goes against your argument about training time. Someone coming into a project where you did this will require more training than someone coming into a rails project with some customization.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
