TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Today I accept that Rails is yesterday’s software

197 pointsby zimbu668about 9 years ago

39 comments

calcsamabout 9 years ago
Being &quot;yesterday&#x27;s software&quot; is a necessary step. It&#x27;s the final part of the Gartner hype cycle: maturity.<p><a href="https:&#x2F;&#x2F;speakerdeck.com&#x2F;tehviking&#x2F;surviving-the-framework-hype-cycle" rel="nofollow">https:&#x2F;&#x2F;speakerdeck.com&#x2F;tehviking&#x2F;surviving-the-framework-hy...</a>
评论 #11662105 未加载
评论 #11661786 未加载
评论 #11662277 未加载
评论 #11662157 未加载
评论 #11661911 未加载
评论 #11661572 未加载
rahimnathwaniabout 9 years ago
The article seems to be lamenting three things:<p>1) Batteries-included web frameworks (like Rails and Django)<p>2) Interpreted languages without strict typing (like Ruby and Python)<p>3) Programmers relying on large numbers of dependencies (e.g. ruby gems), and the resulting difficulty in reasoning about the software<p>The last paragraph then goes on to suggest that different languages are required. This seems wrong. If you want to write web software you can reason about, you can still use web frameworks (maybe Flask or Sinatra) and you can still use third party packages (gems or things from pypi).<p>If you import a library (left pad or whatever) and call it from your code, then you can still reason about what&#x27;s going on. 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&#x27;t know what&#x27;s going on between a web request hitting your server, and your own code running.
评论 #11661554 未加载
评论 #11661708 未加载
评论 #11661700 未加载
评论 #11662052 未加载
评论 #11662799 未加载
icpmacdoabout 9 years ago
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.
评论 #11661854 未加载
评论 #11661777 未加载
评论 #11661744 未加载
评论 #11661755 未加载
评论 #11662865 未加载
评论 #11694177 未加载
评论 #11666227 未加载
评论 #11661665 未加载
评论 #11662149 未加载
mooredsabout 9 years ago
So, Rails has warts. What system that is used to build real world software doesn&#x27;t? I&#x27;ve built systems in a number of languages and frameworks and they all had warts and issues.<p>How much research has the author done to find other solutions? The plea at the end seemed very lazywebish to me. Or maybe ghost of Christmas Future-esque?
btillyabout 9 years ago
The problem comes from this.<p>1. The costs of any layer of abstraction and magic that we have internalized seem free to us. So we feel free to add a more marginal one.<p>2. We have little visibility into any layer of the stack above or below ours.<p>3. As people migrate between languages, they take what they did previously and recreate it. Only &quot;better&quot;.<p>As a result, complexity grows over time. And programmers are really bad at noticing&#x2F;correcting it. And when they try, they will come up with different prescriptions. Often opposing ones. Explicit is good. (Go.) Don&#x27;t let people mutate state. (Functional languages.) Convention over configuration. (Rails.) Move work from programmers to IDEs and tooling. (Java.) Make programmers productive so more gets done with less code. (Most scripting languages from Perl on.)<p>Over my lifetime, I&#x27;ve watched the resulting slide into complexity. Reading up on history I recognize that it had been going on for decades before I learned how to program. And it shows every sign of continuing to accelerate going forward.
tootieabout 9 years ago
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&#x27;t overdo annotations) and all the testing and monitoring tools you could ever dream of.
评论 #11662062 未加载
评论 #11661875 未加载
评论 #11662550 未加载
mmlabout 9 years ago
While it&#x27;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.<p>Rails&#x27; problems are its own, and Ruby&#x27;s limitations and problem domain are well known.<p>This is a terrible blog post by someone without much perspective. I award it no stars.
评论 #11661829 未加载
tunesmithabout 9 years ago
I&#x27;ve been doing enterprise backend development (java&#x2F;spring, scala, akka) for a while and occasionally miss the practice of sitting down and creating a fullstack app myself, which I used to do with php and crappy html. But then I sit down and try to work with existing Ruby&#x2F;Rails codebases and hit a mental block.<p>I guess example #1 is method_missing. I get it, it&#x27;s a huge time-saver and lets you do all kinds of cool things like specify a default behavior for an API if someone sends a random command, or, define the behavior of a method dynamically by the name of the phantom method. But then the rest of me is reflexively saying, &quot;Seriously??&quot; And I get that Spring Data does sort of the same thing, but at least there it&#x27;s limited by domain. If I&#x27;m in a Ruby codebase that is taking regular advantage of that, my first instinct would be find calls that eventually go to method_missing, and then just define the damn method somewhere so that my IDE&#x27;s &quot;Find Usage&quot; will work again. How the heck do you explore a codebase quickly if your IDE doesn&#x27;t work?<p>I guess for me it just reinforces the same rules of thumb. Dynamic languages are fine if you&#x27;re prototyping or doing an MVP. But as soon as you find that your codebase is being read&#x2F;maintained more often than it&#x27;s being written (which will happen sooner than you think), or as soon as you start finding weird production runtime bugs that don&#x27;t happen in your local environment, you&#x27;re better off with something strong or static or compiled.<p>As for how to get that safety full-stack these days, I&#x27;m still poking around. Scalajs seems interesting, or Angular2 with Typescript, or something that uses RxJs...
评论 #11662343 未加载
polysaturateabout 9 years ago
I…don’t understand the point of the article? Ok Ruby is duck typed and has a dynamic runtime. It has for…all of the time since it was created. Rails has magic… since…all of the time since it was created.<p>I’m not even defending Ruby or Rails here. Use at your own benefit&#x2F;risk…as with every other programming language and framework.
评论 #11662127 未加载
评论 #11662790 未加载
hghabout 9 years ago
From Stroustrup of C++ fame: There are only two kinds of languages [frameworks]: the ones people complain about and the ones nobody uses.
评论 #11664561 未加载
omarforgotpwdabout 9 years ago
1. The first software wave was system level software. Developers wanted something but made their lives easier, but also wanted control and speed. C and then Java were the stars<p>2. In the second wave, we got languages like Ruby and Python which are flexible and easy for developers to work with. Sometimes it&#x27;s more important to be able to iterate quickly than execute quickly. Server software, app backends, etc were all implemented in whatever language was easiest using HTTP as an interchange with other languages<p>3. In the third wave, developer experience enhancements that scripting languages pioneered trickled down to systems programming with new languages like Swift and Go. These give you most of the benefits of the second wave languages without their significant overhead. Since they are better suited to building small light services, old bulky Ruby &#x2F; Rails app are starting to look antiquated pretty quickly.<p>I also used to go to Rails first for web projects... I use Go now because it&#x27;s more lightweight. I used to do native apps in Objective-C... I now use Swift because it&#x27;s easier to write.
hardwaresoftonabout 9 years ago
For those that are feeling fatigued from working with and around the magic of Rails, Sinatra is a great choice (in python land Django has an alternative called Flask).<p><a href="http:&#x2F;&#x2F;www.sinatrarb.com&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.sinatrarb.com&#x2F;</a><p>That said, you will have to re-implement machinery that rails gave you for free. If you&#x27;re building a simple API, there will be obvious simplicity benefits. If you&#x27;re trying to build a server-side rendered web application, you may long for some things that rails provided (of course, you can use libraries and create simpler patterns than rails provided).<p>Note that going the sinatra+libs (or any &quot;micro&quot; framework for that matter) route places a higher burden on the development team when it comes to documentation. If you implement a scheme for server side templating&#x2F;rendering outside of what is provided, you will be in a world of pain in a relatively short time if you do not maintain good documentation.
评论 #11662059 未加载
draw_downabout 9 years ago
Everyone who uses software older than your preferred framework is an out-of-touch fuddy duddy, and everyone who uses software newer than your preferred framework is a clueless hipster.
cplanasabout 9 years ago
I agree with some of the issues that the author points in Rails; but, at the same time, he is unable to name what is &quot;today&#x27;s software&quot; using his words. Until then, I will stay with Rails. Until then.<p>Moreover, the author seems to be imagining Rails as a huge monolithic piece of software. That does not need to be true.
评论 #11661512 未加载
aaronwiddabout 9 years ago
It&#x27;s not Rails. Web software development in general has simply plateaued across the board.<p>We&#x27;re out of new frontiers to innovate around and the work from now on is about playing custodian to the innovations of the past.<p>Unless something spectacularly interesting comes along, the priorities of the web are now all about supporting what&#x27;s already been built. Either by maintaining something hastily built and cracking at the seams with patches and fresh coats of paint - or replacing it with something more stable for the long haul. Rails was designed around rapid innovation, not the long haul. So it&#x27;s in maintenance mode.
评论 #11662858 未加载
评论 #11662358 未加载
gsmethellsabout 9 years ago
Know your dependencies well. Keep them few and far between -- and well vetted.
lmmabout 9 years ago
I&#x27;ve been using Scala for 5+ years now, so for me it&#x27;s definitely today&#x27;s software. Spray for REST backends, Wicket for HTML UIs. Clean syntax that can be as expressive as Python or Ruby, but coupled to a type system more powerful and effective than any of Swift, Rust or Go, light enough that you can lift things that had to be &quot;magic&quot; (like database-session-in-view) right up there into the type system.
zippergzabout 9 years ago
Honest question. What technology are people enjoying on the server-side with sites built in React or Angular? I&#x27;ve seen some of these done with Rails, and some done with Node, neither of which I personally enjoy a whole lot. (Note, I&#x27;m not making an argument that either are BAD - just that I don&#x27;t really like working with them). I&#x27;m curious to hear what other people are having success with in production.
评论 #11661888 未加载
评论 #11661917 未加载
评论 #11662183 未加载
评论 #11662753 未加载
评论 #11662287 未加载
评论 #11662495 未加载
评论 #11661945 未加载
spriggan3about 9 years ago
&gt; 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?<p>Go is great for plumbing, you can get network utilities up and running pretty fast with no dependencies so it&#x27;s easy to deploy, that&#x27;s its niche. Now try writing a complex eCommerce website, a news site, or any large app backed by a complex data model in Go...<p>I started to use Asp.net CORE on Linux with Postgres the other day and frankly, I don&#x27;t want to hear about Go and its &quot;simple&quot; type system anymore when I can just use C# and do projects in minutes without fighting the language. Go is at at most a safe C with channels (without macros which make it worse than C in term of features).<p>My point is neither Swift,Rust or Go are silver bullets which will fit every use cases in Web Development. Neither is asp.net core,but for my use case there is no debate as to what I should be using.<p>Rust,Go and Swift aren&#x27;t tomorrow languages. They are languages that fit a specific use case like every other language.
tangueabout 9 years ago
I was dubious when I saw the Medium.com tld and a clickbaity title but it actually puts word on what I feel after 16 (ouch) years of web development. The difference was that I was blaming the tools and screaming &quot;#fail&quot; with the other rather than thinking like the author that we&#x27;re in a conceptual dead-end (at least with popular tools).
scolfaxabout 9 years ago
Don&#x27;t blame your tools for an over-engineered project.
MrBraabout 9 years ago
If Rails, as of now, would&#x27;ve been a very fast framework, the post author would have never published such post, despite all the other &quot;defects&quot; he underpins.<p>Rails could eventually get very fast, but it can be frustrating that it&#x27;s not right now!<p>This is the same kind of problem of Ruby not having a proper x-platform GUI toolkit or binary packager: you have such a expressive and powerful language and still you feel you are limited by the lack of speed and tooling.<p>That&#x27;s why, IMO, a Ruby&#x2F;Rails dev frustration can explode in such a strong way at some point.<p>Sadly Ruby isn&#x27;t backed by a big corporation, so you can only wait for the language and frameworks to get more mature.<p>Personally I&#x27;ve dealt with this frustration by learning C#. It allowed me to overcome all the current limits of Ruby, while avoiding the Java ShitFactory. At the same it feels great to get back to Ruby when you want to explore ideas! It&#x27;s still an unbeatable tool for prototyping. Being aware that I have knowledge of another language, makes me feel better, less frustrated, and I browse Ruby weekly news with much less &quot;anxiety&quot; for a revolutionary Ruby improvement (but still I browse it because I know it will happen sooner or later!).<p>I&#x27;m quite sure that the OP after having vented with this post, and having found what for him is a solution, then he will peacefully embrace Ruby or Rails again under a different light (but again, I wouldn&#x27;t be so surprises to see big improvements soon, so maybe it could even be a better light!)
hartatorabout 9 years ago
Rails seems to become bloated for sure, but I think there is not a no brainer alternative out there.<p>When I first switched from PHP to Rails it was a natural choice whereas i don&#x27;t feel Rails to Node.js is in its current state.
评论 #11668561 未加载
tomc1985about 9 years ago
Well, the situations with coffeescript exceptions and exceptions-from-the-depths-of-hell are avoidable (hint: don&#x27;t use coffeescript)... indeed Rails makes it easy but just because crazy amounts of gems are on offer doesn&#x27;t mean one has to use them.<p>Ruby&#x2F;Rails certainly has its quirks, and while Rails certainly does seem to be taking on more and more unnecessary dependencies, some are still plenty productive in day-to-day Rails. A lot of pain avoidance in Rails is following its opinions up-and-until it takes you further than you need to go
cryptosabout 9 years ago
I had similar experience with Grails. Discovering Grails and seeing how fast the first version of the application is up and running was fascinating. But sooner or later almost all generated code has to be replaced. It&#x27;s not bad for the first iterations, but no time save in the long run. But the Grails magic was really awful! It cost so much time to find all the hairy bugs (in my own code or in Grails itself). Finally I stopped using Grails.<p>I perfer static typed languages now (not only because of Grails and Groovy). And I prefer to compose some specialized frameworks. For example JAX-RS (Jersey) is a very good REST framework. There is no need to force the user to use it with a certain ORM (if at all), a certain way to validate objects and so on. Just take what fit&#x27;s best. Java is not the most elegant or productive language but there are other static typed JVM languages like Kotlin or Scala.<p>To come back to the article: I don&#x27;t think that we need new languages, but another way to use existing frameworks and maybe statically typed languages.
elcapitanabout 9 years ago
While I agree with many of the individual points he makes (rails dev myself), I think there is a kind of fundamental issue there that we have seen with most web framework&#x2F;language combinations and will see with future ones, and that is that they usually come to life when one concept or idea they embody the best (for example mvc for crud apps with Rails, frontend&#x2F;backend unification with node, native concurrency with Erlang, puristic http for microservices with Go) is becoming prevalent at some point, and then people put stuff on top of stuff which they put on top of other stuff, and then they realize that the problem they still have to solve is good architecture. And they need to balance that with business needs and developer availability.<p>I don&#x27;t think any of that is going to change by switching to the next fashionable concept to base a web app on.
tankerdudeabout 9 years ago
So my question would be, what&#x27;s the difference between Rails and other frameworks, especially since we are doing RESTful APIs from the start?<p>It would seem to me that Rails is just not the tool to use going forward for writing APIs for websites at scale. There are much better tools out there.<p>Rails&#x27; sweet spot is server side rendered pages that are quick to bring up and to add features. It seems great for certain types of websites so it does have its niche.<p>But moving forward, Rails for API vs. other frameworks in other languages is really a wash in terms of productivity, while other frameworks in those other languages are much more highly performant.
SeanDavabout 9 years ago
So if Ruby and Python frameworks are not suitable web development platforms - what is? The OP gives no alternatives, just a long rant about the problems of web development with dynamic languages.
smrtinsertabout 9 years ago
I&#x27;m always tickled by the mythology that was sold thanks to a macbook and a textmate theme - that creativity is inherent to it, and that it is a pioneers tool, for craftmenship etc.<p>That might all matter if the first thing people did once deploying it was to port off of it. For software that has such a rapid expiration date, none of it selling points matter. You might as well have written it in php or perl.<p>Rails continues to be a favorite joke of mine.
heytsabout 9 years ago
While I hear the argument, I&#x27;m tempted to think that the framework is largely irrelevant and that it actually is the ecosystem (package management and lack of quality control) that is harming platforms at large from Rails to Django to, obviously, node. I was very interested to hear of Elm enforcing Semver at the package manager level and I believe that this is a step in the right direction.
gjvcabout 9 years ago
Web development techniques are crying out for an &quot;emperor&#x27;s new clothes&quot; moment. Approaches like GWT (+ a toolkit such as GXT) seem to be a far saner approach for many enterprise applications. On the other hand, there are large classes of problems for which Rails &#x2F; Django &#x2F; et al have shown good results. Vive la difference!
mnarayan01about 9 years ago
There&#x27;s certainly a lot of truth in this (I especially like the duck-typing image), but the example feels like it throws it all away. You can, after all, have a _super_ fast and simple asset pipeline by keeping things...simple (to say nothing of skipping it entirely); having CoffeeScript compiling to JavaScript is not really relevant to either Ruby or Rails.
bluedinoabout 9 years ago
The question is where do you go from here if you&#x27;re a Rails shop?<p>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.<p>Do you stick with Rails 5 for the next project? Do you meander over to Python or Node?
评论 #11662326 未加载
评论 #11661811 未加载
pbowyerabout 9 years ago
Previously posted at <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=11658356" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=11658356</a>, with great comments
miloshadzicabout 9 years ago
It&#x27;s today&#x27;s software which -- being almost a synonym for enterprise software -- can be a problem for a culture built on it&#x27;s difference from Enterprise Java.
emodendroketabout 9 years ago
Yeah, yeah. Nothing is going to magically solve all your problems; I don&#x27;t necessarily think that means we need to go back to hand-rolling everything.
avitzurelabout 9 years ago
Today I learned that not everything you read on Medium is true and should be considered anecdotal and smart.
mattmcknightabout 9 years ago
A couple of things seem off on this perspective, mostly that modern web development has gotten weird, irrespective of Rails.<p>&quot;The ambiguous, english-like syntax of ruby that makes rails so easy, is exactly why it’s not simple.&quot;<p>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.<p>&quot;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. &quot;<p>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&#x27;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.<p>&quot;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.&quot; This is highly dubious- it&#x27;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&#x27;t ever going to keep up.<p>&quot;It’s why you have to build a caching strategy in as a requirement from first line of code.&quot; This seems like a good strategy regardless, and caching is nicely handled in Rails.<p>&quot;Competitors to Rails seemed subject to the same problem — basing themselves on interpreted, slow languages that favoured ‘easy to learn’ over ‘easy to maintain’.&quot; 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.<p>&quot;I should be spending time writing code, not debugging a haystack of mutable, dependency-wired mess.&quot; This is your choice! I think it&#x27;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.<p>&quot;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?&quot; 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. (<a href="http:&#x2F;&#x2F;bitworking.org&#x2F;news&#x2F;2014&#x2F;05&#x2F;zero_framework_manifesto" rel="nofollow">http:&#x2F;&#x2F;bitworking.org&#x2F;news&#x2F;2014&#x2F;05&#x2F;zero_framework_manifesto</a>)<p>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.
评论 #11665565 未加载
askyourmotherabout 9 years ago
I remember early Rails, around 0.13, pre RC, the community was small the future seemed bright. Little did we know the horrors of what it would turn into. Most of the professional people left when they saw the security circus, the endless holes and design flaws.<p>I learnt then - avoid any web framework which has pragprog pushing a book behind it. The new one to avoid because the masses are already circling around it is &#x27;phoenix&#x27;, and sure enough, pragprog is hawking a book on it.
评论 #11662446 未加载
评论 #11661739 未加载
评论 #11661793 未加载
评论 #11662318 未加载
评论 #11662085 未加载