JRuby, and why bouncers are assholes

Jul 30, 2009

I'm normally not one to use this site as a soap box or an outlet for opinion pieces. But I figured it's easier than being continually baited into replying on all the various blogs/forums/groups out there. There's a whole heap of talk in the ruby community at the moment on JRuby and it's place in the ecosystem. Most of it has been kicked off in response to Charles Nutter's post on JRuby's importance to Ruby. I was fortunate enough to see Charles' presentation at Rails Underground last week and have a chat to him, and he had some great insights and examples of why JRuby actually is pretty damn awesome.

The sky is falling

The only real problem I have with Charles' post is the inference that all is lost for the Ruby community if we don't embrace JRuby quickly. It's not, it won't suddenly disappear. What we will possibly lose is the migration of great java developers like Jim Weirich and Charles. I'm willing to excuse a bit of sensationalism in his post though, we're effectively talking about his livelihood here. He needs to get people to pay attention, he needs people to use JRuby, he needs more of us to embrace it.

Whatever his motivations, he's right.

Java sucks

Yes, we know. But you've missed the point. This isn't about giving us java, it's about giving java ruby. Or better yet, giving ruby the JVM. Just try and think through the argument logically; why on earth would a java developer who is unhappy with java for whatever reason move to a new language, that gave you all the same obstacles? They wouldn't (no matter what your opinion of the average java dev is). It's about combining the flexibility of ruby with the good bits of java, the bits that are good enough to make people want to stick with java.

Java/The JVM is slow

"Good morning Mr. Kettle, I'm the pot...; and you my friend look black". Really? People that are happy enough with the performance of ruby 1.8 are pointing the "unperformant" stick at other interpreters? Give me a break. The fact is that the JRuby implementation (in most cases) is as good as 1.8, and in many is as good as 1.9. The fact that such a minor section of the community seems to be aggressively migrating to 1.9 highlights the fact that performance really isn't such a high concern for you in real life work, it's just a great scape goat for debates. Oh, and worried about that additional few secs startup overhead from starting the JVM for little scripts? Then don't start it up

Ruby/rails is a competitive advantage

Bull. Shit. Your competitive advantage is your expertise and the ability to meet your client requirements, as efficiently as possible. Period. Ruby and Rails have helped you have an edge for the past few years, but there's many alternatives that are closing the gap. Most of my clients don't care what technology I use so long as I do the best job for them and make the most efficient use of their money. And why should they care? The few clients I have worked for that would care, would probably still prefer I use java over ruby.

The EngineYard deal is acknowledgement from Sun that even they think JRuby is dead

Wrong. JRuby is never going to be a core part of Sun's business. There are so many people that are happy with the status quo that they will continue coding away in java until such a day it might be declared deceased. Why would they have any desire to invest both time and money to stop such a minor outflow from their business? They wouldn't, they've got bigger problems to deal with. On the other hand, EngineYard is all about infrastructure...; and infrastructure for hosting ruby apps specifically. Higher performance ruby implementations means they need to invest less in hardware for the same return. It has a direct and appreciable impact on their bottom line. Sun was a great fit initially to allow the guys access to the java team so we could get the most out of the JVM. EngineYard have more to gain out of a successful JRuby at this point than Sun do, so they're a much better fit.

We don't want more java developers or the java community

This is the one that irks me the most. I can only recall two occasions in life where one group of people proclaims they are too cool to associate with another group of people. Bouncers at nightclubs, and "that" group in high school. Bouncers are assholes, and those kids from high school probably grew up to become bouncers.

If you've got a problem with someone else, that's your own insecurities and your problem to deal with, don't infect the rest of us with it. What's the issue here? You don't like their code? Then fork it, fix it, or do it yourself and the problem magically goes away. If you don't want to do that, then shut your pie hole and pay some respect to those that actually do the work. You don't like the competition? Go read a book or five, find some better developers to pair with, stop trying to hide.

If we're using a technology that really is as great as we make out, we should see it as inevitable that the community is going to grow significantly in size at some point. I think Malcolm Gladwell refers to it as the tipping point. The technical ability of the average developer may drop a little. Commercial interests may infest us and move conferences to Vegas. But for every 10 hacks you still end up with a Jim Weirich, Giles Bowkett, David A. Black, etc. And for every large conference you end up with a Rails Underground, Scotland on Rails, or Ruby Hoedown.

Looking at the world through ruby tinted glasses

The fact is that for a long time the performance of ruby has sucked. We've worked around it and justified it for a long time, and for the vast majority of people it didn't suck bad enough to cause problems. Heck, we were all happy using webrick until Zed Shaw came along and showed us a better way. But 3rd party library support has also sucked. Trying to create PDFs was a nightmare for ages. Trying to work with Microsoft document formats still is. I can think of at least 5 occasions where I've solved a simple problem in another language because doing it in ruby would have been far too difficult.

For all the talent the community has, there are so many areas where good support is still lacking that it's unrealistic to think there are enough talented people who care and have the time to do anything about it. Combine that with the fact java has at least (commercially) a 10 year head start and the gap between the two languages is huge. Java has plenty to offer us.

Why can't it all just be peace, love, rainbows, and freakin flying ponies?

All this arguing seems to do is instill a whole "us and them" mentality. There's no need for it to be that way. Embrace JRuby, take advantage of the performance of the JVM, get access to a whole swathe of new libraries that go far beyond what your current list of gems currently offers you...; and get to keep using the language you love.

One of the things I admire most about the ruby community is the ability it has to support innovations and allow the proverbial cream to rise to the top. WebBrick was replaced by Mongrel, then we had Thin, and now we've got Passenger. SOAP became REST. AttachmentFu became Paperclipped, etc. I'd hate if in this instance it wasn't allowed to happen because of a whole heap of misconceptions about what JRuby was and what it had to offer.

Or maybe we just need to get a mascot like Django and chill the fuck out.

Hi, I'm Glenn! 👋 I'm currently Director of Product @ HashiCorp, and we're hiring! If you'd like to come and work with me and help make Terraform Cloud even more amazing we have multiple positions opening in Product ManagementDesign, and Engineering & Engineering Management across a range of levels (i.e., junior through to senior). Please send in an application ASAP so we can get in touch.