TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Rails has won: The Elephant in the Room

316 点作者 mjbellantoni将近 9 年前

25 条评论

putzdown将近 9 年前
This article is a superb example of bad writing, of bad thinking. I have no skin in the Ruby&#x2F;Rails game. I&#x27;m not a web developer. But I&#x27;m interested in the fates of languages and the merits of major approaches that define many jobs and decide the employability of millions, so I read it. The problem is: what in the world is he saying? What is his thesis, and what reason does he give us for believing his thesis? His opening section summarizes as: &quot;I started to read a rant. It made me mad so I wrote a rant. Then I read the whole thing and felt better, so I wrote this.&quot; Okay, now try to summarize the second section. Something about Rails and Basecamp. Wordpress. Apple crushed Adobe. Finally: &quot;Then there is the issue that Ruby&#x27;s future is now tightly coupled with Rails.&quot; What issue? What is the point of all this? Sorry, OP, this is bad writing. It&#x27;s bad thinking. It&#x27;s saying &quot;stuff&quot; without knowing why.<p>My advice: if you have skin in this game and need to make real decisions about what platform&#x2F;language you use, find an article that reasons soundly about what the questions are and convinces you of its answers. Don&#x27;t listen to this one. And if this quality of thinking is diagnostic of how Ruby&#x2F;Rails developers think generally... well I&#x27;m glad that&#x27;s a game my skin is safe from.
评论 #11761603 未加载
评论 #11761816 未加载
评论 #11761900 未加载
评论 #11763711 未加载
评论 #11761664 未加载
评论 #11762900 未加载
评论 #11770256 未加载
bascule将近 9 年前
I&#x27;ve been using Rails for a decade now, across many jobs, and one thing I&#x27;ve experienced fairly consistently is the worst Ruby web apps I have ever dealt with are the ones that <i>weren&#x27;t</i> written in Rails.<p>I&#x27;ve both seen and spent a lot of time rewriting overgrown Sinatra monstrosities with assorted non-AR ORMs. These apps were generally riddled with XSS since they didn&#x27;t handle escaping correctly, often had unmaintainable code that sometimes was thousands of lines long crammed into a single file, and lacking any sort of basic structuring principles mixed parameter handling with business logic all over the place.<p>I&#x27;ve seen several attempts to &quot;build a better Rails&quot; that&#x27;s &quot;more OO&quot;, but even frameworks that solve the problems I&#x27;ve just described in the previous paragraph have one huge drawback: Rails is a lingua franca for web development in Ruby, and whatever incremental gains you get from having a better framework are heavily outweighed by the costs of making people learn a new framework-per-project, the lack of features and documentation, and the lack of the library ecosystem that surrounds Rails.<p>At points I&#x27;ve tried to keep three ORMs&#x2F;DB libraries in my head at a time: AR, DataMapper, and Sequel, which just left me wishing I was dealing with AR (the devil you know...)<p>ORMs need massive feature sets to jam the proverbial square peg of relational databases through the round hole of objects, and AR is the only one I&#x27;ve used that&#x27;s both expressive enough to cover all the cases I&#x27;m interested in and mature enough to even have a story around database concurrency, even if most Rails developers are getting database concurrency wrong with AR (e.g. <a href="http:&#x2F;&#x2F;www.bailis.org&#x2F;papers&#x2F;feral-sigmod2015.pdf" rel="nofollow">http:&#x2F;&#x2F;www.bailis.org&#x2F;papers&#x2F;feral-sigmod2015.pdf</a> ) At least AR has <i>any</i> story around things like optimistic and pessimistic locking and lets you build apps where you can read an object and persist your changes without silently clobbering another requests&#x27;s database writes with your locally cached copy of stale data.<p>tl;dr: if you want to do web development but dislike Rails, your best bet is probably to switch to a different programming language than Ruby.
评论 #11762051 未加载
评论 #11762908 未加载
评论 #11759238 未加载
评论 #11759594 未加载
评论 #11759969 未加载
braythwayt将近 9 年前
I recall a lot of articles like this about J2EE. And then a lot like this about MSFT technologies.<p>There was an essay pg wrote where he said that Microsoft was Dead (<a href="http:&#x2F;&#x2F;www.paulgraham.com&#x2F;microsoft.html" rel="nofollow">http:&#x2F;&#x2F;www.paulgraham.com&#x2F;microsoft.html</a>). He didn’t mean dead as in “Dead,&quot; he meant dead as in “Nobody is afraid of them any more,” and the generalization of that is that it was no longer relevant.<p>I think Rails is there. I think Rails is dead. Obviously, not dead as in dead, but dead as in, it is no longer revolutionizing anything. It is no longer making new things possible. People no longer adopt it and discover a productivity dividend they didn’t expect. It no longer swings business decisions (“How can we get this done in three months? What about using Rails? Let’s try it.”)<p>I think that’s fine. I can quote “A new perspective is worth 80 points of IQ.” I don’t think that’s true of Rails today, but then again, I don’t think that’s what people want from Rails. If people want 80 points of IQ, they’re off looking at Elixir and Phoenix.<p>Likewise, I can say that “A language that doesn’t change the way you think about programming isn’t worth learning,” but who is learning Ruby and Rails in order to change the way they think about programming? They’re trying to bang out CRUD apps, and they don’t want to think about programming, that’s why they value a stable community with widely adopted “best practices.”<p>When you have a stable, mature language and framework, you spend more time thinking about your business and less time thinking about programming.<p>And thus, Rails (and sorry, but Ruby too) is not for people who want 80 points of IQ or to change the way they think about programming. And thus, in the sense of being influential, in the sense of disrupting anything or changing anything Rails is dead.<p>It has matured. It is mainstream. It is plumbing, it is concrete, it is rebar, it is infrastructure. Necessary and useful. But not something you want to spend a lot of time thinking about, just something you use if it suits your purposes.
评论 #11764059 未加载
评论 #11761744 未加载
评论 #11761605 未加载
holografix将近 9 年前
Ruby was the number 1 reason why about 6 years ago, fresh out of uni with a Java&#x2F;C background, I chose to learn Python and Django.<p>Ruby seemed rather useless outside of Rails and I really, <i></i>really<i></i> liked what I saw in the Zen of Python.<p>Ie. less magic, explicit &gt; implicit. Etc.
评论 #11760149 未加载
评论 #11761020 未加载
评论 #11760163 未加载
评论 #11773795 未加载
rosalinekarr将近 9 年前
Rails isn&#x27;t the fastest or the smartest framework. It has weird choices, confusing aspects and some downright terrible defaults, but for me at least, it is the <i>best</i> framework and it has been for years for one simple reason: DOCUMENTATION!<p>Every few years or so, a bunch of these articles come out shouting from the roof tops, &quot;Rails is dead!&quot; and &quot;Long live Rails!&quot; They often like to praise some new framework, like Hanami, as the answer to all our woes, but they never seem to address documentation.<p>In my opinion, documentation is where Rails blows every other framework away. I have never been forced to read Rails&#x27; source code to understand how something works (I have read some of the source, but for fun, not out of need), and I can&#x27;t say that about any of the other framework I&#x27;ve worked with. There&#x27;s always some obscure method or class somewhere in them that does something unintuitive that I always have to look up. In Rails, finding the documentation on that method is as simple as a Google search, but in django, expressjs, or any of the others I&#x27;ve encountered, that documentation usually doesn&#x27;t even exist at all.<p>Efficiency, scalability and reliability are all great, but when I&#x27;m starting a web app from scratch, they&#x27;re really not that important. I can worry about those things once I have funding. In the meantime, I only need them to be good enough, and Rails defaults are usually good enough.<p>What I really need when I&#x27;m starting a new project and I&#x27;m working on a shoestring budget, is speed. I need to build something fast so I can get funded. Once I&#x27;m funded, then I can think about implementing JRuby or splitting code out into microservices or rewriting with another framework, but by then, I&#x27;ll have the money to take my time. Until then, Rails is the perfect framework for me and I&#x27;ll keep using it until it&#x27;s not.
评论 #11761250 未加载
评论 #11761341 未加载
评论 #11761592 未加载
izietto将近 9 年前
Periodically raise up such articles à la &quot;Rails is dead, long live the Rails&quot;. Rails has won in the past because it was so more pragmatic than its alternatives, and in the end better designed, and still wins now because it is more mature than its recent better designed competitors (Phoenix, Hanami, ..), and its community is so a big speed up now.<p>&gt; People think that because something is &quot;technically superior&quot; everybody else should blindly adopt. But this is not how the market works.<p>This is really the citation describing the web development of the last 10-15 years. No surprise it comes from DHH.
Bahamut将近 9 年前
&quot;But I would never, ever, begin a new business that depends solely on Angular to survive. Why? Because Google doesn&#x27;t need it. It didn&#x27;t blink to give up GWT, it didn&#x27;t have to think twice to decide to rewrite Angular 2 in an incompatible way to Angular 1, and so on.&quot;<p>This is just wrong - almost 3&#x2F;4 of Google&#x27;s web apps depend on Angular from what I have heard from multiple Googlers. If a rare instance where an Angular release failure occurs, it shuts down Google&#x27;s development process dramatically &amp; costs millions in productivity.<p>That rewrite is aimed at making Angular vastly improved - that doesn&#x27;t equate to giving up on Angular, that is a poor analogy. In fact, Google decided to start investing vastly more resources into the Angular team, rapidly hiring and growing the team into a proper one, as opposed to it being a pet project of the Adwords team. In the next year or two, that ambition will bear much more fruit as mindshare grows with the realization of the technical problems solved &amp; improved upon by ng2 - if React doesn&#x27;t gear up to evolve, we&#x27;ll probably see either a lot of defection to Angular, or a competitor that disagrees with the complexity that Angular introduces appearing to swallow React, just as React has done the same to grab disenchanted Backbone&#x2F;Angular&#x2F;etc. users.<p>Otherwise, the article does a good job explaining a lot of things, but it is very defeatist, as if it is futile to try to improve upon things. I can&#x27;t say I agree with that sentiment, it goes against the heart of research&#x2F;trailblazing&#x2F;experimentation&#x2F;etc.<p>It also makes some weak assertions, such as &quot;One rarely benefits from big bang rewrites from scratch.&quot;, which is a generality being applied to every single situation, a fallacy. Confusing commonly accepted wisdom in development with an overextension of their meaning can lead to bad conclusions, as well as bad decision making.
评论 #11759148 未加载
评论 #11759466 未加载
aswanson将近 9 年前
I never thought I&#x27;d hear myself say this, but the ASP.NET MVC&#x2F;IDE is a better ecosystem than Rails now. No more missing bundle x, install devkit x,....just install visual studio 15 and get to work.
评论 #11761051 未加载
评论 #11761230 未加载
fieryeagle将近 9 年前
I suppose this is how you gain fame these days, writing sensational counter-arguments instead of coding? Oh right, the author is a &#x27;Ruby Activist&#x27;, he couldn&#x27;t help it. PHP has won, Node has won and now yet another language up to debate? Having something with its own niche and cult doesn&#x27;t mean anything if it&#x27;s not suitable for work. It does help populate shortcut-seeking approaches such as Heroku and more CRUD apps than ever before so Rails has its places.<p>Here&#x27;s a piece to deflate any ego issues <a href="http:&#x2F;&#x2F;www.paulgraham.com&#x2F;identity.html" rel="nofollow">http:&#x2F;&#x2F;www.paulgraham.com&#x2F;identity.html</a>.
评论 #11759273 未加载
评论 #11759141 未加载
tariqali34将近 9 年前
&gt; Experienced people often forget the learning curve when they were themselves beginners, and at that time Rails was so attractive, so sexy. Remember that feeling? Of accomplishment in the face of the knowledge that some nice witch left super useful black magic behind?<p>As one of those beginner programmers who had graduated from a development bootcamp, I fell in love with Sinatra much more than I did with Rails. Part of that love may be due to our curriculum...we have to master Sinatra first before you can start learning Rails. But I also liked the finer control that Sinatra provided to me. I suppose you can translate this to the current buzzword jargon of &quot;hating Rails&#x27; magic&quot;, but writing out simple authentication using Bcrypt is just as much an accomplishment as using the Devise library.<p>But your bigger point still remains intact. Passion should take a backseat towards choosing the right tool for the job. If you need Wordpress, use Wordpress. If you need Rails, use Rails. And so on and so forth. I may not like a certain tool...in fact, I may hate it, but I should still go ahead and use it anyway. You&#x27;re here to complete a job. And you should make sure you do it well.
评论 #11758767 未加载
评论 #11759019 未加载
评论 #11759702 未加载
grandalf将近 9 年前
Rails was most influential in Rails v1 and v2, and after that it pretty much stagnated. In spite of that, millions of dollars have been spent upgrading Rails apps through subsequent versions, millions spent on developer training, etc.<p>Sinatra picked up the REST torch from Rails (and from Camping) and sparked a significant change in how web apps are built and a cultural shift from monolithic frameworks to micro-frameworks.<p>Node and Flask picked up from there, and gathered steam because both the Python and Node dependency management systems are less broken than Rubygems, allowing more practical use of smaller, orthogonal modules.<p>Now Elm and React are focused on improving the reliability and reducing the incidental complexity of web applications.<p>Aside from the occasional PR stunt rant from 37 Signals, Rails does not really have a thought leadership role in the development community anymore, aside from a loyal following of career rails programmers, who likely adopted Rails after v3 and would have been just as happy with nearly any monolithic framework and authoritative pundit.<p>None of this is good or bad. Who knows what the future has in store. Rails pre v3 inspired a lot of the thinking that came after, but has not really embraced any of the ideas that emerged subsequently.<p>I think the best analogy is Windows. It&#x27;s a cash cow, it&#x27;s not going to change quickly, and many people consider it the only sensible tool for the job.
kinkdr将近 9 年前
Nice read. I understand the sentiment but I find the &quot;win declaration&quot; a bit too weird.<p>How can one say &quot;Rails won&quot;? It&#x27;s not like people will stop making web frameworks. Like any other software it will eventually be made obsolete by something newer and better.<p>Maybe I am just nitpicking.
评论 #11759010 未加载
评论 #11758949 未加载
评论 #11759206 未加载
bdcravens将近 9 年前
These days, I&#x27;m finding a lot of joy in taking parts of a Rails app that feel clunky (meaning they usually aren&#x27;t Basecamp-like, and I find myself using a lot of magic and config to make it fit a Rails-shaped hole), extracting it out as a stand-alone Sinatra app that uses Sequel instead of ActiveRecord, gemifying it, and then pulling it back into the parent monolith as an engine.
评论 #11760800 未加载
tboyd47将近 9 年前
&gt; The most important change of all: 2010 saw the advent of the Walled Garden App Store, commercially available native applications for smartphone and tablets. Forget web development: mobile was getting it all.<p>This is the real elephant in the room. Everyone is looking for the &quot;next Rails.&quot; There will be no &quot;next Rails&quot; because the web is not what it was when Rails came out. It&#x27;s not &quot;dead&quot; or &quot;dying,&quot; but it is just not the same.<p>&gt; Experienced people often forget the learning curve when they were themselves beginners, and at that time Rails was so attractive, so sexy.<p>I always like to say Rails is for those kids who used to read the players&#x27; guides and instruction manuals for video games first, so they know all the secret moves and bonus areas before they even start playing.<p>Some people prefer the challenge and power of discovering and designing things on their own, and they are never going to enjoy Rails because they&#x27;ll be too caught up negotiating with themselves about how they would have done it.
jaequery将近 9 年前
If we are talking about frameworks, I believe Padrino is a much better designed framework than Rails. It doesn&#x27;t have any magic of Rails and architected in a very elegant way. I just can&#x27;t tolerate ActiveRecord, so Padrino having Sequel support out of the box was definitely an important step in going away from Rails. Also being built on top of Sinatra, it is also much lighter and faster than Rails, another huge reason to switch.<p>Yes Rails wins the popularity contest, but it doesn&#x27;t mean it&#x27;s the best thing for Ruby.
websitescenes将近 9 年前
I&#x27;d agree that the initial approach of Rails is becoming dated but Rails is quickly moving away from this. Consider Rails 5. Native web sockets and an API mode make Rails an excellent backend for JS apps. You fail to recognize the evolution of the framework and where it continues to fit in today. If you&#x27;re done with Rails it&#x27;s probably because you failed to evolve with the framework.
mcguire将近 9 年前
&quot;<i>Basecamp-like apps are not too difficult to make, at least in terms of architecture. You don&#x27;t need fancy super performant languages with super duper highly concurrent and parallel primitives. Also a reality is that 80% of the web applications are Basecamp-like (disclosure: my feelings for years of experience in consulting).</i>&quot;<p>Someone once wrote something like, &quot;An engineer is a person who can do for $1.50 what any damn fool can do for $5.00.&quot;<p>I admit I don&#x27;t actually have much experience with Rails itself; we had a couple of Rails apps that, after a couple of months of painful deployment and uptime teething, we moved to JRuby running on the same architecture as the rest of our apps. Then, after a couple of years of deferred maintenance and no updates (and a long list of security vulnerabilities) we rewrote them as plain, no framework, no ORM, Java and Javascript.<p>But this quote rubs me the wrong way. Building small to medium web apps is what we do. A lot. We ought to be able to build them cheaply and quickly. But we also ought to be able to build them to be efficient and to not waste resources unnecessarily.<p>In my experience, Rails succeeded because it&#x27;s easy to go from nothing to a demoable proof of concept. And the Rails environment succeeded because it&#x27;s possible to teach someone up from nothing to building a pretty application in six weeks.<p>So why are we still fascinated with a tool that makes something easy that wasn&#x27;t hard to begin with? That makes the first 10% trivial while leaving the other 90% alone, if not making it harder? That is optimized for the wrong thing?<p><i>And</i> it soaks up resources like crazy?
pcarolan将近 9 年前
Watching the Google IO keynote, I couldn&#x27;t help noticing that their new instant apps could be accomplished in open webtools if they would have focused on browser integrations rather than native apps. I hope this doesn&#x27;t mean native apps are shutting the door on the original idea of pure webapps ( remember that iPhone 1 keynote? ). I think it would take a major new platform doing exclusive html5&#x2F;css3&#x2F;js first and only to shift the paradigm. Then, follow that up with mobile browser improvements to make payments, contacts, hardware integrations better and we&#x27;d be on our way. Anyone know of a good app that is web only? Unfortunately, I think as native apps continue to dominate, there will be less incentive to build out mobile browser integration with open web platforms.
jrbapna将近 9 年前
As a rails &#x2F; startup guy, I can run circles around developers who are using Node&#x2F;Angular&#x2F;React&#x2F;etc. The huge open source community with the infinite number of gems and massive volume of documentation accumulated over years is unparalleled. Sure, Rails may eventually be eclipsed but I see no reason to switch now when my immediate goal is to ship fast with intense speed and fast iteration while focusing on the much more pressing business validation and business objectives of my company. Just my two cents on the topic.
ninjakeyboard将近 9 年前
Where there is a need for dynamic languages, Ruby can be a good fit. For example, Ruby is used in devops world where there is a bit of a split between Ruby and Python. It&#x27;s very short sighted to think that Ruby has no future.
vonklaus将近 9 年前
I haven&#x27;t used rails in about 3 years (when I first started programming) and I only built 1 application which was a super shitty weekend instagram clone that didn&#x27;t really work well. I didn&#x27;t want to use rails anymore because it didn&#x27;t feel like programming and nodeJS was getting hot.<p>The thing is, I knew fuck all about programming then and now, I have the luxury of knowing <i>very slightly</i> less than fuck all. Which gives me the perspective that this article has, rails is pretty fucking awesome for building a crud application that uses a relational datastore. The author indicated ~80%.<p>Wordpress is also something I swore off when I was learning because it straight up wasn&#x27;t programming. I installed wordpress on a server for the first time last week to setup a blog. I browsed a few thousand themes, it took me a while to find a theme for <i>a blog</i>. The <i>just a blogging platform</i> is actually more ironic now, than it ever was.<p>So, I agree with the author the design patterns shape the community and then the community shapes the design patterns. You can pretty much build any type of app with any language if you are motivated and talented, however, from my observation, the following languages seem to give you the highest leverage in the domains the community has evolved them for:<p>PHP&#x2F;Wordpress: Blogging sites &amp; CMS building.<p>Node&#x2F;JS: Applications and APIs typically with a noSQL database.<p>Ruby&#x2F;Rails: Building CRUD apps with relational datastores.<p>Python: Data intensive applications &amp; programming.<p>erlang&#x2F;elixir: Never used this, but seems ideal for highly scalable concurrent architecture and highly scalable process choreography.<p>So in essence, I agree with the author. I would love to switch from node to Rails as I like the framework aspect where you can just get productive super quick. I also see rails as going away, so I wouldn&#x27;t make the time investment. I think learning node was the right thing to do ~3 years ago, but I wish I spent another 6 months using rails and got really comfortable with it first.<p>&gt; This is not serious programming&#x2F;you aren&#x27;t a serious programmer<p>fairplay. I am a jr. web developer, explaining my conception of some frameworks&#x2F;communities&#x2F;languages, so I agree with you that I am not a particularly talented programmer (it isn&#x27;t my core skillset) and I am not solving hard problems in this arena(as I don&#x27;t conetend that I am). I disagree that I claimed any of the above was my definition of serious programming. Of the hard problems I will work on&#x2F;what I think needs to be solved, I have spoken of at length elsewhere.
评论 #11759539 未加载
评论 #11759040 未加载
评论 #11759015 未加载
评论 #11759132 未加载
glasz将近 9 年前
&gt; Rails can now be considered a &quot;problem&quot; for the very same reasons that made it popular in the first place. And this is bound to happen to any technology.<p>so, we won&#x27;t be jobless anytime soon.
singularity2001将近 9 年前
Why can&#x27;t ruby? <a href="http:&#x2F;&#x2F;poignant.guide&#x2F;book&#x2F;chapter-7.html" rel="nofollow">http:&#x2F;&#x2F;poignant.guide&#x2F;book&#x2F;chapter-7.html</a>
jeffehobbs将近 9 年前
There’s a lot of personification and anthropomorphism of technology in this piece that distracts. Use the best tool for the job.
评论 #11768952 未加载
评论 #11760162 未加载
EpicEng将近 9 年前
I&#x27;m sure I&#x27;m going to get piled on here, but whatever. I don&#x27;t understand why those who spend most of their time writing web apps &#x2F; CRUD apps focus so much on the tools they use to do it. &quot;This framework&#x27;s the best!&quot; &quot;No, this one is obviously better!&quot; &quot;My design pattern is better than your design pattern!&quot;<p>I don&#x27;t know, maybe I&#x27;m a 32 year old curmudgeon, but I just don&#x27;t see this in my area. I work at a lower level; robotics, image processing&#x2F;analysis, and general systems level stuff. We worry about what technologies we use for a given task as far as it impacts our design goals, i.e., &quot;which technology is best suited for the job&quot; (and there are more options nowadays than there used to be). Our customers couldn&#x27;t care less about how we got there as long as the final product kicks ass.<p>Once we arrive at a conclusion we move on and spend the remaining 99% of development solving actual problems. Hard problems. Often times unsolved problems. Our number one priority is reliability and accuracy (ok, that&#x27;s two priorities). Whether or not we used e.g. C++ or Python to do it is irrelevant. What matters is that <i>we built a system which works as it is supposed to and was engineered correctly.</i><p>I don&#x27;t understand this &#x27;programming for programming&#x27;s sake&#x27; mentality. At the end of the day these are just tools, not an end goal. Help me to understand.
评论 #11759204 未加载
评论 #11759580 未加载
评论 #11759389 未加载
评论 #11760040 未加载
评论 #11759547 未加载
评论 #11759205 未加载
评论 #11759552 未加载
评论 #11759191 未加载
评论 #11759661 未加载
评论 #11759769 未加载
评论 #11759237 未加载
评论 #11759436 未加载
评论 #11759280 未加载
评论 #11760640 未加载
评论 #11759198 未加载