<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Merbist &#187; merb</title>
	<atom:link href="http://merbist.com/tag/merb/feed/" rel="self" type="application/rss+xml" />
	<link>http://merbist.com</link>
	<description>Random thoughts of a software developer</description>
	<lastBuildDate>Sat, 05 May 2012 14:16:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Learning from Rails&#8217; failures</title>
		<link>http://merbist.com/2012/02/29/learning-from-rails-failures/</link>
		<comments>http://merbist.com/2012/02/29/learning-from-rails-failures/#comments</comments>
		<pubDate>Wed, 29 Feb 2012 15:48:08 +0000</pubDate>
		<dc:creator>Matt Aimonetti</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[Software Design]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[merb]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://merbist.com/?p=1251</guid>
		<description><![CDATA[Ruby on Rails undisputedly changed the way web frameworks are designed. Rails became a reference when it comes to leveraging conventions, easy baked in feature set and a rich ecosystem. However, I think that Rails did and still does a lot of things pretty poorly.  By writing this post, I&#8217;m not trying to denigrate Rails, [...]]]></description>
			<content:encoded><![CDATA[<p>Ruby on Rails undisputedly changed the way web frameworks are designed. Rails became a reference when it comes to leveraging conventions, easy baked in feature set and a rich ecosystem. However, I think that Rails did and still does a lot of things pretty poorly.  By writing this post, I&#8217;m not trying to denigrate Rails, there are many other people out there already doing that. My hope is that by listing what I think didn&#8217;t and still doesn&#8217;t go well, we can learn from our mistakes and improve existing solutions or create better new ones.</p>
<p><a href="http://merbist.com/2012/02/29/learning-from-rails-failures/train_fail/" rel="attachment wp-att-1253"><img class="aligncenter size-medium wp-image-1253" title="train fail" src="http://merbist.com/wp-content/uploads/2012/02/train_fail-300x188.jpg" alt="" width="300" height="188" /></a></p>
<h2>Migration/upgrades</h2>
<p>Migrating a Rails App from a version to the other is very much like playing the lottery, you are almost sure you will lose. To be more correct, you know things will break, you just don&#8217;t know what, when and how. The Rails team seems to think that everybody is always running on the cutting edge version and don&#8217;t consider people who prefer to stay a few version behind for stability reasons. What&#8217;s worse is that plugins/gems might or might not compatible with the version you are updating to, but you will only know that by trying yourself and letting others try and report potential issues.</p>
<p>This is for me, by far, the biggest issue with Rails and something that should have been fixed a long time ago. If you&#8217;re using the WordPress blog engine, you know how easy and safe it is to upgrade the engine or the plugins. Granted WordPress isn&#8217;t a web dev framework, but it gives you an idea of what kind of experience we should be striving for.</p>
<p>&nbsp;</p>
<h2>Stability vs playground zone</h2>
<p>New features are cool and they help make the platform more appealing to new comers. They also help shape the future of a framework. But from my perspective, that shouldn&#8217;t come to the cost of stability. Rails 3&#8242;s new asset pipeline is a good example of a half-baked solution shoved in a release at the last minute and creating a nightmare for a lot of us trying to upgrade. I know, I know, you can turn off the asset pipeline and it got better since it was first released. But shouldn&#8217;t that be the other way around? Shouldn&#8217;t fun new ideas risking the stability of an app or making migration harder, be off by default and turned on only by people wanting to experiment? When your framework is young, it&#8217;s normal that you move fast and sometimes break, but once it matures, these things shouldn&#8217;t happen.</p>
<p>&nbsp;</p>
<h2>Public/private/plugin APIs</h2>
<p>This is more of a recommendation than anything else. When you write a framework in a very dynamic language like Ruby, people will &#8220;monkey patch&#8221; your code to inject features. Sometimes it is due to software design challenges, sometimes it&#8217;s because people don&#8217;t know better. However,  by not explicitly specifying what APIs are private (they can change at anytime, don&#8217;t touch), what APIs are public (stable, will be slowly deprecated when they need to be changed) and which ones are for plugin devs only (APIs meant for instrumentation, extension etc..), you are making migration to newer versions much harder. You see, if you have a small, clean public API, then it&#8217;s easy to see what could break, warn developers and avoid migration nightmares. However, you need to start doing that early on in your project, otherwise you will end up like Rails where all code can potentially change anytime.</p>
<p>&nbsp;</p>
<h2>Rails/Merb merge was a mistake</h2>
<p>This is my personal opinion and well, feel free to disagree, nobody will ever be able to know to for sure. Without explaining what happened behind closed doors and the various personal motivations, looking at the end result, I agree with the group of people thinking that the merge didn&#8217;t turn up to be a good thing. For me, Rails 3 isn&#8217;t significantly better than Rails 2 and it took forever to be released. You still can&#8217;t really run a mini Rails stack like promised. I did hear that Strobe (company who was hiring Carl Lerche, Yehuda Katz and contracted Jose Valim) used to have an ActionPack based, mini stack but it was never released and apparently only Rails core members really knew what was going on there. Performance in vanilla Rails 3 are only now getting close to what you had with Rails 2 (and therefore far from the perf you were getting with Merb). Thread-safety is still OFF by default meaning that by default your app uses a giant lock only allowing a process to handle 1 request at a time. For me, the flexibility and performance focus of Merb were mainly lost in the merge with Rails. (Granted, some important things such as ActiveModel, cleaner internals and others have made their way into Rails 3)</p>
<p>But what&#8217;s worse than everything listed so far is that the lack of competition and the internal rewrites made Rails lose its headstart.  Rails is very much HTML/view focused, its primarily strength is to make server side views trivial and it does an amazing job at that. But let&#8217;s be honest, that&#8217;s not the future for web dev. The future is more and more logic pushed to run on the client side (in JS) and the server side being used as an API serving data for the view layer. I&#8217;m sorry but adding support for CoffeeScript doesn&#8217;t really do much to making Rails evolve ahead of what it currently is. Don&#8217;t get me wrong, I&#8217;m a big fan of CoffeeScript, that said I still find that Rails is far from being optimized to developer web APIs in Rails. You can certainly do it, but you are basically using a tool that wasn&#8217;t designed to write APIs and you pay the overhead for that. If there is one thing I wish Rails will get better at is to make writing pure web APIs better (thankfully there is Sinatra). But at the end of the day, I think that two projects with different philosophies and different approaches are really hard to merge, especially in the open source world. I wouldn&#8217;t go as far as saying like others that Rails lost its sexiness to node.js because of the wasted time, but I do think that things would have been better for all if that didn&#8217;t happen. However, I also have to admit that I&#8217;m not sure how much of a big deal that is. I prefer to leave the past behind, learn from my own mistake and move on.</p>
<p>&nbsp;</p>
<h2>Technical debts</h2>
<p>Here I&#8217;d like to stop to give a huge props to Aaron &#8220;<a href="http://twitter.com/tenderlove" target="_blank">@tenderlove</a>&#8221; Patterson, the man who&#8217;s actively working to reduce the <a href="http://en.wikipedia.org/wiki/Technical_debt" target="_blank">technical debts</a> in the Rails code base. This is a really hard job and definitely not a very glamorous one. He&#8217;s been working on various parts of Rails including its router and its ORM (ActiveRecord). Technical debts are unfortunately normal in most project, but sometimes they are overwhelming to the point that nobody dares touching the code base to clean it up. This is a hard problem, especially when projects move fast like Rails did. But looking back, I think that you want to start tackling technical debts on the side as you move on so you avoid getting to the point that you need a hero to come up and clean the piled errors made in the past. But don&#8217;t pause your entire project to clean things up otherwise you will lose market, momentum and excitement. I feel that this is also very much true for any legacy project you might pick up as a developer.</p>
<p>&nbsp;</p>
<h2>Keep the cost of entry level low</h2>
<p>Getting started with Rails used to be easier. This can obviously argued since it&#8217;s very subjective, but from my perspective I think we forgot where we come from and we involuntary expect new comers to come with unrealistic knowledge. Sure, Rails does much more than it used to do, but it&#8217;s also much harder to get started. I&#8217;m not going to argue how harder  it is now or why we got there. Let&#8217;s just keep in mind that it is a critical thing that should always be re-evaluated. Sure, it&#8217;s harder when you have an open source project, but it&#8217;s also up to the leadership to show that they care and to encourage and mentor volunteers to  focus on this important part of a project.</p>
<p>&nbsp;</p>
<h2>Documentation</h2>
<p>Rails documentation isn&#8217;t bad, but it&#8217;s far from being great. Documentation certainly isn&#8217;t one of the Ruby&#8217;s community strength, especially compared with the Python community, but what saddens me is to see the state of <a href="http://guides.rubyonrails.org/" target="_blank">the official documentation</a> which, should, in theory be the reference. Note that the Rails guides are usually well written and provide value, but they too often seem too light and not useful when you try to do something not totally basic (for instance use an ActiveModel compliant object). That&#8217;s probably why most people don&#8217;t refer to them or don&#8217;t spend too much time there. I&#8217;m not trying to blame anyone there. I think that the people who contributed theses guides did an amazing job, but if you want to build a strong and easy to access community, great documentation is key. Look at the <a title="Django docs" href="https://docs.djangoproject.com/en/1.3/" target="_blank">Django</a> documentation as a good example. That said, I also need to acknowledge the amazing job done by many community members such as <a href="http://railscasts.com/" target="_blank">Ryan Bates</a> and <a href="http://ruby.railstutorial.org/" target="_blank">Michael Hartl</a> consistently providing high value external documentation via the <a href="http://railscasts.com/" target="_blank">railscasts</a> and the intro to <a href="http://ruby.railstutorial.org/" target="_blank">Rails tutorial</a> available for free.</p>
<p>&nbsp;</p>
<p>In conclusion, I think that there is a lot to learn from Rails, lots of great things as well as lots of things you would want to avoid. We can certainly argue on Hacker News or via comments about whether or not I&#8217;m right about Rails failures, my point will still be that the mentioned issues should be avoided in any projects, Rails here is just an example. Many of these issues are currently being addressed by the Rails team but wouldn&#8217;t it be great if new projects learn from older ones and avoid making the same mistakes? So what other mistakes do you think I forgot to mention and that one should be very careful of avoiding?</p>
<p>&nbsp;</p>
<h3>Updates:</h3>
<ol>
<li>Rails 4 had an API centric app generator but it <a href="https://github.com/rails/rails/commit/6db930cb5bbff9ad824590b5844e04768de240b1">was quickly reverted</a> and will live as gem until it&#8217;s mature enough.</li>
<li>Rails 4 improved the ActiveModel API to be simpler to get started with. See <a href="http://blog.plataformatec.com.br/2012/03/barebone-models-to-use-with-actionpack-in-rails-4-0/">this blog</a> post for more info.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://merbist.com/2012/02/29/learning-from-rails-failures/feed/</wfw:commentRss>
		<slash:comments>36</slash:comments>
		</item>
		<item>
		<title>Ruby authentication of CouchDB requests</title>
		<link>http://merbist.com/2009/07/13/ruby-authentication-of-couchdb-requests/</link>
		<comments>http://merbist.com/2009/07/13/ruby-authentication-of-couchdb-requests/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 21:00:13 +0000</pubDate>
		<dc:creator>Matt Aimonetti</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[couchdb]]></category>
		<category><![CDATA[merb]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://merbist.com/?p=526</guid>
		<description><![CDATA[CouchDB is an awesome technology. I&#8217;m lucky enough to work on quite a big project where we decided to switch from MySQL to Couch for various reasons. One of the many things I like with Couch is that it handles attachments and can replicate them as well as serve them for you using the Erlang based [...]]]></description>
			<content:encoded><![CDATA[<p><a id="aptureLink_Bt9pVZgkt6" href="http://couchdb.apache.org/">CouchDB</a> is an awesome technology. I&#8217;m lucky enough to work on quite a big project where we decided to switch from MySQL to Couch for various reasons.</p>
<p>One of the many things I like with Couch is that it handles attachments and can replicate them as well as serve them for you using the <a id="aptureLink_A3nCuwtmaZ" href="http://en.wikipedia.org/wiki/Erlang%20%28programming%20language%29">Erlang</a> based builtin webserver. (you can load balance your dbs and do some other really cool stuff)</p>
<p>Let&#8217;s take a use case. Let&#8217;s imagine that you have a web app with logged in users. Every user can have their own avatar.</p>
<p>No big deal, you get the user to upload his/her avatar to your app and add it to the user document in the database. To serve it from the database, you just need to create a proxy in nginx/apache and redirect the virtual avatar url to the protected DB making sure the request is a GET request.</p>
<p>Add to that a caching solution like <a id="aptureLink_7B5BbhbrSj" href="http://varnish.projects.linpro.no/">varnish</a> or <a id="aptureLink_MulN3wi3Jx" href="http://www.igvita.com/2008/02/11/nginx-and-memcached-a-400-boost/">memcached module for nginx</a> and all your db goodies get cached and served by the cache (server/client) until they get modified.</p>
<p>Now, the problem is when you want to serve authorized attachments. Let&#8217;s imagine that we want to let our users upload private files, files that should be accessible only by the owner or users designated by the owner.</p>
<p>In this case, a simple <a id="aptureLink_LIwhLKDqD9" href="http://en.wikipedia.org/wiki/Nginx">nginx</a> rewrite wouldn&#8217;t work. We need to authorize attachment requests. Here is a cool way of doing that using nginx and merb&#8217;s router. (Expect Rails3 router to do the same).</p>
<p>Let&#8217;s start by setting up nginx and create a proxy for couchdb:</p>
<p><script src="http://gist.github.com/146451.js"></script> Now that this is done, we are going to use Merb&#8217;s awesome router to handle the incoming requests. The cool part of this is that we won&#8217;t be dispatching requests so, going through the router is almost free. (check on the Merb router benchmarks for more info).  Let&#8217;s edit our router and set a special route for our assets.  <script src="http://gist.github.com/146450.js"></script></p>
<p>We are using a deferred route which gets executed instead of dispatching the request.</p>
<p>If the attachment route is being matched then we are checking what environment we are currently running in. If we are in production or staging environment then we are sending back a rack response to the webserver. The response is just a forward to the proper couchdb document behind the proxy. Of course, before allowing that to happen, we could authenticate the logged in user, log the request and do a couple of other things. You have full access to your models from the router, so authenticating a session isn&#8217;t a big deal. You could even create temporarily urls like AWS s3 does.</p>
<p>If we are not in production or staging mode, then just redirect the request to couch since we assume you have access to the local db. This way, your asset urls will be working in production and dev. In real life, you&#8217;ll want to apply the authorization before choosing how to deliver the document/attachment tho as you want it work the same way in development and production.</p>
]]></content:encoded>
			<wfw:commentRss>http://merbist.com/2009/07/13/ruby-authentication-of-couchdb-requests/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>RailsConf 2009</title>
		<link>http://merbist.com/2009/05/08/railsconf-2009/</link>
		<comments>http://merbist.com/2009/05/08/railsconf-2009/#comments</comments>
		<pubDate>Fri, 08 May 2009 20:18:18 +0000</pubDate>
		<dc:creator>Matt Aimonetti</dc:creator>
				<category><![CDATA[merb]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[enterprise]]></category>
		<category><![CDATA[rails3]]></category>
		<category><![CDATA[railsconf]]></category>
		<category><![CDATA[vegas]]></category>

		<guid isPermaLink="false">http://merbist.com/?p=487</guid>
		<description><![CDATA[RailsConf 2009 has now finished.  This time last year, no one would have ever guessed that the Merb and Rails teams would join forces and focus on what will hopefully be known as one of the best Web Frameworks. It was encouraging to see so many people excited about what&#8217;s being ported over from Merb [...]]]></description>
			<content:encoded><![CDATA[<p>RailsConf 2009 has now finished.  This time last year, no one would have ever guessed that the Merb and Rails teams would join forces and focus on what will hopefully be known as one of the best Web Frameworks.</p>
<p>It was encouraging to see so many people excited about what&#8217;s being ported over from Merb and the new options available to people who are currently limited by the existing stack. For those interested in pushing Rails further and doing stuff out of the norm, here are my slides. <a href="http://www.workingwithrails.com/person/5919-arthur-zapparoli" target="_blank">Arthur Zapparoli</a> from <a href="http://www.rubyonrails.pro.br/" target="_blank">Brazilian Rails squad</a> recorded most of the talk and told me he will upload the video ASAP. You can also read <a href="http://yehudakatz.com/2009/05/08/railsconf-wrapup/" target="_blank">Yehuda Katz&#8217; blog</a> which covers what he talked about.</p>
<div id="__ss_1396365" style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Rails3: Stepping off of the golden path" href="http://www.slideshare.net/mattetti/rails3-stepping-off-of-the-golden-path?type=presentation">Rails3: Stepping off of the golden path</a><object width="425" height="355" data="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=steppingoffofthegoldenpath-090506154117-phpapp01&amp;rel=0&amp;stripped_title=rails3-stepping-off-of-the-golden-path" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=steppingoffofthegoldenpath-090506154117-phpapp01&amp;rel=0&amp;stripped_title=rails3-stepping-off-of-the-golden-path" /><param name="allowfullscreen" value="true" /></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/mattetti">Matt Aimonetti</a>.</div>
</div>
<p>It was really great to meet a lot of new people as well as people I only knew via IRC/IM/twitter.</p>
<p>It was a great honor to finally meet <a href="http://twitter.com/dkubb" target="_blank">Dan Kubb</a> (DataMapper), <a href="http://twitter.com/ninh" target="_blank">Ninh Hernandez-Búi</a> &amp; <a href="http://twitter.com/phusion_nl" target="_blank">Hongli McLovin Lai (Phusion)</a>, <a href="http://twitter.com/peterc" target="_blank">Peter Cooper</a> (<a href="http://www.rubyinside.com/" target="_blank">RubyInside</a>), <a href="http://twitter.com/rsim" target="_blank">Raimonds Simanovskis</a> (Oracle adapter for AR), <a href="http://weblogs.java.net/blog/arungupta/" target="_blank">Arun Gupta</a> (Sun/Glassfish),  <a href="http://twitter.com/copiousfreetime" target="_blank">Jeremy Hinegardner</a> (crate), <a href="http://maximilien.org" target="_blank">Michael Maxilien</a> (IBM), Dana Jones (<a href="http://railsbridge.org/" target="_blank">railsbridge</a>), Zach Zolton &amp; Geoff Buesing (CouchRest) and of course the Brazilian crew (lots of awesome .br guys came this year, I&#8217;m looking forward to RailsSummit) and last but not least, the French speaking crew (I&#8217;m glad to see Ruby is picking up back home). (I know I&#8217;m forgetting people&#8230; sorry about that)</p>
<p>It was also really nice to talk with some experts like Dave Astels, Aslak Hellesøy, Rich Kilmer, David Chelimsky, Ryan Brown, Derek Neighbors etc.. to get their feedback on various projects I&#8217;m working on.</p>
<p>Leaving Vegas, I feel like the Rails community is expanding quickly (it was the first RailsConf for 1/4 to 1/5 of the attendees) and that the community is organizing itself to welcome a new audience (better documentation, great initiatives like <a href="http://railsbridge.org/" target="_blank">railsbridge.org</a>, willingness to help), as well as trying to be more available to the &#8216;Enterprise&#8217; world.</p>
<p>These feelings were enforced during our Rails Activism BOF and after talking with 3rd party developers and sponsors really trying to solve problems that newcomers to Rails are now facing. This is an exciting time.</p>
]]></content:encoded>
			<wfw:commentRss>http://merbist.com/2009/05/08/railsconf-2009/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Merb 1.0.10 (minor release)</title>
		<link>http://merbist.com/2009/03/18/merb-1010-minor-release/</link>
		<comments>http://merbist.com/2009/03/18/merb-1010-minor-release/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 01:11:35 +0000</pubDate>
		<dc:creator>Matt Aimonetti</dc:creator>
				<category><![CDATA[merb]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://merbist.com/?p=456</guid>
		<description><![CDATA[We just pushed a really tiny update because of a bug in 1.0.9 affecting people using: Merb::Config[:max_memory] Merb::Config[:max_memory] has been fixed and now polls for memory usage every 30s instead of 0.25s. (memory is set in KB) This new version also uses DataMapper.repository instead of Kernel#repository (DM and Vlad related bug fix) We are still [...]]]></description>
			<content:encoded><![CDATA[<p>We just pushed a really tiny update because of a bug in 1.0.9 affecting people using: Merb::Config[:max_memory]</p>
<p>Merb::Config[:max_memory] has been fixed and <span class="status-body"><span class="entry-content">now polls for memory usage every 30s instead of 0.25s. (memory is set in KB)<br />
</span></span></p>
<p><span class="status-body"><span class="entry-content">This new version also uses DataMapper.repository instead of Kernel#repository (DM and Vlad related bug fix)</span></span></p>
<p><span class="status-body"><span class="entry-content"><br />
</span></span></p>
<p><span class="status-body"><span class="entry-content">We are still on schedule for Merb 1.1 which is planned for early April. (If you install Merb from our edge server, the latest version should already be Ruby 1.9 compatible)<br />
</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://merbist.com/2009/03/18/merb-1010-minor-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Merb 1.1 roadmap</title>
		<link>http://merbist.com/2009/03/02/merb-11-roadmap/</link>
		<comments>http://merbist.com/2009/03/02/merb-11-roadmap/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 19:20:34 +0000</pubDate>
		<dc:creator>Matt Aimonetti</dc:creator>
				<category><![CDATA[merb]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://merbist.com/?p=448</guid>
		<description><![CDATA[Yesterday, Carl Lerche, Yehuda Katz and myself had a meeting to discuss Merb 1.1&#8242;s roadmap. Key items on the agenda were: Ruby 1.9 Mountable apps migration path to Rails3 After spending some time arguing back and forth, we decided that few things had to happen before we could migrate the current slices to pure mountable [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday, Carl Lerche, Yehuda Katz and myself had a meeting to discuss Merb 1.1&#8242;s roadmap.</p>
<p>Key items on the agenda were:</p>
<ul>
<li> <strong>Ruby 1.9</strong></li>
<li> <strong>Mountable apps</strong></li>
<li> <strong>migration path to Rails3</strong></li>
</ul>
<p>After spending some time arguing back and forth, we decided that few things had to happen before we could migrate the current slices to pure mountable apps. Freezing the releases while waiting to get that done doesn&#8217;t seem like a good idea.</p>
<h3>Therefore, here is the plan for Merb 1.1:</h3>
<ul>
<li><strong>Ruby 1.9 full compatibility</strong> (with the very appreciated help from <a href="http://twitter.com/maiha" target="_blank">Maiha</a> and <a href="http://blog.s21g.com/takiuchi" target="_blank">Genki</a> (preview of their work <a href="http://merbi.st" target="_blank">there</a>)). Because Merb depends on different gems, we also need to work with 3rd party developers to make sure Merb&#8217;s dependencies are Ruby 1.9 compatible</li>
</ul>
<ul>
<li><strong>Merb helpers</strong> (fixes, enhancement and missing helpers)</li>
</ul>
<ul>
<li><strong>Make Merb controllers, rack endpoints</strong>. This is a fully transparent change for the framework users. By making this switch, we offer more flexibility to the router (you can mount a sinatra app for instance) and we adopt the same approach as Rails 2.3 making the transition to 3 much easier and facilitating the implementation of mountable apps. Again, this is an internal change and you won&#8217;t have to change anything in your application.</li>
</ul>
<ul>
<li><strong>Router optimization</strong>, Carl has been working on few tricks/optimizations for the router that will be available in 1.1</li>
</ul>
<ul>
<li><strong>Namespacing</strong>. If we want to make every single application, a potential mountable app, we need to namespace our applications. This is something we already do with slices, but currently generated applications are not namespaced. We are planning on doing that for 1.1 (backward compatible) to make mountable apps easier.</li>
</ul>
<ul>
<li><strong>ActiveORM</strong>. ActiveORM is an ORM abstraction layer developed by Lori Holden (AT&amp;T interactive) which helps with helpers and other parts of your code accessing your ORM directly. For instance, the errors_for method need to be implemented differently depending on the underlying ORM. ActiveORM offers mapping for the 3 major Ruby ORMs: ActiveRecord, DataMapper and Sequel but let you hook to it if you want to extend ActiveORM to support your own ORM.</li>
</ul>
<p>There is plenty to do but we decided to still try to have an expected release date: around the end of March. As always in the OSS world, this is something we hope for, not a promise <img src='http://merbist.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3>What about Merb 1.2?</h3>
<p>1.2 will focus on mountable apps and we hope to get started on a separate branch before we release 1.1. However, mountable apps are hard to spec and we need a better feedback from the community. Tell us what you like with slices and what you don&#8217;t like. Let us know how you would like the new mountable apps to work. Be as precise as possible. (you can leave a comment here or on the mailing list)</p>
]]></content:encoded>
			<wfw:commentRss>http://merbist.com/2009/03/02/merb-11-roadmap/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Meet the merbists: Hampton Catlin</title>
		<link>http://merbist.com/2009/01/06/meet-the-merbists-hampton-catlin/</link>
		<comments>http://merbist.com/2009/01/06/meet-the-merbists-hampton-catlin/#comments</comments>
		<pubDate>Tue, 06 Jan 2009 20:13:37 +0000</pubDate>
		<dc:creator>Matt Aimonetti</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[hampton catlin]]></category>
		<category><![CDATA[Meet the merbists]]></category>
		<category><![CDATA[merb]]></category>
		<category><![CDATA[wikipedia]]></category>

		<guid isPermaLink="false">http://merbist.com/?p=417</guid>
		<description><![CDATA[Meet today&#8217;s merbist: Hampton Catlin I&#8217;m personally looking forward to seeing Hampton&#8217;s work migrated to Rails 3 in a few months. &#160; Matt Aimonetti: Hi Hampton, could you please introduce yourself and tell us what you do for a living. Hampton Catlin: I&#8217;m Hampton Catlin. I&#8217;m &#8220;The Haml Guy&#8221; as I&#8217;m apparently termed all the [...]]]></description>
			<content:encoded><![CDATA[<div class="mtm-question"><img class="alignleft" title="Hampton Catlin" src="http://farm1.static.flickr.com/156/379744976_8f241811fe_m.jpg" alt="Matt Aimonetti interviewing Hampton Catlin" width="160" height="240" /></div>
<div class="mtm-question">Meet today&#8217;s merbist: <a href="http://hamptoncatlin.com/" target="_blank">Hampton Catlin</a></div>
<div class="mtm-question">I&#8217;m personally looking forward to seeing Hampton&#8217;s work migrated to Rails 3 in a few months.</div>
<p>&nbsp;</p>
<div class="mtm-question"><strong>Matt Aimonetti</strong>: Hi Hampton, could you please introduce yourself and tell us what you do for a living.</div>
<div class="mtm-answer"><strong>Hampton Catlin: </strong>I&#8217;m Hampton Catlin. I&#8217;m &#8220;The Haml Guy&#8221; as I&#8217;m apparently termed all the time when introduced. I&#8217;m an early Rails hacker who has done a lot more than Haml, but whatever. These days, I&#8217;m doing a ton of iPhone development and am currently heading Wikimedia&#8217;s efforts for a new mobile platform&#8230; based on Merb!</div>
<p>&nbsp;</p>
<div class="mtm-question"><strong>Matt Aimonetti</strong>: How did you get started with Ruby, what&#8217;s your background?</div>
<div class="mtm-answer"><strong>Hampton Catlin</strong>: Well, everyone is welcome to laugh. But Slashdot introduced me to Ruby. I got into it about two months before Rails because the hotness (it was an obscure project at the time) and I grabbed a copy of the Pickaxe and never looked back. Prior to that I was working a crappy job getting people coffee at a bank. And then prior to that I was doing research for Nasa at my university with Java beuwolf clusters. It sounds fancier than it was.</div>
<p>&nbsp;</p>
<div class="mtm-question"><strong>Matt Aimonetti:</strong> You chose to learn and use Merb, could you please let us know why and how that happened?</div>
<div class="mtm-answer"><strong>Hampton Catlin: </strong>I had known of Ezra for a while and Yehuda. And so when I heard about the project, I was very interested. At the time I was looking forward to using a &#8220;Rails Light&#8221;. Of course, we know Merb is much more than that, but that was the original attraction.<br class="spacer" /><br />
Also, at some point I got really upset by the use of global variables in both of the frameworks, so I did some major patching to Merb to change over to module based constants. Aka, Merb.root instead of MERB_ROOT. I was ranting about it enough that I decided to do something about it. Also, I did some patches that messed up Merb with some weird documentation stuff. Sorry, Ezra.</div>
<p>&nbsp;</p>
<div class="mtm-question"><strong>Matt Aimonetti</strong>: Do you have some Merb projects available online we can look at? what was your experience so far?</div>
<div class="mtm-answer"><strong>Hampton Catlin</strong>: My most successful iPhone app (which was recently purchased by Wikimedia) was an app to browse Wikipedia. I chose Merb because I knew that I wanted something a little more bare bones than Rails, and it turned out to be a really good choice. And now, I&#8217;m getting a chance to extend that work into an entire platform for Wikimedia mobile. I am still looking for help with it&#8230;.<a href="http://github.com/hcatlin/wikimedia-mobile/tree/master">http://github.com/hcatlin/wikimedia-mobile/tree/master</a><br />
Its not live yet with wikipedia, but that&#8217;s the code that you can help with! <img src='http://merbist.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
</div>
<p>&nbsp;</p>
<div class="mtm-question"><strong>Matt Aimonetti</strong> What is your favorite aspect of the Merb framework?</div>
<div class="mtm-answer"><strong>Hampton Catlin: </strong>Its modular design. Its as complex or as simple as you would like it to be. Also, its easy to run Haml, and the more people that use Haml, the harder my nipples get.</div>
<p>&nbsp;</p>
<div class="mtm-question"><strong>Matt Aimonetti</strong> Could you please mention an aspect of Merb you hope to see being improved in the near future?</div>
<div class="mtm-answer"><strong>Hampton Catlin</strong>: Honestly, everyone is wild about gems, but I&#8217;m not particularly. I find gem management a bit cumbersome. I&#8217;m most likely doing something wrong or not doing it the right way. But yeah, I still find it cumbersome. I&#8217;d like to pair the excellent Gem support with better library creation support. I think both are needed. I don&#8217;t want to throw stuff in my /lib folder or randomly in my project. I want some structure and some simplicity. Somewhere between plugins and base libraries. I think this is where Merb *could* shine.<br class="spacer" /><br />
Also, resource handling. I wrote make_resourceful for Rails and I keep needing to do something similar for Merb. m_r is not very popular because I haven&#8217;t really put much time into spreading the word. Mostly, I just use it. However, there are about 60 other Rails developers in the world that use it extensively. So, its a small, close-knit group of developers using the tool. And, I think something like it could be much more elegantly mixed into Merb. Obviously its a plug-in, but I think its a low hanging fruit. &#8220;current_object&#8221; as a method should ALWAYS be around when its logical.</div>
<p>&nbsp;</p>
<div class="mtm-question"><strong>Matt Aimonetti</strong> Thank you for your time. Anything else you would like to add?</div>
<div class="mtm-answer"><strong>Hampton Catlin</strong>: Buy my book. Buy my book. Buy my book. Buy my book. Buy my book. Buy my book. Buy my book. Buy my book. Buy my book. Buy my book. Ok, not really. My book isn&#8217;t very good. But, I just wanted to make a &#8220;The Critic&#8221; reference.</div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://merbist.com/2009/01/06/meet-the-merbists-hampton-catlin/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Presenting the Rails Activists</title>
		<link>http://merbist.com/2009/01/05/presenting-the-rails-activists/</link>
		<comments>http://merbist.com/2009/01/05/presenting-the-rails-activists/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 18:15:44 +0000</pubDate>
		<dc:creator>Matt Aimonetti</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[activists]]></category>
		<category><![CDATA[evangelism]]></category>
		<category><![CDATA[merb]]></category>
		<category><![CDATA[rails 3.0]]></category>
		<category><![CDATA[rails3]]></category>

		<guid isPermaLink="false">http://merbist.com/?p=422</guid>
		<description><![CDATA[Today is Monday. I usually don&#8217;t like Mondays. Being Monday goes with waking up early, going back to work, and lots of deadlines. However, today is a special Monday. It&#8217;s the first Monday of the year and I have a special announcement! During the Rails/Merb merge announcement, it was mentioned that I will be joining [...]]]></description>
			<content:encoded><![CDATA[<p>Today is Monday. I usually don&#8217;t like Mondays.<br />
Being Monday goes with waking up early, going back to work, and lots of deadlines.</p>
<p>However, today is a special Monday. It&#8217;s the first Monday of the year and I have a <strong>special announcement</strong>!</p>
<p>During the Rails/Merb merge announcement, it was mentioned that I will be joining the soon to be created <strong>&#8220;Evangelism team&#8221;</strong>.</p>
<p>A few people asked me what being a <strong>&#8220;Rails Evangelist&#8221;</strong> means. To reassure my parents and close friends, no, <em>I didn&#8217;t join a new cult worshiping locomotives</em>. However, I still think that public transportation should be improved, especially in this time of crisis (but that&#8217;s a different topic).</p>
<p>A technical evangelist, is usually someone who knows and uses a specific technology and thinks others should look into it. This is something I&#8217;ve been doing for Merb while being part of the core team. I initiated and helped organizing MerbCamp, re-did the wiki, started working on the merb-book, spent time looking for and listening to users, spent time with third party developers and people pushing Merb to a new level (YellowPages, Wikimedia and many others).</p>
<p>This interaction with the end users and the third party developers is something the entire Merb team valued a great deal and I always felt it was something the community really appreciated.</p>
<p>As part of the merge, it was agreed that we would push things further and have a team within the Rails team to take care of &#8220;communication&#8221;. Rails is a bigger project than Merb and communication between the dev team and the users isn&#8217;t always something easy to do.</p>
<p>That&#8217;s why we have formed a separate team that will help communicate and support the community better. We now even have <a href="http://rubyonrails.org/activists" target="_blank">an official page on the Rails website</a> itself <img src='http://merbist.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>The Rails Activists</h2>
<p><a href="http://merbist.com/wp-content/uploads/2009/01/ateam.jpg"><img class="alignleft size-medium wp-image-423" title="a team" src="http://merbist.com/wp-content/uploads/2009/01/ateam-300x225.jpg" alt="" width="300" height="225" /></a>The A-Team <a href="http://weblog.rubyonrails.org/2009/1/5/announcing-the-rails-activists" target="_blank">just got announced on the Rails blog</a>.</p>
<p>Instead of being called &#8220;evangelists&#8221;, we are going to be called &#8220;activists&#8221;. I think part of the argument was that the E-Team doesn&#8217;t sound as good as the A-Team.</p>
<p>We started with team of 4. You might not know them yet but they all are brilliant people and I&#8217;m really glad to be working with them.</p>
<p><br class="spacer" /><br />
<br class="spacer" /><br />
<br class="spacer" /></p>
<p><img class="alignleft" style="clear:both" title="Gregg Pollack" src="http://weblog.rubyonrails.com/assets/2009/1/4/gregg_pollack.png" alt="" width="90" height="103" /><strong>Gregg Pollack</strong>, from Rails Envy. You might remember Gregg from the Rails vs * commercials or from the Rails Envy podcasts. I&#8217;ve known Gregg for a little while and he&#8217;s someone you can rely on and always full of energy/new ideas.<br class="spacer" /><br />
<br class="spacer" /></p>
<p><img class="alignleft" style="clear:both" title="Ryan Bates" src="http://weblog.rubyonrails.com/assets/2009/1/4/ryan_bates.png" alt="" width="90" height="103" /><strong><br />
Ryan Bates</strong>, mainly known for his Railscasts. I only met Ryan once in person, but I&#8217;ve always been impressed by his work (don&#8217;t tell anyone, but I secretly dreamt of having something like Railscasts but for Merb <img src='http://merbist.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )<br class="spacer" /><br />
<br class="spacer" /></p>
<p><img class="alignleft" style="clear:both" title="Mike Gunderloy" src="http://weblog.rubyonrails.com/assets/2009/1/4/mike_gunderloy.png" alt="" width="90" height="103" /><strong>Mike Gunderloy</strong>. I actually did not know Mike but I have read and enjoyed his <a href="http://afreshcup.com/" target="_blank">blog</a> and have seen his work on the Rails guides. Mike is an experienced writer and developer. He joked the other day saying that he started programming before any member of the Rails team was even born. Mike is a great addition to the team and I&#8217;m looking forward to learning from his experience.<br />
<br class="spacer" /></p>
<p>Gregg and Ryan also covered the event, you might want to check their blog posts (<a href="http://www.railsenvy.com/2009/1/5/the-rails-activist-team" target="_blank">Gregg&#8217;s</a> and <a href="http://afreshcup.com/2009/01/05/announcing-the-rails-activists/" target="_blank">Mike&#8217;s</a>)</p>
<h2 style="clear:both">So what are we going to do?</h2>
<p>Pretty simple. We&#8217;ve boiled it down to 2 sentences:</p>
<blockquote><p>The mission of the Rails Activists is to empower and support the worldwide network of Ruby on Rails users. We do this by publicizing Rails, making adoption easier, and enhancing developer support.</p></blockquote>
<p>if you prefer a few more details, here are some of the tasks we are going to work on:</p>
<ul>
<li>Public Relations with media of all sizes</li>
<li>Ombudsman work to ensure good user-to-user support</li>
<li>Community Leadership at events and conferences</li>
<li>Media Organization to help create good promotional opportunities</li>
<li>Website maintenance</li>
<li>Documentation efforts</li>
<li>Developer support</li>
</ul>
<h2>Do we need help?</h2>
<p><strong>Absolutely!</strong> The idea is not that we are going to do all the work. The concept of this new team is to help organize the community. We are going to build a Rails Network, a network of people involved in local Rails &#8220;evangelism&#8221;/activism, people contributing and/or translating documentation, third part developers etc&#8230;</p>
<p>First thing would be to <a href="http://groups.google.com/group/rails-activism" target="_blank">join the mailing list</a> and share your suggestions, comments, concerns, etc., with us.</p>
<p>Secondly, we have already set up some forums to hear your feedback.</p>
<p>To start off, we are asking people to let us know what they <a href="http://rails.uservoice.com/" target="_blank">would like to see happening in the Rails3 timeframe</a>.<br />
We have other forums for more <a href="http://rails.uservoice.com/pages/general_feedback" target="_blank">general feedback</a>, but we need to work with deadlines so we can prioritize accordingly. Using the Rails3 milestone should help us focus on a short/medium term deadline. <a href="http://rails.uservoice.com/pages/rails_future" target="_blank">Long term and not specific suggestions</a> are welcome in the other forums.</p>
<p>Finally, contact us. You can find multiple ways to do so on the <a href="http://rubyonrails.org/activists" target="_blank">activism team web page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://merbist.com/2009/01/05/presenting-the-rails-activists/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>latest Merb and Rails 3.0 news</title>
		<link>http://merbist.com/2008/12/29/latest-merb-and-rails-30-news/</link>
		<comments>http://merbist.com/2008/12/29/latest-merb-and-rails-30-news/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 21:57:38 +0000</pubDate>
		<dc:creator>Matt Aimonetti</dc:creator>
				<category><![CDATA[merb]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rails 3.0]]></category>

		<guid isPermaLink="false">http://merbist.com/?p=412</guid>
		<description><![CDATA[Foy Savas, author or the &#8220;merb way&#8221; wrote a very well written post on &#8220;Rails monoculture&#8221; Pat Eyler, wrote an article asking if Rails and Merb would be better together. Ben Aldred, tell people to stop worrying and start loving Rails 3. fotonauts.com a Rails and Merb Photo website developed by an ex-apple team, was [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://foysavas.com"><img class="alignleft size-medium wp-image-414" title="foy-savas" src="http://merbist.com/wp-content/uploads/2008/12/foy-savas-1.png" alt="" width="200" height="235" /></a></p>
<ul>
<li><a href="http://foysavas.com" target="_blank">Foy Savas</a>, author or the &#8220;<a href="http://my.safaribooksonline.com/9780321601636" target="_blank">merb way</a>&#8221; wrote a very well written <a href="http://www.foysavas.com/blog/2008/12/25/lets-be-clear-the-rails-monoculture-is-over.html" target="_blank">post on &#8220;Rails monoculture&#8221;</a></li>
<li><a href="http://on-ruby.blogspot.com/" target="_blank">Pat Eyler</a>, wrote an article asking if <a href="http://on-ruby.blogspot.com/2008/12/rails-and-merb-better-together.html" target="_blank">Rails and Merb would be better together</a>.</li>
<li><a href="http://www.geekmade.co.uk/" target="_blank">Ben Aldred</a>, tell people to <a href="http://www.geekmade.co.uk/2008/12/stop-worrying-and-start-loving-rails-3/" target="_blank">stop worrying and start loving Rails 3</a>.</li>
<li><span class="entry-content"><a href="http://www.fotonauts.com/" target="_blank">fotonauts.com</a> a Rails and Merb Photo website developed by an ex-apple team, was <a href="http://www.techcrunch.com/2008/12/24/fotonauts-opens-up-a-little-more-skip-the-5000-long-waitlist/" target="_blank">featured in TechCrunch</a>. Fotonauts is the perfect example of an app that will bain a lot from the merge.</span></li>
<li><a href="http://yehudakatz.com" target="_blank">Yehuda</a> has been blogging a lot about every single step and even though most people are enjoying a well deserved break, you can read the <a href="http://yehudakatz.com/2008/12/26/dispatch-from-the-front-lines/" target="_blank">details</a> <a href="http://yehudakatz.com/2008/12/27/status-memorandum/" target="_blank">of</a> the <a href="http://yehudakatz.com/2008/12/29/another-rails-2x3-update/" target="_blank">work</a> started on the merge.</li>
</ul>
<p>Basically, the work started, we are getting familiar with the rails code base and are optimizing things slowly but surely with a focus on testing JRuby. The Merb router is being optimized and ported over to Rails 3.0. Rails and Merb developers will be able to stick to their DSL (so we stay backward compatible). Merb bootloader is also being ported over without breaking the backward compatibility. Finally, ActiveSupport is being broken down in more manageable/independant chunks so people will be able to pick only what they want to use. A &#8220;mini&#8221; version is also on the work.</p>
<ul>
<li><a href="http://yehudakatz.com/2008/12/28/merb-107-release-notes/" target="_blank">Merb 1.0.7 got released</a> yesterday with a bunch of bug fixes.</li>
<li>merb_sequel 1.0 should be released sometime this week and i&#8217;m planning on adding rails i18n syntax support to merb_babel.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://merbist.com/2008/12/29/latest-merb-and-rails-30-news/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Merb/Rails merge, or Why should merbists be happy?</title>
		<link>http://merbist.com/2008/12/25/merb-rails-merge-or-why-should-merbists-be-happy/</link>
		<comments>http://merbist.com/2008/12/25/merb-rails-merge-or-why-should-merbists-be-happy/#comments</comments>
		<pubDate>Fri, 26 Dec 2008 04:11:02 +0000</pubDate>
		<dc:creator>Matt Aimonetti</dc:creator>
				<category><![CDATA[merb]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[merge]]></category>
		<category><![CDATA[rails 3.0]]></category>

		<guid isPermaLink="false">http://merbist.com/?p=398</guid>
		<description><![CDATA[December 23, 2008, was an important day for the Ruby community. People who used to argue and not get along, have decided to sit down, talk and evaluate their differences. The end result is a strong collaboration of two teams who share the exact same goal. Overall, the news was very well received, just look [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/xrrr/2478140383/"><img class="alignright" title="merge" src="http://farm4.static.flickr.com/3211/2478140383_8e2e4ab7a3_m.jpg" alt="" width="240" height="160" /></a>December 23, 2008, was an important day for the Ruby community. People who used to argue and not get along, have decided to sit down, talk and evaluate their differences. The end result is a strong collaboration of two teams who share the exact same goal.</p>
<p>Overall, the news was very well received, just look at the tweets out there and the comments on <a href="http://yehudakatz.com/2008/12/23/rails-and-merb-merge/" target="_blank">Yehuda&#8217;s</a> and <a href="http://weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3" target="_blank">Rails&#8217; blogs</a>.</p>
<p>Interestingly enough, the Rails community really embraced this decision and just got totally excited about the perspective of merging merb&#8217;s philosophy and expertise into Rails. If you re-read David&#8217;s blog post you can see that it&#8217;s a <strong>real homage to Merb</strong>.</p>
<p>The rest of the internet sounds pretty happy about the news, here are few posts:</p>
<ul>
<li><a href="http://arstechnica.com/news.ars/post/20081224-ruby-on-rails-and-merb-to-merge-for-rails-3.html" target="_blank">arstechnica.com</a></li>
<li><a href="http://www.internetnews.com/dev-news/article.php/3793296/Merb+Merges+With+Rails.htm" target="_blank">internetnews</a></li>
</ul>
<p>Even <a href="http://www.zedshaw.com" target="_blank">Zed the entertainer</a> thought it was a good thing:</p>
<blockquote><p><a href="http://www.zedshaw.com/blog/index.html" target="_blank">&#8220;I honestly didnâ€™t think that would ever happen. I just assumed that Merb<br />
would eventually wipe out Rails by being the better framework, or theyâ€™d<br />
wipe each other out soon.</a></p>
<p><a href="http://www.zedshaw.com/blog/index.html" target="_blank">So, congrats are in order. You guys are finally grown-ups and now have<br />
the chance to make something better.&#8221;</a></p></blockquote>
<p>Some <a href="http://iamruinous.com/2008/12/23/why-merb-becoming-rails-3-is-a-good-thing/" target="_blank">merbists like Jade Meskill</a> really understood what we are trying to do while some other ones got really <a href="http://www.mr-eel.com/archives/158" target="_blank">mad at us</a>.</p>
<p>I think a pattern emerged from the negative reactions:</p>
<ul>
<li>Why merge when we are about to win?!</li>
<li>What does Merb win by being merged into Rails?</li>
<li>Why not merge Rails into Merb?</li>
<li>You are killing innovation by killing the competition</li>
<li>You screwed us over and now I have to go &#8220;back&#8221; to Rails</li>
<li>Rails 3.0 won&#8217;t even be as good as Merb 1.x</li>
<li>The Rails team won&#8217;t let you do what you have to do to merge Merb into Rails</li>
<li>DHH is a jerk</li>
</ul>
<p>Let me quote Yehuda:Â  <strong>&#8220;Calm yourselves <img src='http://merbist.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> &#8221;</strong>.</p>
<h2>Why merge when we are about to win?!</h2>
<p>This is probably the most rational argument. This is also something the Merb core team considered for a little bit.<br />
Merb is gaining huge momentum and the target audience was very reactive to what we did.<br />
<a href="http://flickr.com/photos/mhaithaca/1317815300/"><img class="alignleft" title="super heroes" src="http://farm2.static.flickr.com/1087/1317815300_095983272e_m.jpg" alt="" width="240" height="160" /></a>People such as Yellow Pages, Wikipedia and even Adobe started using or looking seriously at Merb because of its focus on modularity and performance.<br />
We started building an elite community and we were pretty proud of that.</p>
<p>But take a moment to think about it. Our goal has never been to hurt or compete with Rails. Our goals were to get modularity, performance and a strong API. If the Rails team really wants that, and will work on it, why should we work against each other?<br />
It&#8217;s not about winning or losing. It&#8217;s all about the long term plan of your framework, about the people involved and the community behind it. We had to take ourselves out of the equation and consider what would be good for the Ruby community.</p>
<h2>What does Merb win by being merged into Rails?</h2>
<p>People seem to easily find things we might lose but have a hard time finding things we are gaining.<br />
<img class="alignright size-medium wp-image-404" title="rails" src="http://merbist.com/wp-content/uploads/2008/12/rails.png" alt="" width="87" height="112" />Looking at it on the very short term, this is probably correct. The merb team will have to learn how to work with the Rails team.<br />
We need to understand the reasons behind every single aspect of the code and find ways of merging things nicely.<br />
On top of that, we still need to work on merb as promised. (see Wycats&#8217; post)</p>
<p>However, in the long term we get all the benefits of Rails:<br />
- stability<br />
- community<br />
- traction<br />
- experience<br />
- don&#8217;t have to always justify why use Merb instead of Rails</p>
<p>But more importantly, we extend our team.</p>
<p>Most people using a framework might not realize what it is to work on a big Open Source project.<br />
When you work on an OSS project, people come and go, and that&#8217;s why you usually have a core team of people you can rely on.<br />
Merb has a lot of contributors but a small core team of 5 people (Yehuda, Carl, Daniel, Michael and myself).<br />
Managing a project, such as merb, requires a tremendous amount of time and patience. Rails has the same problem with its core team of 6 people. People have lives, business, projects etc&#8230;</p>
<p>Joining two teams of experts in developing web frameworks in Ruby is like if in the next Soccer World Cup, the French and Italian teams would go on the fields at the same time to beat other teams. 22 players on 1 side, training and learning together. American readers, please imagine the Giants and the Colts facing the Green Bay Packers (I was told I don&#8217;t like the Packers).</p>
<p>Long term, you will get better quality and more frequent releases. We also have different world views and backgrounds which means we will learn a lot from each other, again that means better code for you guys <img src='http://merbist.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Why not merge Rails into Merb?</h2>
<p>That&#8217;s actually a good question. We discussed maybe using merb-core as a base for Rails 3.0<br />
The truth is that Merb 2.0 would probably be as big as Rails but more modular.<br />
So we have the choice to keep on building on top of Merb 2.0 or deconstruct Rails.<br />
As the Russians say: &#8216;Ð»Ð¾Ð¼Ð°Ñ‚ÑŒ â€” Ð½Ðµ ÑÑ‚Ñ€Ð¾Ð¸Ñ‚ÑŒ&#8217;, it&#8217;s always easier to take things apart <img src='http://merbist.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><img class="alignright" title="merge rails" src="http://farm4.static.flickr.com/3033/2814371262_04b9876490_m.jpg" alt="" width="180" height="240" />Rails already has a test suite, it has already been tested on the wild for a while and its internals are known to many developers. Taking apart the code to make it faster, cleaner and more modular is arguably easier than reinventing the wheel. At the end of the day it doesn&#8217;t really matter from which end you start as long as you end up with the same result.</p>
<p>Some people even asked to come up with a new name for the merged project. Meails, Mr Ails, Reverb, Reab were suggested. While I thought it was a joke, some people were really serious. Can you imagine if during the recent bailout, banks changed names every time they were purchased by another bank? People would be super confused and would not even know where to send their mortgage payments.<br />
On top of that, Rails has a huge user base compared to Merb and has an immense brand recognition in the world at large, it would be foolish to throw that away.</p>
<p>Let&#8217;s not be chauvinistic and see what&#8217;s best for all.</p>
<h2>You are killing innovation by killing the competition</h2>
<p>Again, a good point but my question to you is: Should we stay in the competition just for the sake of it?</p>
<p>Rails clearly told us: we want what you have and we would love you to work with us. So the options were:</p>
<ul>
<li>tell them to go to hell and let them try to redo what we already did and know how to do.</li>
<li> accept to work with them and make Rails a better framework.</li>
</ul>
<p><em>Option 1</em> would keep the competition alive, but now you have 2 groups of people trying to do the same thing and being better at different aspects. The community gets confused and communication breaks.</p>
<p><em>Option 2</em>: we lose the Merb vs Rails competition, but we double the amount of people working on Rails and therefore increase the change to make it better faster.</p>
<p>We went for option 2 and we know there is already some competition out there and there will be more coming up soon. I don&#8217;t think it&#8217;s realistic to expect us not to merge because we want to keep the competition going.</p>
<h2>You screwed us over and now I have to go &#8220;back&#8221; to Rails</h2>
<p>Yehuda will blog about some more detailed examples as we are making progress, but you need to stop thinking that Merb will just be absorbed into Rails.<br />
If Rails just wanted to add some &#8220;Merb flavor&#8221; to Rails, they would have just taken whatever they needed and would not be interested in a merge.<br />
See Rails 3.0 as a new generation of Rails, whatever we promised you for merb 2.0 plus all the goodies from Rails. Rails users will still have their default stack and all choices will be made for them (like in the current Merb stack). The difference for standard Rails user will be better performance, a static API and an option to go off the &#8220;golden path&#8221;.<br />
Merbists won&#8217;t lose the stuff they like in Merb, stacks, full support for DataMapper, Sequel and other ORMS, jQuery or other JS library, opt-in solution using just rails-core, better core isolation, built-in RSpec and webrat support, slices, merb-cache, merb-auth and all the other key plugins that will be ported over.</p>
<p>To be able to achieve all of that, we will have to make some infrastructure and code modifications.</p>
<p>Rails internals should end up:</p>
<p>* way less magical (even Merb uses some magic, but we&#8217;ll make sure to keep it to a minimum)<br />
* returning shorter and cleaner stack traces<br />
* cleaner (required for the new API)<br />
* better isolated (required to increase the modularity)<br />
* alias_method_chain won&#8217;t be available at the public API level (we probably still will need some chaining mechanism internally, but that&#8217;s a different story)</p>
<p>So, no, you don&#8217;t have to go &#8220;back&#8221; to Rails. In fact, imagine you could do exactly what Rails does but with the performance and modular architecture of Merb. That&#8217;s what you will get with Rails 3.0.</p>
<h2>Rails 3.0 won&#8217;t even be as good as Merb 1.x</h2>
<p>I think I mainly replied to this question in my previous answer.<br />
There is no reason why Rails 3.0 won&#8217;t be better than Merb 1.x.Â  Actually, I believe our API will actually be even better. With the help of David, the existing Rails core team, and the Rails community, we will be able to define an awesome API that will change the way ruby web development will be done.<br />
The merb API is great but we already know some of its limitations and we don&#8217;t have as many plugin developers to work with. Working with plugin developers is something I&#8217;m personally excited about. As a Rails developer I have been really frustrated when using 3rd party plugins and trying to develop my own.<br />
Having a well tested, developed against, public API will make all the Rails 3.0 plugins so much better. And because Merb plugins already use an API, we will be able to port all the plugins over, so it will be at least as good as 1.x<br />
Also, we are going to work on real app benchmark tests to make sure the performance gain is at least as good as what we have with Merb.</p>
<p>Migration will be easy and well documented. We are not giving up on the Merb book and it will be very useful to explain the Merb way to new comers wanting an idea of the new stuff in Rails 3.0. It will also be the best source of information to migrate your app to Rails 3.0.</p>
<p>Talking about migration, we promised to give you a sane migration path when it will be time to migrate.<br />
Again, don&#8217;t freak out because we are changing the name, the spirit of Merb will keep on living.</p>
<h2>The Rails team won&#8217;t let you do what you have to do to merge Merb into Rails</h2>
<p>In all honestly, I was worried about that. I was wondering if all of that was not an evil scam planned by DHH to kill Merb as it was getting a good momentum. I like conspiracy theories and it sounded pretty good.<br />
To my surprised, after a few private conversations with David, I realized that he was genuinely interested in making Rails better for people and fulfill the needs of people who need more flexibility.<br />
Just re-read his blog post <a href="http://weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3">http://weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3</a>. After what he said, how can he back up and just keep Rails the way it is? And why in the world would he want that to happen?<br />
It&#8217;s a team effort and we have already spent hours and hours discussing some details. I can promise you that the Rails team is very excited about the new stuff that&#8217;s coming up. But don&#8217;t forget that it&#8217;s a merge and we are reconsidering some of the stuff we did in Merb to better re-implement them in Rails 3.0.<br />
So far, I haven&#8217;t seen any of the Rails core team member tell us, no you can&#8217;t do that because that&#8217;s not the way it&#8217;s done in Rails or because we just don&#8217;t like it.</p>
<h2>DHH is a jerk</h2>
<p>Recently, in an interview I gave to rubylearning.com <a href="http://rubylearning.com/blog/2008/12/18/matt-aimonetti-why-on-earth-would-you-ignore-merb/">http://rubylearning.com/blog/2008/12/18/matt-aimonetti-why-on-earth-would-you-ignore-merb/</a> I mentioned that a big difference between Merb and Rails was the way we were dealing with the user base.<br />
I quoted David from an Interview he gave to InfoQ <a href="http://www.infoq.com/interviews/David-Hansson">http://www.infoq.com/interviews/David-Hansson</a> back in 2006.</p>
<p>As part of the merging evaluation process we literally spent hours talking back and forth. I had a seriously hard time believing that Rails and David honestly wanted to change their world views. How can you go from saying what you said in 2006 to adopting what Merb is pushing for: letting the framework bend to make what each developer wants if he doesn&#8217;t want to follow the &#8220;golden path&#8221;?</p>
<p>Interestingly enough, David recently addressed this point on his blog. <a href="http://www.loudthinking.com/posts/36-work-on-what-you-use-and-share-the-rest">http://www.loudthinking.com/posts/36-work-on-what-you-use-and-share-the-rest</a></p>
<p>&#8220;I wanted to take a few minutes to address some concerns of the last 4%. The people who feel like this might not be such a good idea. And in particular, the people who feel like it might not be such a good idea because of various things that I&#8217;ve said or done over the years.&#8221;</p>
<p>First thing first, David addresses the minority of people worried about his image and what it means for them.<br />
So, David actually cares about hard core merbists and he wants them to join the fun. I personally see this as something very encouraging!</p>
<p>A recurring theme we hear a lot is that Rails becomes whatever DHH/37signals needs/wants. If DHH needs something new, it will make it to Rails, if he doesn&#8217;t need it, it won&#8217;t.</p>
<p>David has a very simple and almost shocking response: DHH != Rails</p>
<p>David is really happy with Rails. Rails satisfies his needs but he knows that some people out there need/want something more/different.</p>
<p>&#8220;I personally use all of those default choices, so do many other Rails programmers. The vanilla ride is a great one and it&#8217;ll remain a great one. But that doesn&#8217;t mean it has to be the only one. There are lots of reasons why someone might want to use Data Mapper or Sequel instead of Active Record. I won&#8217;t think of them any less because they do. In fact, I believe Rails should have open arms to such alternatives.&#8221;</p>
<p>So, you can still think whatever you want about David. What&#8217;s important is that Rails is more than David. It&#8217;s an entire team of people with different needs and different views.</p>
<p>DHH isn&#8217;t a dictator and based on concrete examples such as the &#8220;respond_to vs provides&#8221; discussion, I can reassure you that David has been very receptive to arguments and never tried to force any decision because he thought it was better.</p>
]]></content:encoded>
			<wfw:commentRss>http://merbist.com/2008/12/25/merb-rails-merge-or-why-should-merbists-be-happy/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Rails and Merb core team working together on their next release</title>
		<link>http://merbist.com/2008/12/23/rails-and-merb-merge/</link>
		<comments>http://merbist.com/2008/12/23/rails-and-merb-merge/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 19:50:02 +0000</pubDate>
		<dc:creator>Matt Aimonetti</dc:creator>
				<category><![CDATA[merb]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[merge]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rails 3.0]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://merbist.com/?p=382</guid>
		<description><![CDATA[This is huge! While people still try to find some drama in a hypothetical war between Rails and merb &#8230; The Rails team and the Merb team announced today that they will work together on a joined version of the 2 frameworks. This is so exciting! Nobody believed it could ever happen (I personally, seriously [...]]]></description>
			<content:encoded><![CDATA[<h3>This is huge!</h3>
<p>While people still try to find some drama in a hypothetical war between Rails and merb &#8230;</p>
<p><img class="alignright size-medium wp-image-389" title="surprise1" src="http://merbist.com/wp-content/uploads/2008/12/surprise1-296x300.jpg" alt="" width="296" height="300" />The Rails team and the Merb team announced today that they will work together on a joined version of the 2 frameworks. This is so exciting! Nobody believed it could ever happen (I personally, seriously had my doubt).</p>
<p>Yehuda had a <a href="http://yehudakatz.com/2008/12/23/rails-and-merb-merge/" target="_blank">great post</a> laying out the plan and explaining things in details. Check out <a href="http://weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3" target="_blank">David&#8217;s post </a>explaining why he wants us to work together and his vision of a better Ruby world.</p>
<p>I have to say that I have been impressed by the Rails core team and especially David (DHH).</p>
<p>I&#8217;ve known David for few years now and we had long (sometimes heated) discussions on topics like i18n/l10n for Rails. David is known to be a very opinionated person. But if you come up with the right arguments, he can be convinced and when that happens, he is willing to move forward and shake things up.</p>
<p>This merge is a concrete example that David and the rest of the Rails team care about Rails and the Ruby community more than we usually give them credit for. As a unified team, we are going to change the way web development in Ruby is done!</p>
<p>But what does it mean for you?</p>
<p>I put together a FAQ video which, I hope will answer your questions.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=2607919&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=2607919&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
<a href="http://vimeo.com/2607919">Matt Aimonetti: message to all merbists</a></p>
<p>Transcript:</p>
<p>Hi, I&#8217;m Matt Aimonetti from the merb core team and as you might have heard, a big announcement was made earlier today.<br />
I did this video to hopefully answer the questions you might have.</p>
<h3>Q: So what&#8217;s the big news?</h3>
<ul>
<li>merb and Rails team will work together on the next version of their frameworks</li>
<li>merb 2.0 and Rails 3.0 share the same common endpoint</li>
<li>we realized we now have the same objectives and agreed on all the key principles.</li>
<li>merb will provide Rails with agnosticism, modularity, improved performance and a public API.</li>
<li>The end product will be called Rails 3.0 but what real matters is that it&#8217;s a huge gain for the entire community.</li>
</ul>
<h3>Q: What??? I thought there was a war going on between Rails and merb, what happened?</h3>
<ul>
<li> There was no war between Rails and merb</li>
<li> We created merb because Rails was not fitting us</li>
<li> We wanted better performance, more choices/ more modularity and a Public API.</li>
<li> The Rails team now embraces these concepts and want Rails to follow them, so why not work together?</li>
</ul>
<h3>Q: Wait, does that mean that merb is dead?</h3>
<ul>
<li> Absolutely not!</li>
<li> merb development won&#8217;t stop, we are going to keep on releasing updates until Rails 3.0</li>
<li> clear migration path, and upgrading to Rails 3.0 will be as trivial as upgrading from Rails 2.x to Rails 3.0</li>
</ul>
<h3>Q: What does the timeline look like?</h3>
<p>We just started getting together to discuss the technical details. We are shooting for a release at RailsConf 2009. However it&#8217;s hard to estimate this kind of thing so, again, that&#8217;s just an estimate <img src='http://merbist.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Q: I just started a merb project, so what now?</h3>
<p>I&#8217;m sure you had valid reasons to use merb, you needed modularity, performance and a solid API.<br />
Keep on using Merb, we won&#8217;t let you down. The good news is that the next version of merb (Rails 3.0) will be even awesomer!</p>
<h3>Q: What about my client who was looking at using merb for his new project?</h3>
<p>If your client is going to be using merb for valid reasons (and not just because it&#8217;s not Rails) they should still use merb, but with the full understanding that they will end up using Rails in 6 months or so. Again, Rails 3.0 will have what pushed you to use merb.</p>
<h3>Q: I&#8217;ve been involved with the merb-book, what will happen with this project?</h3>
<ul>
<li> Rails 3.0 won&#8217;t get released right away</li>
<li> still need awesome documentation</li>
<li> if we look at Rails 3.0 as merb 2.0, we can easily imagine how the current work can be extended to the new version</li>
<li> Rails team will also include an evangelism team which I will be part of, so will be able to focus more on projects like the book</li>
</ul>
<h3>Q: I&#8217;ve been working on a merb plugin, what should I do?</h3>
<p>Keep working on it! We&#8217;ll assist you with the migration process and the new solid API.</p>
<h3>Q: What if I still have questions?</h3>
<p>Come talk with me, or any member of the new team. We&#8217;ll be open to hear your questions, worries, frustrations.<br />
merb always valued its developers and we will continue to do so but on a bigger scale.</p>
<hr />Concretely, nothing changes for merb users. People loving merb should not worry. The way you build merb apps won&#8217;t change until merb2.0/Rails3.0. We will still work on your favorite framework and improve it.</p>
<p>Lori Holden worked on merb_sequel and we should release a 1.0 release of the plugin in a few days.</p>
<p>I&#8217;m sure this news comes as a shock for many of you, but try to not see Rails 3.0 as the way Rails is right now. Imagine a version of Rails with true modularity and agnosticism (sequel, DM and AR will still be supported) and the same type of performance as what you get with merb. In other words, the Rails world is about to discover the power of merb!</p>
<p>Here is what Yehuda explicitly says in his blog post:</p>
<ul>
<li>Rails will become more modular, starting with a rails-core, and including the ability to opt in or out of specific components. [...]</li>
<li>We will port all of our performance improvements into Rails. This includes architectural decisions that are big performance wins.[..]</li>
<li>As of Rails 3, Rails will have a defined public API with a test suite for that API. [..]</li>
<li>Rails will still ship with the &#8220;stack&#8221; version as the default (just as merb does since 1.0), but the goal is to make it easy to do with Rails what people do with merb today.</li>
<li>Rails will be modified to more easily support DataMapper or Sequel as first-class ORMs. [..]</li>
<li>Rails will continue their recent embrace of Rack, which [..] will improve the state of modular, sharable logic between applications.</li>
<li>In general, we will take a look at features in merb that are not in Rails (the most obvious example is the more robust router) and find a way to bring them into Rails.</li>
</ul>
<h2>Personal perspective</h2>
<p>I&#8217;m personally really excited about this opportunity. I had a hard time believing that we could work together but I was proved wrong. We have many challenges in front of us, but watching the two teams working together is very reassuring.</p>
<p>I&#8217;m also glad to see that we will have a Rails Evangelism team that I will be part of. I strongly believe that one of the many reasons why merb has been so successful is because we work and listen to our community. We have put a tremendous amount of energy into trying to understand what you guys need and what you like and dislike. In return, we have seen many people working hard on the wiki and the merb-book.</p>
<p>Can you imagine doing that with almost 4 Million Rails developers?</p>
<p>I&#8217;m also looking forward to working with a team and reaching to even more people.</p>
<h2>Other news related to the merge:</h2>
<ul>
<li>The RubyOnRails website will keep a trace of this historical moment: <a href="http://rubyonrails.org/merb" target="_blank">http://rubyonrails.org/merb</a></li>
<li>The <a href="http://merbclass.com/" target="_blank">merb training scheduled for Jan 19-21</a>, in partnership with <a href="http://integrumtech.com/" target="_blank">Integrum</a>, will still take place, and if you want to get a head start and learn about the things that will make Rails 3.0 totally kick ass, I&#8217;d suggest you join us.</li>
</ul>
<p>If you have any questions, or if you want me to publicly answer questions on your blog please contact me. I&#8217;ll do my best to get back to everyone.</p>
]]></content:encoded>
			<wfw:commentRss>http://merbist.com/2008/12/23/rails-and-merb-merge/feed/</wfw:commentRss>
		<slash:comments>56</slash:comments>
		</item>
	</channel>
</rss>

