Why Ruby?

Have you tried JRuby for performance?

I had a similar experience in my career. I switched from a Microsoft developer to the open source world. Its weird how slow and turgid the Microsoft ecosystem feels after being in the Linux/open source world for a while. Its a pretty daunting change!

Here’s an article I wrote about my career shift. It is pretty daunting to shift so much of your career, but also extremely rewarding!

I don’t really agree with you about .NET.

Yes, it is true that you will get more contributions if you don’t use .NET, but this has nothing to do with licensing or toolset. It’s because there are open source developers that are quite vocal, even religious, about not liking Microsoft. They are even trying to sabotage mono applications in Gnome and Debian, just on principle. These zealots even accuse Miguel de Icaza of being a “traitor”, blaming him to be either Microsoft or Apple puppet, I think they haven’t exactly made up their mind yet :slight_smile:

I do prefer statically-typed languages, because IDEs suck for interpreted languages (and you don’t even get… static analysis). I guess the average “h0x3r” would do it in vim/emacs/whatever-OS-you-call-text-editor, but good, free tooling does increase productivity for me.

Also, there are start-ups that use Microsoft technologies. We are doing quite interesting things, and we are in Bulgaria, too :slight_smile: Come on, I thought you were a pragmatic programmer!

@Baus Ditto. I wish they had chosen Python. A lot of great things come out of the Ruby ecosystem, but reading Ruby code when one needs to dig down into some library is frustrating. “Explicit is better than implicit,” and always will be, in my world. =)

@Dilyan Rusev Don’t make the mistake of thinking that using a statically typed language with a proper IDE makes one a professional and the other an “average h0x3r.” Much of your world has been written in those “call-it-whatever” text editor by programmers that will run circles around the both of us, in code quality AND productivity.

I think you hinted at the reality: Most our code these days is written in jQuer…JavaScript anyway. The server-side code is just an API wrapper for your interface to talk to.

Hence, why we have all this debate. Sure, that API language matters, but it’s for things like: “How fast can the server respond?” “How easy is it to learn?” “What is the community like?” “How good are the standard and open source libraries?”

Note that the actual features of the language are not really important anymore. They all get the job done. At least with anything modern enough to have all the basics you need.

…we obtained the absolute fastest CPUs you could buy for the Discourse servers, 4.0 Ghz Ivy Bridge Xeons, and performance is just … good on today’s fastest hardware. Not great. Good.

Well, what about people who don’t have the fastest hardware currently available? Wouldn’t Java or some other JVM language been a better choice?

@Dilyan Rusev, if a full ide is your cup of tea, rubymine works quite well. I’ve always hated bloated ides like visual studio and eclipse, but rubymine impressed me.

No matter what discourse chose for its languages it would have ticked off someone or left someone feeling like they made a poor choice. The nice thing about open source is that you can fork it and translate it to the language of your choice.


Ruby runs just fine on the JVM with JRuby. It’s actually pretty darn easy to deploy with, and soon will become even easier with Phusion Passenger 4.0, which adds JRuby support, bringing deploy options to parity with MRI Ruby.

I share most of the feelings of other commenters. I do not really understand some of your reasons, and I would love to hear more and understand them better. Most of all, what puzzles me is that we have great, fully open source .NET tools/library/runtime from Mono.

It would be a really great contribution to the OSS world going with Mono and supporting them: Ruby already has an active, enthusiastic OSS community, Mono could have used your help! Realizing something big as discourse in .NET/Mono would have boosted confidence in using it for open source projects. So, why not Mono? Have you considered it, discarded it, and why?

Also, a little point about users in “other” countries using open source tools. I live in Italy, which is, wrt software development, very, very behind other countries in the world. Still, you get great free-as-in-beer tools from MS. And they are great tools too! And efficient: I can use my 5 years old laptop with Windows 7 and VS 2012 without getting mad. As you correctly pointed out, Ruby performance instead are abysmal on old hardware; this is something to consider too.

Finally, I have a feeling that the real reason behind it might be that you wanted to change. After a huge and succefull project like SE, I would need something different! I find really hard, coming from a C#/.NET background to give up not only JIT, but above all type-safety and all the safety and quality that this brings (excellent editors, refactoring support, diagnostic, compile-time checks, …).
I would be really interested to know what convinced you of such a big jump, and to read -maybe in a while- of how you coped with dynamic languages from a quality point of view.

I’m talking places this ugly American programmer has never heard of, where they speak crazy nonsense moon languages I can’t understand. But get this. Stand back while I blow your mind, people: these brilliant programmers still code in the same keywords we do! I know, crazy, right?

Jeff, a mere hour after your post, Canonical announced “they’re helping the Chinese government add Chinese specific features to Ubuntu, which will become the reference architecture for a Linux distribution, backed and developed by the Chinese government”, see http://www.theregister.co.uk/2013/03/22/china_makes_linux_os_with_canonical_help

Are you sure the Chinese government won’t afterwards find a Western software company to help them add Chinese-language keywords and library names to a programming language, backed and developed by the Chinese government? I know, crazier, right? I think you’re underestimating the extent to which the Chinese government can set standards for IT within its own borders, just as Google did a few years back.

Thank you for not being afraid to change and grow, and also for sharing what you are learning with us… I for one have always appreciated how while your work might not be on my language (although this time it is) your ideas have always been universal. Really looking forward to looking over the source for discourse.

I am just wondering, what is your comments on python. I am planning to run one among ruby and python and have heard many good thing about python already. As you are mentioning some negative side of ruby, seems like I am gonna catch python instead :expressionless:

Jeff. This sounds like a really exciting switch.

But… are you worried about losing nice, warm, cozy static typing on a large scale project?

Each time I switch from between C# and Ruby, it feels like I’m getting out of my minivan, and driving a sports car with my seatbelt off at full speed.

FYI, to wean is to stop something: http://en.wiktionary.org/wiki/wean

@Peter Bowyer

I aim to re-create discourse in PHP, with a slightly different focus (on being less fixed on javascript, more extendable and embeddedable into your applications)

http://gab.youboards.net/ (Dead Link)

“Getting up and running with a Microsoft stack is just plain too hard for a developer in, say, Argentina, or Nepal, or Bulgaria”

How is that even remotely true?

I live in Argentina and I’m perfectly capable of working with the Micorosft stack (and have been doing so for years).

Glad to hear someone give you a sign, you needed to know.
Now you’re giving Ruby a little bit of heart and soul.

I’m happy you did something different, even though your reasons are of course all wrong. I do wish it had been Node and not Ruby - JavaScript fits most of your reasons for going with an open source stack a lot better than Ruby does.

But back to why you’re wrong on the internet:

  1. .NET licensing isn’t complicated, SQL Server is. There’s an easy fix for that.

  2. I don’t think StackOverflow really participates in the best that the .NET open source world has to offer. From the information I can read, you (and team) published a lot of the code you wrote under open source licenses, but as far as I know the StackOverflow stack didn’t really interact with many (any?) open source .NET projects that weren’t run by StackOverflow - e.g. writing MiniProfiler instead of working with Glimpse, working with Mono, etc.

  3. There’s a lot that’s changed in the .NET web space in the past year as they’ve moved from just releasing the code (see 2 above) to accepting pull requests. This has resulted in a good amount of accepted pull requests - community contributed features which ship “in the box” and are officially supported by Microsoft. Sometimes that’s lines of code, but more often it’s integration of popular community libraries. If anything, that trend is accelerating.

Coding Horror Fan,

It’s not just Telerik, .NET and Microsoft are strongly represented in the Bulgarian government too, they recently spent millions on MS licenses (both server and desktop OSs, among other things). We’re in a dire situation here…

How is Python’s performance with JIT? Could you run Django on PyPy?

I live in Bulgaria. Getting a full Microsoft stack is very easy for Bulgarian programmers because piracy and hacking has very strong traditions here and is ingrained in the culture.

Sadly .NET, JAVA and PHP are abnormally popular for development here. There are few big players that were born from outsourcing jobs in the late 90s - early 00s and the languages kinda stick.