Not to cry sour grapes here but there is not one mention of Merb in that entire blog post. I personally wrote merb in order to show that rails internals could be much better, modular and faster. I did heavy duty politicking to get the two teams to come together and I think the rails merb merger is one of the coolest open source success stories vie heard of.
But not a single mention of merb in this entire post. I'm not complaining but it seems disingenuous not to mention it as the sole reason I wrote merb was to push rails forward. And when it looked like merb might possibly overtake rails I went ahead and gave merb to the rails project and got the two teams together so there wasn't wasted effort. After all to have ruby and rails itself win we needed to compete with java and python and php. Merb was starting to fragment the ruby community as it became a more and more viable option and I did some personal heavy politicking to get it merged back into rails so we could take on the world instead of infighting within the ruby community.
I think it's been a great success story and most of the ideas of merb's architecture have made it into rails.
So I'm incredibly happy to see rails 3 finally come out. And I'm incredibly happy that my little experiment in making rails architecture better has paid off and the two projects merged. But I do think it's a bit weak that merb was not mentioned once in the article.
(Edit) all this being said I don't want to come across as co plaining. My work on merb ended up exactly as I wanted it to, it made rails better.
So huge congratulations to the rails team for making this happen!
First of all, this is a huge milestone for Rails. From my perspective, this work is three or four years in the making, from the beginning of the Merb efforts, through the merge, and on until the final release of Rails 3.
From a personal perspective, this release is huge closure for me; I feel like I’ve been working on Rails 3 (and associated projects, like Thor and Bundler) for years.
When the Merb team merged into the Rails team, we very quickly got to work. The previous animosity actually melted away rather quickly, to be replaced with the somewhat tense, but productive give and take of a core team.
One of the really amazing things to come out of the last couple of years is a whole slew of new committers to Rails (in addition to Carl and me): José Valim, Aaron Patterson, Xavier Noria and Santiago Pastorino. Rails 3 would still be limping along if not for these guys, who really went above and beyond the call of duty in the past few months to get things past the finish line.
In light of all this, I really haven’t thought much about the old Merb/Rails party lines in a while. I’ve been too focused on Rails and Bundler, and the rest of the core team (old and new alike) have been busy helping.
"Merb was starting to fragment the ruby community as it became a more and more viable option and I did some personal heavy politicking to get it merged back into rails so we could take on the world instead of infighting within the ruby community."
Interesting, if disheartening, perspective.
I much prefer to see greater diversity within a language. I want to see more frameworks, more exploration, more choice. What some may call fragmentation is in fact rich and vibrant and valuable.
And the idea that there is some sort of battle going on among languages, that Ruby needs to "win" against Java or PHP or any language, is truly perverse.
I fear this battle mentality is by no means a minority opinion among Rubyists.
I prefer to use Ramaze for Web development, but I'm glad people can pick Camping or Wave or Wuby or IOWA or Sinatra or any of the dozen other options out there. There are interesting things being done, and not simply so they can be subsumed by some One True Framework.
I was disappointed not to see Nitro get the attention it deserved, to have Chad Fowler tell a conference audience that people working on Nitro should just stop, because "Rails won", was a turning point in how I viewed the larger Ruby culture.
There are many smart, adventurous people doing interesting things with Ruby, but there is also a pervasive cliquishness and neophobia regarding anything that is not somehow tied to Rails.
It's great to see progress made in Rails, but the solidification of Ruby === Rails leaves a bad taste.
It's also becoming an issue in the Python world, in job descriptions and among newbies, that Django == Python, as in questions like "how do I implement a sort in Django ?". Not helped by the fanbois who answer "just use Django" without qualification whenever somebody asks which web framework to use with Python.
While I'm happy that Django has helped promote Python, any monoculture is not only bad, but boring.
Can't help but notice the lack of Padrino (http://www.padrinorb.com/) on this list. Granted, it's a layer on top of Sinatra... It's really quite fantastic. Please do look, and run the stack on 1.9.2 :)
It needs to at least compete with Java/PHP ect. In order to create a big enough ecosystem to provide all the libraries and core features needed and keep them up to date. As well as have enough people explaining things that new people don't feel overly intimidated.
And you know what? It never will. Rubyists need to give this up. It's a pipe-dream. Microsoft can set up large/local conferences, charge $75, and make a sales pitch. Dozens of vendors lined up to hand out schwag and pitch their product.
For management, they don't get the best tool, but if it meets requirements, then it's a no-brainer because the most expensive component license is (usually) cheaper than the dev time to meet the basic requirements in-house (those are usually a small subset of what the component might do).
The bigger issue is that that sort of buy vs build scenario manages risk very well.
Ruby has a lot of strengths, but providing a strong story for managing risk isn't one of them. Especially if you don't bill by the hour.
The world of software development isn't winner take all. The same things that can make Ruby and Rubyists great are some of the same reasons it likely won't ever be a good fit for some of the mass-market issues Java and .NET are a good fit for.
That's OK in my book. I die a little on the inside every time someone tries to sound smart by saying "use the best tool for the job" when often there are clear and obvious winners and losers in software. But in this case... Use the best tool for the job. Or maybe just the tool you like most. If Ruby works for you and your company, you're already doing the risk management thing very well. No reason not to use it.
A language community needs to be robust enough to look after these things. This is not the same thing as, nor does it require, "beating" other languages. Even accounting for limited time and attention from interested developers this is not a zero-sum situation.
Language communities do not need to push for a monoculture in tools and frameworks to be robust; cultures that avoid this are much healthier in the long run.
Ruby has a wealth of frameworks, due to Rack. They all have interesting bits... maybe Rails gets a lot of press, but Sinatra, camping, ramaize, padrino, and others would probably like to have a word with you.
Offtopic: when are you announcing your next project? We're already feeling the lack of your presence at EY as we move to AppCloud. A cool new project would do much to offset that general disappointment (not that it's your problem).
I'm working at Vmware now on a cloud operating system. That's about all I can say right now but it is what runs vmforce and vmware's partnership with google app engine to get spring running there very well. Multiple cloud multiple language paas.
I thought the big thing about Rails 3 was the merging of Merb and Rails. Would it have really hurt DHH to include a sentence of acknowledgement in his long post? I am disappointed.
OP: Yet another example of how Zed was right when he said, "Rails is a Ghetto."
IMO, the Rails/Merb merger is a counter example. It's easier and way more fun to rewrite and port code. Major refactorings with thousands of legacy apps are less fun. It takes a patient, skilled programmer to do it. It's an amazing community achievement that the two teams were able to put aside their differences and work together, like professionals, towards this massive goal.
The blog post is a release announcement meant to focus on features and improvements, not a history lesson. I wouldn't take the lack of a Merb mention as any kind of slight against the old Merb team's efforts.
it long since stopped being about a Rails and a Merb team. Today there’s just a Rails 3 team where everyone is working together for the improvement of the framework.
users = User.where(:name => "david").limit(20)
users.where("age > 29")
# SELECT * FROM users
# WHERE name = "david" AND age > 29
# ORDER BY name
# LIMIT 20
It seems a bit counter-intuitive to me. I'd expect that
It's very convenient to be able to pass a partially built query, including a limit, into a function which adds more conditions. Why would you not want to be able to do that?
It depends on whether your mental model is "applying a sequence of filters to a result set" or "editing attributes of a query". If the latter, you'd expect them to be equal and the opposite would be surprising.
Just from the point of view of a Rails user, generally I want to do the latter. This will replace things I use .with_scope() for right now, which a "sequence of filters" model wouldn't work as well for.
You have to keep in mind that unspecified elements of SQL are not guaranteed to be random. There is no situation in which the two queries you supplied, executed sequentially as you "expect", would be guaranteed to produce different results. For any possible set X of 20-or-fewer Davids who are 29 or older, there exists a set of Y of 20 or fewer Davids of unspecified age such that X is the subset of Y obtained by filtering out the Davids in Y who are younger than 29. If your query allows this result, the DBMS is permitted to return it if it deems it more efficient.
You cannot assume anything about your result sets. It's best to just pretend every database functions something like the Monkey's Paw: it will grant your wish to the letter, but always in the most horrifying manner that your wish permits.
We've designated a release charity for people to show their appreciation of Rails 3. If you're going to use it, please help us bring clean water to 5,000 people with Charity:Water.
I just realized this going through the API docs when I noticed the docs for 3.0.0 were now live on api.rubyonrails.org. Finally! (Of course, just two hours after converting one app from rc1 to rc2.)
Instead of making things more simple they have made a lot of things more complex and "configureable". I think Rails 3 is a great example of over-design and over-engineering. I don't really think web-frameworks need to be this complex.
If people want to control their own stack with minimal code and complexity they should check out Python's WSGI interface and the tools that are built around it. You can in an afternoon tie your own framework using tools like werkzeug, mako and sqlalchemy. You can be the master without following other people's lame conventions.
I'm using rails 3. OP is full of crap. Rails is a full stack framework complete with ponies, unicorns, and rainbows. Asking it to be minimal is a joke, but you can get rails pretty slimmed down if you work at it. You wouldn't want to build a full app on ActionController::Metal but you can.
The redesign has made the internal code of rails much simplier and ActiveModel is simply brilliant. I'm using CouchRestModel and having ActiveModel means I can use plugins like Formtastic right out of the box.
Rails 3 decoupled the major components. It's more modular now. I can disable ActiveRecord without the plugins I'm using getting upset that it's missing. If anything, this makes the framework less complex because you don't have to worry about interplay between the components.
But not a single mention of merb in this entire post. I'm not complaining but it seems disingenuous not to mention it as the sole reason I wrote merb was to push rails forward. And when it looked like merb might possibly overtake rails I went ahead and gave merb to the rails project and got the two teams together so there wasn't wasted effort. After all to have ruby and rails itself win we needed to compete with java and python and php. Merb was starting to fragment the ruby community as it became a more and more viable option and I did some personal heavy politicking to get it merged back into rails so we could take on the world instead of infighting within the ruby community.
I think it's been a great success story and most of the ideas of merb's architecture have made it into rails.
So I'm incredibly happy to see rails 3 finally come out. And I'm incredibly happy that my little experiment in making rails architecture better has paid off and the two projects merged. But I do think it's a bit weak that merb was not mentioned once in the article.
(Edit) all this being said I don't want to come across as co plaining. My work on merb ended up exactly as I wanted it to, it made rails better.
So huge congratulations to the rails team for making this happen!
(Edit) http://rubyonrails.org/merb