4 ms·
This is pretty amazing. Its also something that while I'm not surprised, I'm curious (if anyone from Shopify wants to weigh in that'd be even more cool) that th
by no_wizard 4y ago
This is pretty amazing. Its also something that while I'm not surprised, I'm curious (if anyone from Shopify wants to weigh in that'd be even more cool) that they aren't taking the approach that I've seen other large Ruby based enterprises take, which is moving critical functionality to a more complimentary stack, such as Go or Elixir for speed improvements. Is really investing more into Ruby in this fashion better than the alternative?
EDIT: I posit the last question as well..a real question. In another words, I guess we'll find out how this goes! I don't know what the "right" answer is. I'm more interested in the trade offs they evaluated on this front, or if its such that 500K is just a "hail mary see what happens" situation
- skinnymuch 4y agoNot sure about what’s best from a pure corporate financial perspective. It is really nice for one of the likely upcoming tech behemoths to still be pushing Ruby like Shopify is doing and has been doing.
- giraffe_lady 4y agoThose might be complementary but they are still other languages. They have completely different semantics, performance characteristics, deployment stories, etc that will need to be learned, developed and supported internally. It seems like they like ruby and appreciate what it allows them to do. There's no particular reason to think that the strengths they value in ruby will be present in those or any other languages either. They mentioned metaprogramming for example and it truly does feel easy and powerful in ruby in a way that I've only felt in certain lisps otherwise. Presumably they're heavily invested in certain techniques and powers, have earned and maintain internal expertise in them and find them valuable. Moving the critical functionality into a language where they'd be giving up that hard-earned expertise is a bold move. It may be the standard move, but imo it's pretty radical and a fairly significant gamble. If you're pushing the limits of a language that otherwise works very well for you, expanding those limits does seem wise, even the conservative choice.
- ilrwbwrkhv 4y agoMetaprogramming, yes but also pure objects. Ruby has that Smalltalk heritage in a way no other language has. Also the fact that it focuses on developer happiness makes it a way more pleasant language to use compared to say Golang or Rust.
- pjmlp 4y agoOther than SELF, Objective-C, Dylan or Common Lisp.
- specialp 4y agoI have been working with Ruby for over a decade and IMO most metaprogramming is the worst part of Ruby code. It makes code very difficult to reason about outside of runtime and makes unclear traces when something does go wrong. Now I know it can be done right, but I think the Ruby community ran too much with DRY (Don't Repeat Yourself) and "clean" minimal syntax at the cost of maintainability and readability. It also makes it hard for tools to reason about what is being run as well when you have stuff running in `instance_eval` contexts and `method_missing` being abused. So now here we are trying to unravel that by trying to make the interpreter smarter with caching to improve performance but if I had to turn back time, I would reverse every instance where one tried to be clever with metaprogramming in the name of syntax.
- giraffe_lady 4y agoYeah I kinda knew I'd regret mentioning any specific feature of ruby that one in particular. Anyway it doesn't matter. The point was that they presumably have identified certain things ruby does well for them and have invested heavily in them. If ruby does other things less well then abandoning ship for an unknown set of tradeoffs is a riskier move than improving the specific weaknesses that are their obstacles. What ruby's inherent strengths are or even if they exist at all doesn't matter as much as their investment and expertise in them does.
- jimbokun 4y ago> They have completely different semantics, performance characteristics Many times it is the different semantics that allow for better performance. If you can add new methods or change their implementation at runtime, performance optimizations get a lot trickier, for example. The immutability that's foundational to Elixir and Erlang enable the incredible scaling capabilities of the Erlang VM.
- tomhallett 4y agoI wonder if there is a fear of talent drain if management starts signalling that there's a "better" language being brought in for the "critical" things.
- pizza234 4y ago> I'm more interested in the trade offs they evaluated on this front, or if its such that 500K is just a "hail mary see what happens" situation It's actually much more than 500K. I think they have at least 6 very senior devs working on it¹. I think 3 million $ per year is a very conservative estimation. That said, it's definitely very mysterious what their analysis was. ¹=https://shopify.engineering/porting-yjit-ruby-compiler-to-rust https://shopify.engineering/porting-yjit-ruby-compiler-to-ru...