Introducing Rubinius X
rubini.us
rubini.us
1) Performance. The JVM simply scales better, it is more cost effective in the datacenter. Without mentioning names, I know of significant Silicon Valley darlings that spent huge sums trying to scale Ruby, got crushed, and eventually ripped-and-replaced the backends with Java.
2) Skill Availability. There are 7+ million Java programmers, it is easier to hire Java programmers.
3) Tool Availability and Maturity.
I think Ruby is a fine language, but I see it like PHP, great for rapid prototyping and productivity in the small, but it's version 1 for the lean startup or for the corporate departmental app. Version 2 is Java, C#, etc using the UX and product feature lessons learned from the Ruby prototype.
IMHO, Node.js is the new Ruby. It has the benefit of having the same language on the client and the server, but once again, it's going to run into similar scalability issues when large organizations try to use it. I think we're going to run into the same issues, of it becoming a cool bandwagon, the platform being stretched to its breaking point, followed by the realization that there are serious problems.
Not everyone is working on a startup trying to peddle their stuff to a zillion users and getting hammered in the process. If you ever get to Twitter/Facebook/whatever size no out-of-box solution is going to work. You'll end up doing what Twitter did which is re-architect all their infrastructure/code and tune all their stuff as much has possible.
Ruby's issue IMHO is that it has always been a Rails-centric community/ecosystem and never had the change to grow beyond that. It's still largely used to write web stuff and nothing else. Python, which is a "similar" language, has a much healthier and more diverse ecosystem being used in things like scientific computing or computer vision.
If you want to make Ruby better, grow beyond the web application ecosystem and make it more diverse.
I disagree with the assumption that Ruby is web only. E.g. Chef and Puppet are huge efforts that have no direct connection to frontend web, both written in Ruby. Vagrant as well. Ruby is big in the infrastructure world.
"Sure thing."
"Damn it feels good to be a banker."
My point was that your personal sample is most probably irrelevant.
Vagrant? Homebrew? Jekyll?
However, the author does point to problems in Ruby's performance and maturity that are problems and issues -- if not immediately, then down the road. Your point about how people are leaving Ruby in favor of people, tools, and performance in the Java world is a good one. I would like to think that JRuby is a good option for such people, but maybe not.
I found the author's ideas for modernizing Ruby to be interesting. I didn't agree with all of them, but at least he's trying to hash out some possible ways in which Ruby could improve. This sounds like a wish list for Ruby 3.0, though -- interesting ideas that would break compatibility, and that will take a while to implement. Perhaps his work, and that of Rubinius, could show us the way forward to such a new version.
In my opinion, performance is by a huge margin the chief reason I do not begin new projects on Ruby. I would rather defer performance tuning efforts and scale complexity until much later in projects' life, rather than immediately following launch when I have 100 concurrent users hitting the application.
> IMHO, Node.js is the new Ruby. It has the benefit of
> having the same language on the client and the server,
> but once again, it's going to run into similar
> scalability issues when large organizations try to use
> it. I think we're going to run into the same issues,
> of it becoming a cool bandwagon, the platform being
> stretched to its breaking point, followed by the
> realization that there are serious problems.
I think Elixir[0] may be the new hyped language. PragProg seems to be positioning[1] themselves[2] for a hype cycle on it, at the very least. [0]: http://elixir-lang.org
[1]: http://pragprog.com/magazines/2013-06/programming-elixir
[2]: http://pragprog.com/book/elixir/programming-elixirFrankly, JVM hasn't really sucked since it got a JIT compiler (J2SE 1.2, 1998) or if you prefer the switch to HotSpot as the default VM (J2SE 1.3, 2000).
Also, this is a question of resources. Once your first version succeeds, you suddenly have the funds to build a complex version where you care about all the small details.
Ruby is a _very good_ language as long as you are in the "I don't need to tune all the details phase".
Even writing you frontend in Java first would (most likely) not have helped you coping with the new-found challenges in that heights.
And not every low-traffic site is simple CRUD. If you do image processing, applying machine learning, natural language processing (or a thousand other things that are CPU intensive), it's nice that you can directly use one of the many high-performance libraries available in the Central Repository in your webservice.
Also, the example was the Twitter frontend. So I respond to Twitter frontend. Don't derail.
I'm sure they could get a speedup by rewriting the front-end, but the fact that they kept trying and fail to scale stuff that with anything remotely like a sensible architecture is network IO bound rather than CPU bound even with MRI on the hardware available when they launched was a good sign that their main problem had nothing to do with language.
Their "simple" case of updating n followers for every status update when n is small is trivially distributable with a relatively simple message bus routing fabric; their "hard" case of updating when n is excessively large is simple-ish by simply structuring the follower lists as a tree of "virtual" follower lists that acts as forwarders; you can do that with off the shelf components.
To illustrate just how basic this problem is: I've built message buses for scenarios like that using mail servers even - though if you do that, at least with a standard mail server, you will be limited by disk IO on forwarding nodes unless you spend too much money (you don't need message updates to be durable "in transit", as if the system is suitably.
Another simple approach to the large follower problem is to pull from "expensive" publishers and push from cheap ones. You can do that too with 25-30 year old software and some scripts to maintain the lists: Push via SMTP, pull via NNTP and make the "mailbox" you post status updates to for people with large follower lists a SMTP->NNTP gateway.
No, I'm not suggesting they should actually do that, just pointing out that it is viable, and it was viable with the kind of data volumes they are dealing with well over a decade ago. Yet they had problems handling it years later with a much smaller data volume than they have now.
When you get to the size Twitter is now, it makes sense to sacrifice developer effort for saving some percents here and there on servers, but their complaints about language when they started their rewrites was distractions from the real issues, whether they realised it themselves or not - it's not like they were handling data volumes at the time that lots of people haven't managed to handle with much more modest resources.
You know, one of these days this argument might catch on in other industries. For instance you go to the doctor and say "Doctor, I have a sore throat" and the doctor replies "Well, you might need your tonsils removed, but in order to do that we'd need to hire competent surgeons - how about we just punch you in the face until you forget about your throat"
Also you're flat out wrong about solving the same problems in different languages. It may be possible to solve all problems in Java or Ruby, but it is not possible to solve them in the same way - or more specifically the best, most economical or most maintainable way.
To bring skill into the equation means no one should ever have written anything in Erlang because few people could write Erlang - but people do, because competent software engineers can learn Erlang.
Also there are modern strongly typed languages which compile into JS and run just fine on Node.JS. This solves code-base scalability for large teams..
To be clear: the web would not be what it is without JS, and Node is a fascinating and innovative thing. I disagree that there are loads of people who are experienced in C/C++ are champing at the bit to go write Node. The Java/C# talent pool is massively larger than the non-frontend JS talent pool at this time, and the C/C++ talent pool is largely otherwise occupied. That could change... but it hasn't changed yet. The HN/startup scene is not representative of the software industry at large, and a lot of people writing these "languages that can compile to JS" are part of the industry at large.
That seems a bit apples-to-oranges to me. The degree of hype is similar, yes, but other than that they seem like different animals. Ruby started slow (performance-wise), with memory leaks (that were denied at first), and was predominantly a community development. Node.js is running on top of V8, which is mature, performant, and backed by Google.
Also, node.js with browserify & grunt makes for a great front end packaging & dependency tool.
This reminds me of "homebrew is a great packaging/dependency tool, it's basically as good as apt/yum/pacman"
When developers are more expensive than servers, rails makes sense.
When servers are more expensive than developers (because of scale), Java/c# start to make sense.
A few of the worlds most trafficked websites use PHP is production: wikipedia, facebook, wordpress, and hundreds of other bb forums.
The appearance of risk is more important to most businesses than actual risk. Ruby isn't dominant, therefore it is perceived as risky. Java's complexity might actually threaten the survival of a small project, but it's not "risky" because it's dominant.
I have spent most of my ruby career in large companies, even for Padrino work. No one builds a multi-million dollar project in Ruby. But one or the other frontend for that. Some of the services. The deployment tooling, be it Chef or Puppet. Ruby is a surprisingly flexible language and can be successfully used on or off the JVM, which large companies just _like_.
This blog post reeks of negativity and speaks of a willingness to throw the baby out with the bathwater.
Selection bias.
Go to a COBOL conference and you'll likely find that most attendees work in Big Biz as well. What does that tell you?
It'd be selection bias if he made the assumption that most big businesses were using Ruby. That's not the point he was making -- what he said was that lots of people using Ruby work at big businesses.
No, you don't understand what selection bias means.
Selection bias is when a developer from Big Biz is more likely to go to conferences than a developer from smaller business. Do you have any specific reason to believe that? Not knowing much about conferences, I don't. So until you tell me of those specific reasons, I have no reason to believe in selection bias.
Now, there's another sampling effect: maybe Big Biz simply hire (much) more developers than smaller businesses. If 5% of Big Biz devs work on Ruby, and 10% of startup devs work on Ruby, but 90% percent of developers work for Big Biz, then your Ruby conference will still be 80% full of Big Biz devs without selection bias, even though Big Biz is twice as hostile to Ruby.
They have more money so they can send more developers to these conferences than startups. Also, they have more employees, so the odds of a number of them being Rails developers is higher.
But that's not even what was being discussed in the context of my "selection bias" remark: the OP was saying that Ruby is used in BigBiz and used Ruby conference attendance to support this claim, which is different from what you are arguing.
On top of that, the initial statement was "almost no big business uses Ruby".
I would attend a Ruby/Rails conference, and I work for a "big business". That doesn't mean that my "big business" uses Ruby.
Be aware that this includes deployment automation for some software. Two of the behemoths in that space are written in Ruby.
That's not quite right. Anecdotally, I've seen or read about big corps using hot JS front-end frameworks like Angular and Backbone, server frameworks and databases like Node.js, MongoDB and Redis, and programming languages like Python, Erlang and Scala in production. Even if you look at the big tech corps (such as Yahoo, Google, Twitter, Facebook, Amazon), internally there isn't a whole lot of Ruby either. The big poster-child for Ruby, Twitter, is now most known for migrating away from Ruby than for actually using it.
I'm not a Ruby guy, but it doesn't seem like cliche corporate conservatism is what's holding Ruby back. It looks like it's Ruby, and specifically the Ruby platform. Maybe pretty Ruby language semantics aren't enough to make up for Ruby platform downsides. Maybe there just isn't a good reason to use Ruby.
>Java's complexity might actually threaten the survival of a small project
The choice of Java would not threaten the survival of any small project. Though Java is (still) not a very pretty language, the tooling around it has gotten enormously better from where we were in, say, 2003. Current frameworks like JEE, Spring and Play are actually pretty great to work with.
Furthermore, I think Python (actually Jython) is starting to become for prevalent in the enterprise space. I've seen a few different enterprise software suites from companies like IBM and HP that support writing extensions in Jython. I know that the JVM implementation of Ruby is JRuby, but is anyone using that in production? Jython seems relatively more stable/mature, but I really don't know much about JRuby.
Seriously, businesses will spend the equivalent of ten programmers' salaries on Websphere licenses, but they'd never consider hiring ten programmers. It's the poster child of corporate timidity in risk aversion drag.
But I digress.
I don't _think_ it's very popular as a scripting language for new java stuff, and it still only supports python 2.5 which is 8 years old.
[1] Gamer / game analytics, logins etc. Basically APIs that their games call over the network for the more "social / analytics" stuff.
Personally I have used jruby in the past for implementations of services where we needed to use java libraries.
It's also stable, even though it tends to lag a little behind cruby in some features. The 2.0.0 feature set is not yet implemented fully.
The compile time sanity checking is still doing type checking, and to a degree you're correct ... there will be run-time exceptions if CDI can't find any instances of an object (likely an interface) to inject or if there is more than one that matches. I don't think you'd want it to randomly pick one.
If you code to the CDI and JPA specifications, you can plug in Hibernate and Weld as your implementations of the frameworks. If you plug in Hibernate and Weld, then use their non-standard extensions you can indeed find irregularities.
I think the question of whether or not to hard code some setting or make it configurable is unrelated to dependency injection. Dependency injection is one way to design dynamic configuration once you have decided not to hard code.
Other options would be to load stuff from a database, a directory server or from a config file. No matter how you do it the compiler won't be able to help.
(Can anyone speak to this aspect of working with Dagger?)
You are still getting all the benefits of static typing, especially if you are coding to a contract.
(It isn't really -- in fact it's the opposite, "corporate" platforms tend to die out faster than open-source ones, at least in my experience -- but they think it is, which in this discussion is all that matters.)
This is a big deal. Particularly for risk mitigation and CYA when something goes wrong. No one got fired for buying IBM, as was once said.
Not just that. They reject Ruby because
1. It's very slow and continues to be very slow despite all the performance work being done on it (nod to JRuby).
2. It's just hard to hire Ruby developers, who are getting more scarce every year.
These are the symptoms of a dying language.
Seeing as how you've fit the classic "respond to every post" argumentative style.
Citation?
Why would Ruby developers be getting more scare? Are they retiring earlier than Java developers?
http://www.indeed.com/jobtrends/ruby%2C+java.html
> Why would Ruby developers be getting more scare? Are they retiring earlier than Java developers?
Ruby developers have always been a tiny fraction of the number of Java developers, and that fraction has been steadily decreasing, while the Java developer pool keeps increasing (Android helped quite a bit growing that population).
Benchmarks these days show Ruby 1.9/2.0 as being a wee bit faster than Python, and it's improving. That's still much slower than Java, of course, but then that's a bad comparison; Ruby and Python are better comparisons.
Seriously, I don't mind Tcl at all. Does that make me crazy?
I actually like Tcl quite a bit even if I don't use it much these days:
http://www.amazon.com/Tcl-Toolkit-2nd-John-Ousterhout/dp/032... (See the cover for all of the authors' names :-)
People ditched it because it wasn't cool, but it got the job done and remains useful and succinct.
Just customize your keyboard layout, and reverse shift behaviour for the number row. There, better symbol access.
PHP isn't either, except that it's packaged well in Linux.
If there were good packages for Ruby in Debian, the only advantage that PHP would have is in being the shared hosting default. Both are pretty equally performant, and Ruby has the advantage of being a nicely designed language.
>there is absolutely nothing to be gained by not using PHP.
What is there to be gained by using PHP?
<?= 'Hello World' ?>For example in railsland, typo and mephisto were both popular at some point, and in djangoland there have been at least two dozens blog engines _I know of_.
There was a beautiful django conference video where the speaker asked "who is writing a blog engine in django" and about 9/10 of the room raised their hands.
EDIT: I concur, many language advocates believe that, but I think they are wrong for different reasons.
Rubinius has always been the Ruby that placed purity before pragmatism. I applaud them for that, but putting forth the assertion that Ruby is dying as a means to drum up support for a new generation of Ruby seems like getting off on the wrong foot.
That being said, I think the vision Rubinius X has about where Ruby should go is great -- both in terms of language features and conventions -- and I think that besides the specific details, the high-level strategic vision is something Ruby needs.
1. Dying != dead
2. In addition to being maintainer of Rubinius, Brian Shirai is the creator of RubySpec. To me, Rubinius X is more a forward-looking extension of RubySpec then it is something about building support for Rubinius-the-project. As RubySpec sought to create and concretize agreement on what Ruby is (which was important to making Ruby-the-language something more than MRI-the-implementation), Rubinius X is an (opinionated) effort to establish a consensus on where Ruby-the-language is going and how it is going to address the aspects of Ruby that are limiting its adoption.
3. I'm not at all surprised that the fact that Engine Yard, historically one of the biggest corporate players in the Ruby world and who until fairly recently was paying core developers for both JRuby and Rubinius is now not directly sponsoring either would be a source of soul searching and consideration of the future, both of the Rubinius and Ruby. I'd be rather more surprised if it wasn't.
These capabilities prove to be golden for Silicon Valley startups where speed of execution means difference between life and death (VC or nothing).
Once done - startups are praying for a quick exit until the issues of gems mess, scaling, performance and deployment nightmares start raising their ugly heads and requires ample continuous investments in administration and management talents to keep things afloat.
Serious multi-billion enterprises need performance, guarantees of commercial support from big vendor, speed of compiled languages and cannot afford to use interpreted languages and have their feet stuck in all that swamp.
Hence they use Java and dot NET. That's a fact of life.
I'm not sure that is a premise that can be tossed out as axiomatic before making an argument.
Ruby is great at what it does. I don't see Node.js replacing it anytime soon. But Ruby won't be in enterprise anytime soon also.
" If another language can provide 10x more performance in 2x the code of Ruby, that's a tradeoff I'd seriously consider.
If I do ever have a hit on my hands, and it starts scaling quickly, there's a cost, management, and maintenance issue to bottlenecking myself with Ruby. "
I realize that there are many parts to a system and that other parts encounter scaling considerations before the programming language does - ie database.
However, it seems there are known, quick to implement solutions that can solve the data scaling problem in a cost effective manner. Reimplementing my application logic with another language seems to be a very cost-ineffective and time consuming task.
I'd rather head that concern off at the pass by picking that language with 10x the performance and 2x the amount of code.
Deleted comment
Still, what do you think is a typical ratio? I've read pieces suggesting language-level overhead of 60x-70x is normal.
Performance issues come from blocking and bottlenecks, not programming language choice. Waiting on database queries, waiting on networks, waiting on disk - those hurt. Using O(n^2) algorithms when O(n log n) or O(1) could be used hurts. Bad indexing on data sources hurts. Handling excessive or redundant data hurts. Threads that could be doing work getting blocked (or deadlocked) by other threads that could get out of the way in a better architecture - that hurts.
Programming languages, that's nothing. And in Ruby's case, even that limit can be addressed. Ditch the perceived inefficiencies of the Ruby interpreter in favor of JRuby running on the highly tuned JVM, and see if things are faster.
There are no silver bullets in software development; all projects can fail. The only difference is that with ruby or other dynamic languages, it'll fail faster and cheaper.
Freelance rates for ruby developers are crazy-high. In Seattle, at least, I'm seeing $200/hr as not uncommon.
And on a side note, PHP has been around for about 80 years now and it's still moving along.
So I don't think ruby/rails are going to "die" any time soon.
I live in Israel, where Ruby has taken a while to make inroads. But we just had a conference last week, and the many attendees were super excited about the language. And companies were desperate to find employees who know Ruby and/or Rails.
Indeed, the biggest reason that I've found companies give for avoiding the use of Ruby is the scarcity of experienced developers. A client of mine switched from Ruby to PHP last year, simply because he could easily find PHP programmers, and they cost a lot less. You could argue that this points to companies leaving Ruby, but in many ways, I'd say that it rather indicates Ruby is a victim of its own success.
Even if Ruby is dying (which I don't think is the case), plenty of seemingly dead languages are still in demand, and are used on all sorts of projects. You can command great consulting rates in COBOL, today, if you want.
Both Ruby and Rails have strong, active communities that are pushing the language and framework forward in all sorts of interesting ways. The key to a successful open-source project is the community, so I'm pretty confident that I'll be working in Ruby for at least a few more years. But hey, if the author wants to work in something else, power to him; we're fortunate to be living in an era of many high-quality, open-source languages.
My thoughts are the same as yours... Ruby and/or Rails aren't going anywhere anytime soon. Just think, Rails powers the site that stores most startups code. It may not be as shiny and new as it was, but there's still a lot of usage.
Ruby: 6,401 Python: 8,299 .NET: 26,711 Java: 36,069
An interesting switch is: Django Developer: 1,199 Rails Developer: 3,682
I don't think Ruby, Python, etc will die anytime soon. There are too many small businesses that need products developed fast. PHP on the other hand...
PHP Developer: 10,317 What?! ;)
I never really learnt Rails, to be honest. I dabbled, but never got fully into it. The thing is, the way I'm writing web apps now (nice API's over straight classes, composable libraries, and a routing layer over the top to give it a REST interface) doesn't fit my mental model of how Rails works.
Similarly, I've somewhat abandoned "MVC" for web-apps. Nice API's with the ability to have any front-end, not kicking out HTML from my framework, and the like -- that's what I'm doing now.
Don't get me wrong -- I know that Rails (especially 4) can do all this as well. Heck, there's not much stopping me from doing what I'm doing here with straight Ruby, a couple of libraries and Sinatra (I have a good friend who does exactly that). But for some reason, I've instead written off ruby entirely for that use-case.
I'm merely the n=1 here though, and as a non-ruby programmer, my opinion doesn't mean much I guess. But I find it curious how I ended up skipping it.
1. The routing layer is all about declaring a resource which gives you all 7 major REST operations, and
2. there's a nice facility for responding_to any data format (html, json, js, text, etc) you want.
With rails scaffolding, you can pretty much get all boilerplate code written for you, and have it very simply implement a REST backend for a more "heavyweight" javascript framework (angular, ember, etc).
I wonder if the issue is that rails didn't originally start out this way, and now people assume that Rails is stuck in the past?
I think the article gets it right in that Ruby needs better concurrency primitives (promises are a nice idea), and esp better performance. If Javascript can be as fast as it is with V8, there should be nothing stopping Ruby from achieving similar levels of performance.
I don't think many Rails developers are abandoning the platform though, so dying probably isn't the right word for it.
I don't think I got it across in my post correctly, but that's basically what I was trying to say, yeah! I even _know_ that I have that cognitive bias, and yet it remains. I even tried to pick up Rails 4 last week, and put it back down rather quickly again.
These days, I'm happy coding away in Padrino, which seems to sit between Sinatra and Rails in terms of features and functionality.
For me, Rails just became too big to keep up with. It's more fun and productive with a lighter-weight framework that can get you 90% of the way there. For a newcomer to Ruby, it doesn't seem to be the old "watch me write a blog engine in 5 minutes!" anymore. That might be why the other popular frameworks are getting the attention...
For example, the Node community absolutely loves MongoDB for inexplicable reasons, and support for other datastores is terrible. Despite Postgres supporting hstore for years and Node being popular for years, the two hstore modules are "node-postgres-hstore" (7 stars on github) which hasn't been updated in 1 year and "node-hstore" (17 stars on github) that hasn't been updated in 2 years. Everything I've seen indicates that this is typical for modules in Node.
Meanwhile, Ruby and Rails support Postgres extremely well at this point.
Similarly, node has several migration libraries, all of which are pretty limited. One of the popular ones, "node-migrate" by one of the most prolific node module developers, still has an open issue from 2 years ago about using timestamped migrations, with the developer commenting as if the concept is news to him (https://github.com/visionmedia/node-migrate/issues/2)
This statement accurately describes the world of Ruby gems.
Right, because everybody uses Postgres, right? All of the major database vendors are supported quite well, and just because hash storage in Postgres (which is already a stretch) is not as well maintained doesn't mean "support for other datastores is terrible).
JavaScript is also a really shitty, poorly conceived language with cruft galore, and this compounds the hell of event-driven programming.
I dropped Node.JS because it made me hate programming.
It requires a different approach than OOP that most people are used to but results in very loosely coupled code.
i.e. a power screw driver is a "terrible" tool when used like a manual screwdriver.
.. Is anyone not a hipster?
Technology hipsterism != technology vitality.
I don't think this means what he thinks it means.
E.g. You may not play ball in the park within 20 metres of the road implies that the general rules is that you can play ball elsewhere in the park.
But by taking it as axiomatic that few people use ruby, he is begging the question.
Ruby isn't. It just isn't as popular amongst hipster web programmers anymore...
There's some very interesting things going on in the non-Rails and non-web framework Ruby world...
A startup choosing Rails to power their application today is like a startup choosing Linux to power their servers. It is not something worth reporting. It doesn't necessarily mean the usage is in decline though.
Switched to Scala Play and the more flexible framework allowed what I needed easily even without a lot of knowledge on Play. Rails seems like it would be great if your doing a typical CRUD app but if you need something a little outside that box it gets in the way.
That said it seems like apps aren't always just CRUD anymore and that may be why its falling in popularity.
Just look at Puppet. It is so awesome, and it's implemented in Ruby. Ruby is definitely growing like a weed among the devops community.
This is pure bullshit. If your business is advertising a particular programming language in order to "engage customers", you are doing something terribly wrong (unless you're in a niche developer market). Your customer doesn't even care about the programming language your site is written in at all. All they want is business value. If the value of your software outweighs the cost, THAT is how you engage customers.
Ruby and other dynamic languages like Python and PHP will always have a place, no matter how they do or don't scale. The danger for 95% of startups is complete failure - not succeeding and not getting any traction at all, not "OMG how are we going to scale this with the hundreds of millions of pageviews we have?". A focus on rapid prototyping and productivity for a small team is exactly what most startups need, and Ruby/Rails is a great fit for that. It's not going anywhere, and it's certainly not going to die.
And lots of people (myself included) still love Ruby.
And I finally released a potentially useful gem for medium to large Ruby/Rails codebases. Are unmitigated monkeypatches complexifying your codebase to the point of pain? I wrote a gem to help manage that...
1) I, too, feel that Ruby is no longer as fashionable as it used to be. I do not think this to be much of a problem and more like the natural way fashions work. But I still think the effect can be observed. It was not long ago that I learned about a cool new project written in Ruby here on HN on a weekly basis. These days, it has become a rare occurence.
2) It is a fact that the "cool kids" have moved on. But there is not the one big new thing. Rather, people who were popular in the Ruby world 5 years ago use Scala, Clojure, Node.js, Go and a few other things these days.
3) Still, Rails seems to be very popular with startups. Maybe not with the ones that are highly technical. But many of those just trying to get a mvp out there seem to default to rails these days.
4) I love Ruby. I used to love learning new programming languages. But ever since writing Ruby code on a daily basis, other languages most often fail to attract me. And I no longer look at technical benefits. Instead I take a look at the syntax and most often I am annoyed. Ruby has this effect on _some_ people, but not on others. For those who do not care about Ruby's aesthetics, there is probably little to keep them from trying out other languages.
5) There is little in the list of features on x.rubini.us that I disagree with. But at the same time, there is nothing I ever missed. Also, I am not convinced that all of those issues can or should be solved on the interpreter level.
6) Instead of a list of features, I would love to see a list of the kinds of applications that would benefit from those. I am not convinced that Node.js-style network services should be the future of Ruby.
Ruby is not my favorite language anymore, but I still use it and see evidence that there is a huge place it fills in the dev community and ecosystem. I have never used a more expressive language. I'm stating this as a fact from what I have experienced, and I'm giving points that back it up. There are dozens of actively maintained Ruby projects, some of which are the most popular repos on GitHub. I don't see any evidence that the Ruby ecosystem is on a downward trend of activity and is "dying", so I have no reason to think otherwise.
This kind of stuff reminds me why I take breaks from HackerNews every once in a while -_- Yuck.
This post is so confusing. I see some half thought out ideas, but no solutions.
Ruby may not be Java or JavaScript, but why would you want it to be? You have Java and JavaScript for times when you want to use Java or JavaScript.
Use the right tool for the job.
First, some people (not all) are using other tools than Ruby. They are looking for a solution to their problems. IMHO Ruby is not even present in the discussion when people make their choices. But Rails is. So I'm not sure that modernizing Ruby is sufficient. Building a modern framework around it could be though. I mean, people go to NodeJS because of Node, not because of Javascript...
I was about to mention this. I know of at least two (very) hot S13 YC companies that either built their web app in Rails or explicitly deal with Rails (not sure if One Month Rails is built in Rails or not, but it is pretty explicitly pro-Rails). Does Rails prevalence preclude Ruby from being a dying language? Depends on what you mean by dying. The dominance of Rails is probably something of a blessing and a curse for the broader Ruby world. I'm too new to it to have a strong position, but I will say that as a novice developer, I went with Ruby and Rails because there is a fantastic suite of tools for learning from scratch.
I've used Ruby for a few years as a part-time coder. In that time I've never ventured out to try the variety of Ruby interpreters available. For instance, I've heard of JRuby, and I have also heard it's really fast, but it just seems like it's intended for "enterprise" use-cases, rather than my day to day scenarios.
If there are all these faster Ruby interpreter variants out there, one 'evangelism' approach could simply be to make them more visible and approachable to end-users.
There's also opportunities for package maintainers to work to make these alternatives available in the various Linux/Unix distributions. I want to be able to apt-get them, rather than hunt down a PPA or build via RVM.
Is there anything else beyond speed that is holding Ruby back from greater mindshare?
The most interesting critique of Ruby I've heard recently was from Tom Stuart @ Ruby Manor this year:
http://lanyrd.com/2013/ruby-manor/scffpd/
In this talk he demonstrated how the multi-paradigm nature of Ruby makes it hard to fully realize the benefits of a single paradigm like FP or OOP.
This is obviously not something that CTOs are bringing up in tech provisioning discussions, but I think it does prevent ruby from having the kind of strengths that would make it a go-to language for certain types of projects the way that Go, Scala, Node.js or Haskell are able to do these days. I think Ruby's biggest appeal is to programmers who care a great deal about aesthetics and expressiveness of code.
* No static type checking, potentially resulting in more bugs * Ease of monkey-patching, potentially resulting in insecurities * Rampant use of hash-as-arguments, resulting in method definitions that don't actually define their arguments (though Ruby 2.0 fixes this with named parameters, it's still a common pattern) * Heavy use of symbols, which some people see as the moral equivalent of magic strings
I personally think all of these arguments are bunk except for the over-use of hash-as-arguments even in Ruby 2.0. But some people give them credence.
well that was argument awhile back. nowadays with products like Helicon Zoo (which i use for development), it make integrating a rails (or php, python, cfml) site with IIS a breeze. seriously, if you're using IIS and want to run a rails site, you should have looked at Helicon Zoo.
The way it's written has caused everyone here to debate whether or not Ruby is dying and completely ignore the announcement. I'm sure the title of the HN link isn't helping either.
Interestingly enough, event-loop non-blocking, etc is NEVER the reason mentioned by the devs interested in it and using it. They only mention how nice it is to have basically the same language in the frontend and backend. They claim not having your brain switch like that is a huge benefit (which I could believe, but I haven't tried. (Python+Django+Flask dev myself))
To be relevant today, a programming language must provide simple yet powerful facilities for composition and collaboration. A language does not need general immutable state, purely pure functions, or complex type systems, no matter how inferred.
Is this a poke at Haskell?Its saying that a language doesn't have to be Haskell to be relevant. If that's what you consider a "poke", then sure.
I like everything I read there except undefined. I have been using Lua for a while now and having only two falsy values is great. I am not convinced adding a third is a good trade-off.
[1]: http://www.codinghorror.com/blog/2013/03/why-ruby.html [2]: http://www.discourse.org/
I installed it last week and trying it out with Rails 4 to see how it feels. Ruby is alive and well. And mainstream.
I have seen absolutely no evidence that Ruby is dying or even ill.
This article provides absolutely no evidence but just makes a completely unsubstantiated claim.
Saying startups aren't bragging that they are using Ruby as proof that it is dead is pretty dumb. Sure Ruby isn't the hot new thing anymore, it's not as "cool" as it used to be and the people who always want to be trying the latest languages aren't experimenting with it and writing blogs about it. But it's very much alive and kicking, just much more mature and less sexy. Which is inevitable.
One big problem is that for most businesses their first and perhaps last taste of Ruby comes from Rails, and it's security fails. That is a shame.
Having been burnt by the failed promises of Rails ourselves, our company moved onto Python, and never looked back.
Also, Ruby is just one tool in the kit, fine for some jobs, patently unsuitable for many others. The evangelists should realise this, and not do a disservice to Ruby by trying to shove it into every place and frankly pissing off potential future adopters of that technology.