Live data from Hacker News

Today I accept that Rails is yesterday’s software

medium.com

41–50 of 166 posts

Re: Today I accept that Rails is yesterday’s software

#41
A couple of things seem off on this perspective, mostly that modern web development has gotten weird, irrespective of Rails.

"The ambiguous, english-like syntax of ruby that makes rails so easy, is exactly why it’s not simple."

First, I found Rails simple and easy, but it has become more complex over time as it has grown to support a variety of uses. The simplicity is not just because of Ruby, which is a low ceremony language, but rather because of the simple structure of the application, with a clear separation of concerns, very easy to find where a particular code item went.

"The meta-programming and object injection that makes it easy to install 1,000 gems into your project without a single line of configuration, is exactly why it’s hard to debug. "

Dependency oriented development is a real problem, but it is insane to blame that on Ruby. I was working with an enterprise Java team last year that had over 1000 .jars in their build. It doesn't necessarily make it hard to debug, but it does mean you have understand a wide variety of different libraries. People are willing to load a library for the simplest of functions (as the leftpad npm case showed). Again, nothing to do with Rails or Ruby in particular.

"The magic of active record, the crazy levels of duck typing and the expressiveness of ruby, are exactly why it runs poorly even on your development box." This is highly dubious- it's very fast on my dev box. The Ruby interpreter keeps getting better, even taking lessons from V8, and you can compile to JRuby if you think that interpreted runtimes aren't ever going to keep up.

"It’s why you have to build a caching strategy in as a requirement from first line of code." This seems like a good strategy regardless, and caching is nicely handled in Rails.

"Competitors to Rails seemed subject to the same problem — basing themselves on interpreted, slow languages that favoured ‘easy to learn’ over ‘easy to maintain’." As opposed to compiled, fast languages like C++ that are hard to learn and hard to maintain? If anything, duck typing makes maintenance lot easier in some cases, where you can add in new types which support existing behavior, without making changes throughout the dependency tree. Even some 8 year old Rails apps we have are quite maintainable. JavaScript code does have a tendency towards messiness, as there are such a variety of schemes for organizing code, but it keeps getting better.

"I should be spending time writing code, not debugging a haystack of mutable, dependency-wired mess." This is your choice! I think it's nice to have toolsets that give people the ability to assemble things quickly, but no one is forcing you to use a gem to do something.

"Swift, Rust, Go, and the rest of tomorrow’s languages, can you marry modern thinking, build a community with simple as a core design goal, and save web development from itself?" This seems like barking up the wrong tree. The thing making web development complex is largely the complexity of the front end. You can turn your back-end application into a separate API and isolate this problem. At some point, these become browser capabilities, and the polyfill approach has promise. (http://bitworking.org/news/2014/05/zero_framework_manifesto)

In reality none of the stuff mentioned in this article is really a shortcoming of Rails as compared to anything else. The biggest change is the move away from the basic nature of REST-ful, URL driven applications. Single page apps are a lot more like desktop applications. Many applications are looking for web sockets. These changes to the basic structure of what a web application is are much more of a challenge to Rails than the Ruby language itself.

Re: Today I accept that Rails is yesterday’s software

#42

The question is where do you go from here if you're a Rails shop? The last place I worked had 80% of their products running Rails 2 and 20% of them running on Rails 3. No product was ever both completed AND caught traction since. Do you stick with Rails 5 for the next project? Do you meander over to Python or Node?

Where from Rails? Anywhere looks better - personally, our firm uses falcon on python and lightweight Go web services with native std libs, and it works very well.

Re: Today I accept that Rails is yesterday’s software

#43
post #11

Earlier quoted context omitted.

> The problem comes when you rely on adding packages that just talk directly to your framework (like Django middleware). Once you do that a few times, you really don't know what's going on between a web request hitting your server, and your own code running I think this is where the lack of strict typing can make things harder to figure out. Especially if you're trying to understand middleware functions with opaque s…

But is that really a problem of non-strict typing, or rather a problem of metaprogramming? I could imagine even a very strongly typed system in Haskell or Scala would probably be hard for an IDE to support if it uses a lot of complex abstractions to create internal DSLs (like Rails and I guess Django as well do).

I can't speak for Rails, but at least with Python (primarily Flask) it's not internal DSLs that have caused me problems. I don't think Flask attempts to be a DSL at all, actually. From what little I've seen of Django it isn't trying to be a DSL either (unless I'm misunderstanding that term). It's more when I have 2 or 3 Flask libraries or middleware and they each are documented as if they exist in a vacuum but I want to use them all together and I wish it was easier to see that all 3 have functions that take a Flask Blueprint object, so they're probably all related, or that these functions work with URL objects, etc...

It's a general complaint about Python and the tooling I suppose, not specific to web application frameworks.

Re: Today I accept that Rails is yesterday’s software

#44
post #15

Earlier quoted context omitted.

Doesn't the author end by saying Swift, Rust and Go are "tomorrow's languages"?

Yet he gives absolutely no justification for why those are "tomorrows languages". You don't use third party libraries or frameworks in any of those languages? Personally I design my Django code to be as simple as possible. I use third party libraries, and don't see too many of the problems he talks about.

Probably because the author doesn't use them and thus has no idea of what their problems are, so they seem "perfect" from a distance.

Re: Today I accept that Rails is yesterday’s software

#45
post #8

While it's true that Rails is sinking under the weight of its own cleverness, and is clearly the old hotness, this has nothing to do with Ruby the language. Rails' problems are its own, and Ruby's limitations and problem domain are well known. This is a terrible blog post by someone without much perspective. I award it no stars.

The author of the post at no point blames Ruby for Rails' failings... But also I'd contest your argument that they're unrelated. Ruby is what enables the too-clever metaprog that make Rails stack traces so opaque. Also Rails has almost certainly been the single largest drive of Ruby's growth and popularity - observe the significant overlap of core contributors to both projects.

Re: Today I accept that Rails is yesterday’s software

#46

Earlier quoted context omitted.

>> 3) Programmers relying on large numbers of dependencies (e.g. ruby gems) So many gems are either not written well, or not maintained well. How many times have you seen the case where you update gem to fix a bug, and then cause two more? It's not Rails or Ruby's fault, it's the community.

Ruby's got a lot of software that's been produced over the years, and one of the risks here is that people burn out on projects and move on. A slow accumulation of dangerous deadwood occurs over time and unless people work to clear the brush it can be catastrophic when problems strike. Consider: ImageMagick and OpenSSL. Newer platforms haven't had this problem because they've already broken all their old software (Ru…

Ruby gems in particular host a lot of abandonware and basically little turds that entice "I read pragprog, watch screencasts, and am now leet Rails dev!" Folks into using them with the promise of easy Lego style coding. It never ends well.

Re: Today I accept that Rails is yesterday’s software

#47

I am thinking about completely stopping reading Hacker News. I enjoy the community a lot but every time I am learning something new I read about how its old and shitty and will cause hair loss when you try and invest any time in it. It puts the breaks on actually learning with the distraction of going and trying to find that new ambiguous stack that the author is hinting at.

Perhaps you might consider completely stopping reading Medium posts. Much of what is wrong with HN is the fact that people here think Medium gives them instant credibility. (To be more specific, I object with how professionally-done Medium posts look, in contrast with their content, which often seem amateurish at best.)

That is the other conclusion I came too. The click bate title of it is enough to cause issues though. There is a consensus on this website though that Rails is good enough for ideas I want to get out there so I will stick with learning it, so far it has been fun.

Re: Today I accept that Rails is yesterday’s software

#49

I am thinking about completely stopping reading Hacker News. I enjoy the community a lot but every time I am learning something new I read about how its old and shitty and will cause hair loss when you try and invest any time in it. It puts the breaks on actually learning with the distraction of going and trying to find that new ambiguous stack that the author is hinting at.

Rails has a bright future ahead despite what this article states.

Consider for a moment that most projects just need to figure out product-market fit before we know where to throw the money to scale. Rails remains to this day the tool I go to for building web applications because it's so well suited for building something quickly. Sure the effort to make it scale is present but I see any scaling effort as big regardless of framework or language.

Re: Today I accept that Rails is yesterday’s software

#50
post #25

Just use Java people. You can bootstrap a Spring project in 10 minutes and it will have every feature (ORM, security, caching, MVC) available with just a maven dependency or you can roll your own and it will work fine. Strong typing, good performance, sensible stack traces (if you don't overdo annotations) and all the testing and monitoring tools you could ever dream of.

And namespaces like com.me.mine.whatever.toolong.to.type, and checked exceptions, and Oracle.
Post reply on HN