Give me the pitch for going from working 2.x code to code which may fail in unforeseen ways and will certainly take a week of dev time to release. I am not being sarcastic, I just do not see the win of being on the bleeding edge here. The huge win I see in 3.0 is the security feature for untrusted string escaping, which will save me time and pain but is also available as a back port. I am unaware of any other huge wins.
My pitch: Improved speed and security all over the place, a saner mailing solution, lazy queries and first class support for rails engines. (A/B testing whole engines out kind of things are what I find exciting.)
Having said that, this version upgrade is half a paradigm shift. Living through it has cleared up a lot of mvc and good code concepts and ideas for me. I can think of numerous ways my 2.3 rails code could be better thanks to going through the transition. That alone is worth a couple of weeks of dev time, imho.
My pitch: If you plan to support your app for a long time, you will realistically have to upgrade to 3.x eventually. Better to do so at the same time as everyone else to benefit from the hivemind's concentrated power. Plus, given advances in SCM technology, branching should be easy, and you can abandon/return to your upgrade branch later if you have insurmountable problems.
To play the devil's advocate, maybe it's best to the let the pawn... er, early adapters, go first, find all the gotchas, blog about them, patch them, and then upgrade. ;)
In this case, the next point release will remove all of the deprecation warnings that you're given with this release. So, if you use 3.0 now, you'll have a nice checklist of things you need to fix before 3.1. If you jump right into 3.1, stuff will break.
If you don't like it then why are you on Rails? Rails has been defined by doing the right thing at the cost of stability since the beginning. If you want stability you should pick almost any other platform.
Claiming that Rails solves problems you "do not have" is blub thinking at its finest. Okay, I'll grant you that the routing changes are perhaps a little gratuitous. But consider the replacement of the ad-hoc manual SQL generation by arel. You will probably never even notice when this makes a query work that would have blown up before, or when your load times decrease because of lazy querying.
ActiveModel is another place where they've added huge power and flexibility. The fact that you no longer have to use ActiveRecord to get some of its best functionality is a huge win. Just because you haven't noticed how it might help you doesn't mean it won't if you give it a chance.
Even if you really don't need anything in Rails 3, it's still a straw man argument, because Rails 3 is all about modularization and embracing much wider development paradigms. If you want to use RSpec and FactoryGirl now you can do so with fully integrated generators. If ActiveRecord is useless to you, there is a well-defined API for any other ORM to integrate just as tightly. More importantly, the APIs that the components use are now public and documented, and will remain stable over time. This makes Rails useful for an order of magnitude more projects than it used to be.
Also, I should add that I'm in the same boat as you. I have a 50,000 line/200 model app dating back 3.5 years, and the Rails 3 upgrade is going to be painful. I put up with it though, because I much prefer a cutting edge platform to one where new thinking can never get a foothold.
If he plans to continue development on that code, then upgrading will pay dividends. If not, keep running the old code. Who's holding a gun to his head? Should progress stop to support all the old untouched projects in the world?
I agree it depends on how much you think you're going to modify. In any case it might make sense to wait until all the bugs that aren't caught until widespread adoption have been fixed.
If you have a large working corpus of code in Blub, you absolutely shouldn't replace it just because a new version of Language on Locomotives comes out.
What you should do is exactly what patio11's doing here: evaluate if an upgrade brings you something that offsets the disruption the rewrite will cause.
For me, this also includes factoring in whether or not I'm going to be actively developing the application in the next year. If so, I do things like keep the framework versions current just so, nine months down the line, I'm using a framework version that I can still get docs and plugins for.
You're right. If the new features and speed updates of Rails3 don't matter to you, then it makes perfect sense to wait until you upgrade. Not knowing your situation, I can't really tell you what exactly the benefits will be of upgrading.
those are big things but patio11's question was whether it's worth a week of dev time for an existing project - is there value in spending all the time and energy for a project working well in rails 2.3.x?
If you put it that way, and you're certain that's how it is, then it sounds like you've got no good reason to upgrade your current apps. Future ones perhaps, but not current.
Why a week not a month or a year? Or half a day for that matter?
Of course, everyone is free to stay on whatever version they are using till the time it is too big to fail, er… I mean to big to be refactored.
I cannot escape "IE6" popping up in my head as I read this discussion.
Until you see an obvious reason to convince you to upgrade your code, don't. I'm starting a couple of longer-term Rails projects for clients right now, happily using 3.0. But I'll be waiting a while longer before upgrading my existing sites. Amid all the hype about 3.0 let's not forget 2.3 isn't half bad either.
I know you're being facetious here, but I do think most of those commits are internal changes and not API changes. Things like removing unnecessary instantiations of variables, adding/removing deprecations, docs, and cleaning up tests.
Personally, I don't think it will be that big of a deal to upgrade to Rails 3 from a 2.x app. They have done a good job of deprecating stuff, so Rails 3 should naturally lead to a leaner Rails 3.1. While it might not be a standard app-maintenance upgrade, I think it's worth it if you have decent code with some tests.
Also, not sure how it will compare to the 1.x => 2.x upgrade, but I was able to get a very complex application with horrible code and no tests upgraded from 1.x Rails to 2.x Rails. It only took me 3 or 4 days to get 90% of the app working. The rest was just stuff that I didn't find was broken. Since the app didn't have any integration tests, none of those features even got tested. I had to rely on traditional QA to find the errors, and this process took just under a month.
Still, RC1 has been rock solid for me. 3.0 is gearing up to be an amazing release, been using it for all my web projects since the first beta (feb).
If you're still stuck on Rails2, seriously consider upgrading. Your life will be much happier (once you go through the pain of course ;-)