at a World Wide Web Consortium (W3C) workshop in June 2004, focusing on developing technologies that are backwards compatible with existing browsers including an initial draft specification of Web Forms 2.0. The workshop concluded with a vote, 8 for, 14 against, for continuing work on HTML
got the bright idea to abstract the browser. Instead of writing HTML and CSS, these frameworks had you write your entire UI in JavaScript. Needless to say, this sucked! People were trying to emulate a Flash-like developer experience, but as DHH said yesterday, that experience
that little story is that JavaScript people in 2013 love HTML. The strand of thinking that led to totally abstracting the DOM has lost and browser JavaScript today looks nothing like that straw
place than it was when Rails was created, and even when I was working full-time on Rails 3, but we're still looking at things through the cynical lenses of that era. It has never been a better time to be a web IE no longer rules the
the most exciting innovations are happening not on the server, but on the client. In the right hands, these tools can be used to build amazing experiences on the web, and your users are demanding them.
need a lot of JavaScript. Rails is great for apps that leverage browser templates. Think about what % of your app involves generating views vs. other business logic.
wrong with this. BaseCamp is a great application that feels good to use. It just shows that pretty much everyone who builds great experiences uses a bucket of JavaScript
as a craft to constantly hone and improve. Ruby libraries and frameworks help us develop a way of thinking about our Ruby code that we, as a community can hone. This craftsmanship approach is one of the things I love about the Ruby community. We're always improving the state of the art, and letting the lessons of the real world inform both our own code, but also the code we share as a community.
JavaScript behind "sprinkling", you end up building ad hoc solutions for each new problem that comes Rails was great because it looked at a whole bunch of problems that people were solving in ad hoc ways and gave structure and sanity to it. It gave us a clear way to think about new features and eliminated a lot of the mental overhead of solving the same problems over
Signals aren't idiots. They spent a lot of time looking at JavaScript-based solution a few years ago, mostly based on Backbone and similar home- grown solutions.
ethos as Rails, that eliminated a lot of the drudgery, but these things take time. When 37 Signals was evaluating the JS space, Ember (and Angular) were in their infancy. They weren't yet ready to adopt unless you were willing to help build the framework. In the short term, adopting Ember in 2011 wouldn't have provided advantages for BaseCamp over the approach they used.
of Rubyists bought into the hype in 2012, but things weren't ready. Imagine someone writing off Rails because they tried Sinatra and didn't think it really solved any problems they couldn't solve easily in PHP.
Ember, and it took us a couple years to get to a complete and conventional solution for building web applications. But Ember is still immature compared to Rails, and you're familiar with it. So why use Ember when you can "just use Rails"
application that's extremely interactive (i.e. not document-based). I spent the last few months working on Skylight, which allows you to interactively select requests in your application and have a trace update in real-time. Everyone agrees this is an For what it's worth, the lessons of Rails, like convention over configuration, absolutely do apply in JavaScript-land, but like in Rails, they really do need to be extracted from real world applications. This is why it has taken a few years to get to a nice place with Ember.
a data interchange format and using JavaScript to render it usable on the client. This is simply not a small delta on top of what you're used to, and actually involves more JavaScript than the alternatives that embrace the reality of what's
you're doing (sending data down the wire and reconstituting it via JS), you can get back your dynamic templates! (of course, templates in modern frameworks also do the work of keeping these templates up to date)
your users will love, you will need to write a lot of JavaScript; nobody disputes that. The only question is whether you will do everything you can to fight against it, and end up with a giant ball of spaghetti...