Rails angst



  • There's a bit of angst going around in Rails community right now.

    It started when this long-standing contributor announced his plans to ditch Rails, and eventually Ruby entirely.

    My time with Rails is up

    Rails ecosystem, especially around its core team, has never made a good impression on me and I don’t have a problem admitting that I’m simply afraid of proposing any changes. This is especially so since the first issue I’d submit would be “Please remove ActiveSupport” (ha-ha…imagine that!).

    For a Rails developer, it’s not a problem that data coming from a web form are being sent to the depths of ActiveRecord where God knows what will happen.

    The really challenging part in this discussion is being able to explain that it is a problem in the first place. People are attracted by Rails because it gives you a false sense of simplicity, whereas what really happens is that complexity is being hidden by convenient interfaces. These interfaces are based on many assumptions about how you’re gonna build and design your application. ActiveRecord is just one, representative example, but Rails is built with that philosophy in mind, every piece of Rails works like that.

    Rails expects a global, mutable run-time environment. To make it even harder for everybody, they introduced Spring. This gem opened up a whole category of potential new bugs that your gems may face while you try to make them work with Rails. I’m so done with this, my friends. Not only is code reloading in Ruby unreliable, but it’s also introducing a lot of completely unnecessary complexity to our gems and applications.

    It goes on like this, a recommended read for sure.

    I'll also add this link:

    Rails has won: The Elephant in the Room

    A sort of melancholy overview of Rails history and future.

    My take on it: the whole Rails paradigm of server side MVC is probably history. If you need a super-quick internal website, it's too fiddly (you're better off with WebForms). If you want a user-facing interface, you'll want a SPA or native app. While it is still a valid choice for user-facing websites, that circle of usability is rapidly shrinking (you're better off with wordpress or static site + api).

    This really sucks for ruby the language enthusiasts. They never really expanded ruby away from this one framework and one use case. Without rails, what the hell are they left with? A dynamic slow language in a world that's shifting back towards strong typing.

    I was correct a few years ago, when I picked python over ruby. I expect to see the ruby ecosystem slowly drain talent and sink into a stale pool of legacy site maintainers.


  • Discourse touched me in a no-no place

    @cartman82 said in Rails angst:

    My take on it: the whole Rails paradigm of server side MVC is probably history. If you need a super-quick internal website, it's too fiddly (you're better off with WebForms). If you want a user-facing interface, you'll want a SPA or native app. While it is still a valid choice for user-facing websites, that circle of usability is rapidly shrinking (you're better off with wordpress or static site + api).

    Part of the problem is that RoR makes it easy to make yourself your own quagmire, where things just suck developer effort in odd ways (Half a day to find a single typo? Thanks Rails!) and where everyone is thinking “I must just be holding it wrong because all these other people are productive using it”. I believe there might be a Beautiful Path, but almost everyone strays from it and ends up tangled in the briars.

    I think I'll stay happily using my old fashioned tools. They might not be as exciting, but they work well in my hands and can even delight me when I use them.


  • :belt_onion:

    @dkf said in Rails angst:

    They might not be as exciting, but they work well in my hands and can even delight me when I use them.

    :giggity:



  • @cartman82 said in Rails angst:

    People are attracted by Rails because it gives you a false sense of simplicity, whereas what really happens is that complexity is being hidden by convenient interfaces.

    Yeah, that's always been my impression of ruby, not just rails. It's always scared me off.


  • sockdevs

    @boomzilla said in Rails angst:

    @cartman82 said in Rails angst:

    People are attracted by Rails because it gives you a false sense of simplicity, whereas what really happens is that complexity is being hidden by convenient interfaces.

    Yeah, that's always been my impression of ruby, not just rails. It's always scared me off.

    this, also the fact that developers like DHH think monkeypatching global objects is an appropriate thing to do.

    that fxxing scares me to be honest, because monkey patching is always order dependent, and what happens when two loaded gems try to make the same patch.... how to they interact?

    and of course i more recently learned that requiring an application restart 4000 times per day is apparently an acceptable thing in DHH's world..... what?! no!


  • Discourse touched me in a no-no place

    @boomzilla said in Rails angst:

    Yeah, that's always been my impression of ruby, not just rails.

    The key point of the first article was that there's not really any point in distinguishing them any more.


  • Discourse touched me in a no-no place

    @accalia said in Rails angst:

    what happens when two loaded gems try to make the same patch.... how to they interact?

    If it's the same patch, that's one thing. But what about when one of the patches is subtly different to the other? :vomit:


  • sockdevs

    @dkf said in Rails angst:

    @accalia said in Rails angst:

    what happens when two loaded gems try to make the same patch.... how to they interact?

    If it's the same patch, that's one thing. But what about when one of the patches is subtly different to the other? :vomit:

    EXACTLY!

    it's fxzxing scary and means that i can literally trust NOTHING about the language or the standard library.

    hell, i can't even be sure that Math.max()* behaves the way i expect it to.

    * or whatever the math library is for ruby.... the language design practices scare me so much i refuse to so much as learn the language.


  • Discourse touched me in a no-no place

    @accalia said in Rails angst:

    hell, i can't even be sure that Math.max() behaves the way i expect it to.

    I wouldn't be surprised if it delivers quotes from the Sam and Max games; after all, everyone's heard of Sum and Max…


  • I survived the hour long Uno hand

    said in Rails angst:

    people are attracted by Rails because it gives you a false sense of simplicity, whereas what really happens is that complexity is being hidden by convenient interfaces.

    MTE on Rails and Cucumber both. It's hideously complex, all tucked away in places you can't get at to fix them if they're broken.



  • There's nothing wrong with complexity being hidden away by convenient interfaces. std::sort<> is a case in point. Well, modulo the "convenient" bit. And although it's not ideal to have usage / design assumptions coded into those interfaces, it's extremely difficult to build complex frameworks without doing that. std::, again, is a case in point.

    The primary problem with rails isn't to do with its design, as such. It's the hipster cunts that use it.


  • Discourse touched me in a no-no place

    @tufty said in Rails angst:

    The primary problem with rails isn't to do with its design, as such. It's the hipster cunts that use it.

    Well, my complaints are about its design and the craptastic hole that we've managed to work ourselves into when using it. It's a sort of black hole (:giggity:) of developer effort. The product/service we're making with it? Cool, but not hipsterish (unless you're really into recording, reporting and archiving of experimental metadata).



  • I stopped using Ruby when some people backported features from Ruby 1.9 to 1.8 because their code didn't run on 1.9. Also the documentation at the time was "read the source". blech



  • @tufty said in Rails angst:

    There's nothing wrong with complexity being hidden away by convenient interfaces. std::sort<> is a case in point.

    std:sort is way, waay, waaaay simpler than something like User.create(params[:user]) from the article.


  • Discourse touched me in a no-no place

    @cartman82 said in Rails angst:

    std:sort is way, waay, waaaay simpler than something like User.create(params[:user]) from the article.

    Not necessarily true. You might have found someone mad enough to make std::sort back-end itself onto a database so that the ordered elements are persisted somehow…



  • @cartman82 said in Rails angst:

    I was correct a few years ago, when I picked python over ruby.

    ... is Python better?


  • Winner of the 2016 Presidential Election

    @cartman82 said in Rails angst:

    I was correct a few years ago, when I picked python over ruby.

    Flask + SQLAlchemy = <3


  • sockdevs

    @blakeyrat said in Rails angst:

    @cartman82 said in Rails angst:

    I was correct a few years ago, when I picked python over ruby.

    ... is Python better?

    Yes. Python has a healty competitive ecosystem, sane develoers working in core and seems to be finally finishing the transition from 2.x to 3.x (a huge language change that had to happen)

    oh and having a python web framework that can't stay running for 4 minutes at a go (1day /4000 restarts) would be laughed out of existance.

    and daring to monkeypatch globals in python would get you shot. out of a canon. into a volcano. while you are on fire.



  • @accalia said in Rails angst:

    oh and having a python web framework that can't stay running for 4 minutes at a go (1day /4000 restarts) would be laughed out of existance.

    So would one in C#. C# also runs about 47,372 times faster, has real threading, has Node.JS-style async/await (but with better syntax), is capable of making MVC apps and APIs, etc etc etc.

    It's only disadvantage is... uh. Hm.


  • sockdevs

    @blakeyrat said in Rails angst:

    So would one in C#.

    yes?

    of course getting a webframework written in C# running on a non windows server is difficult to the point of not being feasible, and the hosting cost for windows servers is rather higher than the hosting cost for equivalent linux servers, so we need web frameworks that are easy to develop, safe, stable, and deployable cross platform..... C# doesn't have that yet.

    i have hopes that roslyn and the new C# open sourcing will fix that, but it hasn't yet.

    and even after it is fixed C# will need a competitor to prevent it having a monopoly. because if it gains a monopoly it will not be good for anyone.



  • @accalia said in Rails angst:

    of course getting a webframework written in C# running on a non windows server is difficult to the point of not being feasible

    You mean like .NET core, the thing that's open source and runs on mac and linux?


  • sockdevs

    @Magus said in Rails angst:

    @accalia said in Rails angst:

    of course getting a webframework written in C# running on a non windows server is difficult to the point of not being feasible

    You mean like .NET core, the thing that's open source and runs on mac and linux?

    okay, so that gets an app running. now how about showing me how to get a webapp interfacing with apache or nginx instead of iis?

    yeah .NET core has potential, but it's not there yet.

    not that ive seen.



  • @accalia That's literally the whole point of it, though: running ASP.NET on linux. They have hardly bothered with anything not related to making that feasible. @lucas1 is using it for that, isn't he?


  • sockdevs

    @Magus huzzah and hallelujah then i can run aspnet on linux (apparently, you still havent shown me)

    now about all those packages that assume you are running on windows and freak out when C:\ isnt' a thing?

    and what about the need for healthy competition to drive continued innovation?



  • @accalia said in Rails angst:

    of course getting a webframework written in C# running on a non windows server is difficult to the point of not being feasible,

    That was bullshit ten years ago when Mono provided the answer, it's double-bullshit today. You know better. You're not that out-of-touch.

    @accalia said in Rails angst:

    and even after it is fixed C# will need a competitor to prevent it having a monopoly.

    I would LOVE for another language (and its associated tooling) to be 1/3rd as good as C#. But...

    @accalia said in Rails angst:

    because if it gains a monopoly it will not be good for anyone.

    Why would being a monopoly make it "not good for anyone"? Need some rational thought here.



  • @accalia said in Rails angst:

    now about all those packages that assume you are running on windows and freak out when C:\ isnt' a thing?

    Name. One.

    I double-dog dare you.



  • @accalia Okay, here's something from a couple months ago:

    @accalia said in Rails angst:

    now about all those packages that assume you are running on windows and freak out when C:\ isnt' a thing?

    Look, if people aren't getting things with relative paths in a web app, they're idiots. People write bad, broken code. That's what this whole site is about.

    @accalia said in Rails angst:

    and what about the need for healthy competition to drive continued innovation?

    Someone should write a good competitor, then. "HUR DUR, DONT WRITE GOOD SOFTWARE UNLESS YOU HAVE COMPETITORS"


  • sockdevs

    @blakeyrat said in Rails angst:

    Name. One.

    yes, i've had to deal with an app that used it, yes it was a total WTF that the webapp had a dependency on that, no it did not work at all on mono, and given it has not had a published release since last i worked on it i assume it does not work on .net core.

    and if you think that that app, for that company, that i no longer work for, is unique..... you are more nieve than you think me to be.



  • @accalia Ok; so a project that specifically says it only works on Win32API doesn't work on Linux. Damning evidence.

    By pedantic dickweed standards, I guess you win.



  • @accalia said in Rails angst:

    and the hosting cost for windows servers is rather higher than the hosting cost for equivalent linux servers

    Not really, unless you use the cheapest. Shittiest hosting. And ROR won't run on those anyway.


  • Discourse touched me in a no-no place

    @swayde said in Rails angst:

    And ROR won't run on those anyway.

    RoR is the current most expensive common stack to host, bar none.


  • sockdevs

    @dkf said in Rails angst:

    @swayde said in Rails angst:

    And ROR won't run on those anyway.

    RoR is the current most expensive common stack to host, bar none.

    and that includes MSFT stacks, and the licensing fees for them, and the support costs for them.



  • @accalia said in Rails angst:

    M$

    Seriously?


  • sockdevs

    @blakeyrat said in Rails angst:

    @accalia said in Rails angst:

    M$

    Seriously?

    it's shorter than typing the word out and everyone knows what it means.

    i'm a busy fox, i'm not typing that long word out every time. would MSFT be better then? would make a nice parallel with APL.....
    okay fine. MSFT it is.


  • Discourse touched me in a no-no place

    @accalia said in Rails angst:

    and that includes M$ stacks, and the licensing fees for them, and the support costs for them.

    Yes, because RoR requires enormously chunkier systems. Licensing fees? Nothing by comparison with the need to reduce the number of virtual machines per physical host.

    The cheapest end of hosting is PHP/Apache. Then you've got the Java stacks, then the C#/VB.NET ones (the licensing costs are what split them), then RoR. Other languages/stacks aren't nearly as widespread.



  • @accalia I had no idea you were a closet slashdotter, but now it all makes sense.


  • sockdevs

    @blakeyrat said in Rails angst:

    slashdotter,

    ICK get that site away from me.

    i may willingly frequent the hive of scum and villany that is What.thedailywtf.com but i have SOME standards.



  • @blakeyrat said in Rails angst:

    I was correct a few years ago, when I picked python over ruby.

    ... is Python better?

    Much better. You can use python skills for all sorts of things, not just a single bloated MVC framework that's sliding into irrelevance.



  • @cartman82 So it's better not because it makes better web apps, but because if you learn it the skills are more transferable? Or am I misunderstanding you?



  • @dkf said in Rails angst:

    Yes, because RoR requires enormously chunkier systems. Licensing fees? Nothing by comparison with the need to reduce the number of virtual machines per physical host.

    The cheapest end of hosting is PHP/Apache. Then you've got the Java stacks, then the C#/VB.NET ones (the licensing costs are what split them), then RoR. Other languages/stacks aren't nearly as widespread.

    With what authority do you make this assessment?

    Personal experience? You have some numbers?


  • sockdevs

    @blakeyrat said in Rails angst:

    So it's better not because it makes better web apps, but because if you learn it the skills are more transferable?

    no it does both.

    Python makes better webapps AND the skills you develop using it are more transferable.

    it's rather like C# in that respect, except without all the foaming at the mouth fanboys.



  • @accalia What's a well-known Python webapp I might have used?


  • sockdevs

    @blakeyrat said in Rails angst:

    @accalia What's a well-known Python webapp I might have used?

    Youtube runs on Python.

    so does Dropbox, surveymonkey, google, quora, reddit, pinterest, theonion, instagram, disqus, spotify, the washington post, firefox, nasa, and bitbucket.



  • @accalia I don't believe anything you sez.

    This post (on Quora gasp!) says YouTube's Java now and has been since 2009: https://www.quora.com/Is-YouTube-still-written-in-PHP


  • sockdevs

    @blakeyrat said in Rails angst:

    I don't believe anything you sez.

    that's your problem, not mine.

    don't trust my googling? get off your lazy bum and do your own.



  • @blakeyrat said in Rails angst:

    @cartman82 So it's better not because it makes better web apps, but because if you learn it the skills are more transferable? Or am I misunderstanding you?

    It's a better career investment, of course.

    Newsflash, MVC web apps aren't that complex. Route request to a controller, dig into a database using ORM, fill in a view model, render html. Rails or Django or Symfony or ASP.MVC, it's all the same shit. You get some different creature comforts here and there, but mostly, all these frameworks get the job done about the same.

    You want "better web apps", focus on the ux and frontend. That's what users actually care about.



  • @cartman82 Nothing's complex until it is.


  • Discourse touched me in a no-no place

    @cartman82 said in Rails angst:

    With what authority do you make this assessment?

    Going by what it takes to set things up on our internal infrastructure for the PHP/Java/RoR comparison, particularly how much we can commit and overcommit the hardware. I believe (but have less evidence for) that IIS/.NET-based systems tend to weigh in similar to Java in terms of overall weight, but I've not talked so much to the people running that side of things.

    With PHP, we can just stuff another site into our basic shared hosting environment. We've got huge numbers of small internal sites there, so much so that it caused a panic when a manager with the absolute hots for outsourcing got some quotes for moving them out and discovered that it would wipe out the IT budget for 5 years or more. :)

    Java takes a fair bit of resources, but it tends to take a static load and doesn't really need the latest of anything. Measure in test, spec out, deploy, job done.

    With Ruby and Rails, you need a lot of memory to scale things up (I'm guessing some issues in cache management are to blame) and you need to run rapidly on the OS upgrade treadmill because out of all those gems you'll be using, there's bound to be a few that keep getting updated to use the latest twiddly feature of something.

    We're not currently seeing a lot of node — that may change — and while we see plenty of Python, that's usually rather specialist uses which can't be compared (e.g., iPython Notebook instances).



  • @accalia , @Magus

    now about all those packages that assume you are running on windows and freak out when C:\ isnt' a thing?

    Most stuff on NuGet works fine with Mono, most projects using MVC5 and above work fine with Mono. Anything that is OWIN works okay. However most applications have a SQL Server backend which I can't just run.

    ASP.NET Core is a mess at the moment because they keep on Changing namespaces etc and major changes to how projects, dependencies are going to be handled.


  • sockdevs

    @lucas1 said in Rails angst:

    ASP.NET Core is a mess at the moment because they keep on Changing namespaces etc and major changes to how projects, dependencies are going to be handled.

    so it isn't ready for prime time like i thought and blakey is just blowing smoke up my arse. but what else is new?


Log in to reply
 

Looks like your connection to What the Daily WTF? was lost, please wait while we try to reconnect.