If Your Business Uses Rails 2.3 You Need To Move To A Supported Option ASAP
kalzumeus.com
kalzumeus.com
No doubt it will get criticised :-)
As an aside, do you think there is a better way Rails could have handled this? Or (less controversially) is there a best practise you think OSS projects should maybe follow in regards to past versions?
I am quite happy that they were really explicit about "We are dropping support for 2.3 when 4.0 lands" so that those of us who depend on 2.3 to eat had months to explore other options prior to needing them urgently. That's something that many OSS projects can and should emulate.
Your comment makes me wonder if you are aware of some undisclosed bugs that will be disclosed in the next few months, or if it's more of just a "4.0 is dropping, 2.3 support is going bye-bye" kind of thing. If the former, I'd appreciate some clarification on that point. I have no problem backporting patches myself (and in fact extensively patch libraries when needed!), but I'm wondering if there's an active-yet-undisclosed threat, or if it's just "people aren't going to do my work for me".
Can you elaborate?
For a few minutes. It has poor alignment with my skills (I'm a fairly decent developer and can play a security researcher occasionally, but I'm a lot better at selling/marketing software than I am at hardcore framework development) and desired lifestyle (to whit, not wanting to be up at 4 AM in the morning having to work on Rails security issues -- today excepted, apparently). It also wouldn't play well with my plans to dedicate most of my business efforts to AR going forward.
It seems more like someone should be giving you either cash or equity for your roles as both an evangelist and the person who realized this was going to be needed and organized it.
I don't take money for publicity, as a matter of policy. The idea is worth about as much as the tweet it takes to describe it. The only interesting coordination problem is matching up Customer Zero with a company interested in and capable of doing the work, and that would be worth compensation, but for the fact that I was Customer Zero.
I did briefly entertain the notion of banging down a few doors and selling this (on some model like "I'll guarantee you X amount of business, in return I get a payment of $Y0k when I bring it to your door") but, meh, I'm just not that interested in doing enterprise sales for things that I don't own. Heck, I can scarcely be bothered to do it for things that I do.
A framework or system with only 10 users will never have the depth of security and bug fixing coverage that a larger, well used system has.
When examining web server access logs, it's quite common to see hundreds of requests coming in from a single host during a short period of time, looking to see if certain exploitable framework- or app-specific pages exist.
Such scanners do appear to target certain frameworks or web apps, contrary to your suggestion that this does not happen.
This means that if you have multiple rails sites with limited or no timely dev support you may not be readily able to upgrade your site to resolve issues.
This is why I took down my personal blog I had built in rails since I didn't want to be exposed to these issues and didn't have the time or desire to uplift the site onto more recent versions of rails.
I'd go with something with a definitive support life and paid support if you need it.
Either that or something simple enough you can run your own fork.
And this article is about paid support if you need it. ;)
Paid support by the vendor?
As a guy who dislikes it (and doesn't know all that much about it), I still find Rails' security policy to be efficient and reasonable.
"... only benefit the our companies ..."
Once this statement is no longer true, Rails will be ready for the enterprise.
Numbers: 5032 models, 42 gems, 16 submodules, lots of C extensions and eventmachine servers running in threads. From our website to ATM servers, it's everything inside a single rails application. We managed to upgrade from 2.3 to 3.2 in 6 months. Already running 4 (took only a few hours). We just completed our migration from Oracle DB to Postgres.
I would never have thought that was actually possible. A write-up regarding your architecture / challenges / solutions / future plans in a blog post would be extremely interesting.
(How long does the test suite take to run!?)
That's a shame.
If it helps any, all my talks were rejected this year too. :/
That said, since I posted this, https://twitter.com/rails/status/346671286149337088
Ignore the haters.
I apologize. I'll be more vigilant about what I'm posting while I'm not at my best.
I'm with you on LTS, by the way; it's a great idea.
er, thanks.
:)
That said, I do appreciate the apology, and I hope you feel better soon. <3
Great idea. Hopefully great execution for those still on older versions of Rails.
Personally, I'd like to upgrade to Rails 3.2x (and eventually 4) so I can take advantage of some newer gems. However, the task is a little daunting given we use some older authentication and file upload libraries. All that to say, if I can't get it done soon, I will definitely go the Rails LTS route.
BTW, If any Rails devs out there want a challenge and have some time, please get in touch with me.
The other problem is, we are short-staffed. So, if I tackle this, it takes me off other projects for 2+ weeks.
It looks like there is a fairly active Rails 3 fork of attachment_fu (what we use): https://github.com/pothoven/attachment_fu
Feel free to ask us at makandra anything you'd like to know about Rails LTS.
It's also an eye opening topic for all startups out there, including mine, that rely on rails -- you will need to fight to keep your applications and servers safe. I guess you could say I spend so much time building and breaking to achieve something, that the thought of long term support often slips my mind.
Still, when building I do my best to stay away from '3-in-1' gems (aka, admin-backbone-devise-api-comments-aws) that have a 0% possibility of surviving. I stick to gems that are up there in the star count on github, and try not to touch anything that has been stagnant for 6months+. Obviously this isn't a perfect solution, but I feel a bit more confident in the survival/ longevity of the application.
That being said, one of the good thing about open source software is competition here is possible, unlike say the end of support of WinXP.
That combined the the "Do nothing and, with probability of 100%, get your server owned." statement makes this pretty much just a F.U.D. piece designed to trump up business for these guys, and by proxy yourself.
"Severe Security Updates" => "After the Rails 4 release: 4.0.z, 3.2.z"
I'm genuinely curious what gems people are using that are not yet compatible with Rails 3, given that it was released almost three years ago. Maybe my use cases for Rails don't match the most common ones, but I have yet to run into this issue.
For Rails 4, well, that's another matter =)
EDIT: Here's the status: https://github.com/jnunemaker/mongomapper/issues/493
I've just started using the Turkee gem, and this needs the mass-assignment gem with Rails 4 to work correctly. Since I'm new to this one, I need to spend more time with it before I can send in some pull requests to provide patches
CanCan[1] has a '2.0' branch where Rails 4 support is being worked on. It also has PR #838 open for supporting strong_parameters in the current stable 1.6 tree.
Devise[2] pushed 3.0.0.rc about a month ago with Rails 4 support.
FriendlyId[3] seems to have work in progress on their master branch.
Acts-as-taggable-on[4] states in their README that they are compatible in version 2.4.1, but there seem to be a couple open issues related to Rails 4.
edit: formatting
[1]: https://github.com/ryanb/cancan/
[2]: https://github.com/plataformatec/devise/
There's also some issues with Ruby 2.0 support in it and in Compass itself, if memory serves...
* client_side_validations : There is an outdated rails 4 branch
* client_side_validations-simple_form : this is trickier because it also needs compatibility with the next simple_form major version. AFAIK no work is done at the moment
* active_enum : looks like simply updating the gemspec may be enough
* ransack : there is an outdated rails-4 branch, I'm not sure what the current compatibility status is
Other than that a few gems have still not released stable versions with rails 4 compatibility and only have support in a RC or even just their master branch (for instance: simple_form, database_cleaner, sass-rails)
I could have used this a year or so ago, but I rewrote an old 2.3 Rails app in Clojure (cookingspace.com if you are curious). Now I am glad it is in Clojure though.
I had previously updated another Rails app from 2.x to 3.x and I was surprised how much trouble it was to do that.
There's no way you absolutely cannot somehow find a way in about 4 years to migrate even a big code base to at least Rails 3. It's not like the migration was that complicated, there are countless guides around, a devoted community, IRC channels, consultants aplenty and even tools to hold your hand along the way.
That's not greed.
Then, add the lifetime of use which can span even decades (depending on the application). Long-term managers and architects have seen many, many technologies and methodologies come and go, and treat claims of "you better change that system quick!" with skepticism (doesn't mean it isn't true).
Four to five years of life for an enterprise code base is a blink of an eye. If I proposed a major framework/foundation change for a four year old application, I'd be getting some unpleasant looks.
Really? If that was your experience, you are fortunate, but it does not match that of many.
For me, the migration of several apps from Rails 2.3 to 3 was THAT COMPLICATED. The last one I finally got finished about 9 months ago.
If someone was complaining about, say, Rails 3.0 to 3.2 -- sure, i'd agree, it's not really that complicated, just do it.
But 2.3 to 3? So very many of us found that experience to be highly unpleasant and quite that complicated. I'm glad you didn't, but your experience is not even typical, let alone universal.
The update took around two weeks of time from two developers. The app is one of our core apps and runs very important tasks. Probably the best thing is to remove Rails completely from there.