RailsConf 2014

Looking Backward: Ten Years on Rails

Looking Backward: Ten Years on Rails

by Luke Francl

In the talk titled "Looking Backward: Ten Years on Rails", Luke Francl reflects on the profound impact of Ruby on Rails (Rails) on web development over the past decade. He draws a parallel between his experience as a programmer in 2004 and the advancements in technology and methodologies by 2014. Francl compares web development practices between these two years, emphasizing the improvements in development environments, frameworks, and community support.

Key points discussed include:

  • Initial Skepticism: Francl recounts his early skepticism regarding Rails, coming from a Java and Python background before eventually embracing the framework, similar to the protagonist in Edward Bellamy's novel "Looking Backward".

  • Web Development in 2004: He paints a clear picture of the limitations faced by developers in 2004, such as slow development cycles with technologies like Java and the difficulty of creating dynamic web applications without modern frameworks.

  • The Rise of Rails: Francl discusses the features of Rails that distinguished it from other programming frameworks, such as simplicity in building web applications, live reloading, an integrated development console, and the Active Record pattern for database interactions. He highlights how Rails became popular not just for its functionality, but also due to effective community promotion and the packaging of best practices into a single framework.

  • Impact on Modern Development: By 2014, Francl notes dramatic shifts in web development practices, including the rise of AJAX, the importance of front-end development, and the accessibility of cloud hosting services. He underscores how Rails adapted over time to these changes while maintaining its core strengths.

  • Future Challenges: Francl expresses concerns about Rails facing challenges in a rapidly evolving technological landscape, particularly with the rise of front-end frameworks and mobile apps that communicate primarily through APIs. However, he remains optimistic about Rails' ability to adapt to these new paradigms.

Conclusions: Francl concludes that while Rails has a lasting legacy due to its community and the lessons it imparted about simplicity and usability, the framework must continue to evolve to remain relevant. He emphasizes the importance of community engagement and the responsibility developers have to share their tools and knowledge to improve the broader programming environment. This talk is a celebration of Rails' journey and an encouragement for developers to foster simplicity and ease in their own work.

00:00:23.199 Good afternoon! I'd like to get started if I think everybody's ready.
00:00:28.840 Thank you for joining me this afternoon. I'm excited to be here and appreciate you choosing this talk.
00:00:34.160 It has been ten years since the first public release of Rails, which is a great opportunity to look back and reflect on its journey.
00:00:40.640 We can consider where Rails has come from, where it might be heading, and what the future holds for us.
00:00:47.280 I've been thinking a lot about the early days of Rails recently because the company I work for, Swiftype, makes site search software. I use my own website for testing.
00:00:58.480 I index my site and perform searches on it, often searching for 'Rails' since I lack creativity and need to test something.
00:01:10.400 In doing this, I found some old blog posts I wrote in early 2005 when I first discovered Rails, and it was fascinating to read my past thoughts.
00:01:23.280 Back then, I was working as a Java developer and had a keen interest in Python. Rails, however, was neither of those languages.
00:01:29.680 I was quite skeptical of Rails; though I was impressed, I wasn't sure it was worth learning Ruby.
00:01:42.880 I thought I would wait and see if the Python community could catch up, but that never really happened.
00:01:55.439 After a few months of waiting, I dove into Rails and began learning Ruby so I could use it.
00:02:08.239 That fall, I heard about a new group starting in my hometown—the Ruby Users of Minnesota. I attended the first meeting, where there were twelve people excitedly talking about Ruby and Rails.
00:02:21.040 At that moment, I became a part of the Ruby community and have not looked back since.
00:02:26.640 I have now been working with Rails professionally for about eight years.
00:02:31.680 This experience reminded me of a book I once read called 'Looking Backward' by Edward Bellamy.
00:02:36.959 The book, written in the late 1800s, is about a rich upper-class man who is hypnotized and falls asleep for over a hundred years.
00:02:42.959 When he wakes up, he finds that everything has changed—America is now a socialist utopia.
00:02:48.319 He was quite comfortable before with his wealth and servants, but now everyone is equal. This new order makes him skeptical.
00:03:01.040 However, as he learns about the new way of living, he becomes convinced that it is indeed a better way.
00:03:12.560 This situation made me think of my own experience, where I was once skeptical of Rails but eventually became a believer.
00:03:24.560 Today, I'd like to discuss what a programmer from 2004 would think if they could time travel to our web development utopia of 2014.
00:03:36.159 I want to look back at web development in 2004, jump forward to today, and finally consider what the future holds for Rails.
00:03:49.680 Let's start by talking about what web development was like in 2004.
00:04:02.400 To set the stage, I see a lot of Macbooks here today, but there were no Macbooks back then.
00:04:08.959 In 2004, the top-of-the-line Apple laptop was the Power Mac G4. Apple's presence in the web development community was not what it is today.
00:04:28.560 I used Linux at work and Windows at home. The hottest phone was the Motorola Razr, demonstrating just how different things were back then.
00:04:54.560 I was working as a Java developer, thrilled to be in a hot language shortly after graduation during a tough job market. My work involved using raw Java servlets and hand-coded JDBC queries, making web development quite painful.
00:05:26.960 At that time, Java's web development cycle was slow, with an edit-compile-deploy-debug loop that required restarts of our app server, which added considerable wait times.
00:05:40.080 Writing raw servlets felt like using a raw CGI library—very low-level. Java's verbosity made it cumbersome to work with compared to more agile scripting languages.
00:06:04.720 I had to edit my servlet, write XML configuration files for mapping, compile everything, and restart the app server, which made the whole process frustratingly long.
00:06:30.240 JavaServer Pages (JSP) added to the complexity. When errors occurred, the unhelpful stack traces made debugging nearly impossible.
00:06:50.080 The cumbersome nature of Java web development in 2004 was challenging. However, during that time, there were signs that a better approach was on the horizon.
00:07:08.880 Early innovations like Microsoft's Outlook Web App introduced the power of the web as a platform, paving the way for AJAX without requiring browser plugins.
00:07:36.399 In 2004, I was looking for something better, inspired by the book 'The Pragmatic Programmer' by Dave Thomas and Andy Hunt.
00:07:57.680 The book emphasized the importance of scripting languages for small tasks, which made me seek out a better programming solution.
00:08:21.760 In the early 2000s, I explored various books on scripting languages at bookstores. I was left disappointed with Perl and intrigued by Python.
00:08:31.680 But when I saw Ruby, it didn't look appealing to me at first, and so I committed to becoming a Python programmer.
00:08:43.760 Over time, I found myself writing useful Python scripts for various tasks, but deep down, I yearned to create web applications.
00:09:01.040 But every time I tried to conceptualize a web app using Python, I was frustrated with the lack of straightforward frameworks at the time.
00:09:25.440 But little did I know that something better was on the way.
00:09:38.960 Let's explore 2014 and consider what a programmer from 2004 would think about today's work environment.
00:09:51.760 If we could transport someone from that era to now, they would be amazed at how far we've come—it truly is a great time to be a programmer.
00:10:06.240 Today, everyone carries a powerful computer in their pocket, far superior to the desktops of 2004.
00:10:17.600 It includes a better web browser too. In 2004, AJAX was still in its infancy; the term hadn’t even been coined.
00:10:32.799 Now, rich AJAX frameworks come as standard with every web application framework, enabling us to build interactive applications much more easily.
00:11:09.360 The power of web browsers has increased immeasurably, and deployment has become significantly easier.
00:11:20.880 In 2004, figuring out how to host your app was a challenge—colocation was costly, and shared hosting options like Dreamhost had serious limitations.
00:11:43.200 In contrast, today you can spin up a server with just a click, allowing for self-management through platforms like EC2 or services like Heroku.
00:12:05.760 This shift is advantageous for programmers, meaning you don’t have to be both a great programmer and a systems administrator to launch an application.
00:12:14.800 Moreover, we have access to a multitude of web service APIs, making it easy to extend application functionality with just a simple HTTP request.
00:12:32.880 This includes everything from search capabilities, provided by companies like mine, to payments via Stripe and telephony through Twilio.
00:12:58.080 The best part is that we now use JSON instead of XML, eliminating the cumbersome XML setups of the early 2000s.
00:13:15.840 Now, turning to Rails: what would a programmer from 2004 think of Ruby on Rails?
00:13:26.640 If you could tell someone from that time that, in ten years, Ruby on Rails would be the best way to create web apps, they might be shocked.
00:13:45.280 In 2004, the Ruby community was quite marginal; when David first demoed Rails at RubyConf, there may have been only 60 people present.
00:14:01.839 Today, dozens of conferences occur worldwide, and thousands of professionals thrive using Ruby and Rails.
00:14:14.560 The features of Rails played a crucial role in its success, particularly compared to my experiences with Java.
00:14:32.640 With Rails, live reloading was a game changer. In Java, the long cycles made the process tedious.
00:14:47.360 In Rails, you could modify a model, a view, or even the database schema, refresh your browser, and see changes instantly.
00:15:01.520 When there was an error in the view, you could easily identify the line of code that caused it, unlike the massive stack traces in Java.
00:15:13.120 The development console in Rails was another major productivity boost. You could type a command to access your entire codebase.
00:15:27.200 This feature allowed me to explore APIs practically, something I struggled to achieve in the Java environment.
00:15:45.760 Rails also came with distinct environments—development, production, and test—allowing for separate databases and configurations, adding to software engineering discipline.
00:16:05.440 Finally, active record and migrations stood out. Active record intuitively understood database fields without writing SQL.
00:16:20.320 Migrations allowed seamless transition states, vastly superior to manually written SQL statements tied to application versions.
00:16:36.880 But why did Rails stand out? It wasn't just its features but how well they were integrated and accessible.
00:16:54.400 Rails offered a complete package, unifying what was possible and making it easy for developers to adopt best practices seamlessly.
00:17:08.560 The triumph of hype also played a significant role in Rails' success. Early blog posts about Rails stirred excitement in the Java and Python communities.
00:17:26.080 David himself promoted Rails relentlessly, participating in discussions, arguments, and blogging about its potential.
00:17:42.800 The Rails community was highly enthusiastic in sharing their love for the framework, which is crucial for adoption.
00:17:54.080 Lastly, the triumph of community contributed to Rails' success. Early crafting of plugins enabled users to extend functionality.
00:18:08.720 This made Rails an attractive choice, knowing you could build commonly needed features without starting from scratch.
00:18:22.800 Ultimately, Rails flourished. However, what lies ahead? Rails faces challenges as the web continues to evolve.
00:18:36.720 The future of the web is uncertain, especially as browsers become more powerful, and developers increasingly create front-end heavy applications.
00:18:49.760 For these projects, the traditional Rails approach of generating HTML might not be necessary.
00:19:01.360 When building entirely in JavaScript, the need for Rails could be questioned, leading developers to consider alternatives like Node.js.
00:19:14.560 Similarly, with the rise of mobile apps offering richer user interactions, there may be hesitation to rely on Rails for web applications.
00:19:28.720 Nevertheless, it’s crucial to remember that Rails is excellent at managing API requests; in fact, our company serves millions monthly using Rails.
00:19:43.680 Rails allows you to pick the parts you need, making it an adaptable tool for many types of applications.
00:19:56.960 Also, even in an API-focused world, backend management consoles will continue to be essential.
00:20:07.120 Most applications need some administrative interface—this is an area where Rails still excels.
00:20:22.080 Moreover, even if some changes in the web landscape challenge Rails, its legacy will persist.
00:20:35.520 The principles of simplifying processes, making complex tasks manageable, have inspired many, regardless of programming languages.
00:20:49.760 Many developers will seek to incorporate these lessons into future projects.
00:21:16.480 The reaction against Rails also plays a role in its legacy, as frameworks like Django emerged around the same time.
00:21:30.720 Django was not directly inspired by Rails but shares many similarities and has had a significant impact.
00:21:46.080 While Rails promotes convention over configuration, Django adheres to a philosophy of explicitness, fostering clarity.
00:22:01.760 Teaching Rails can sometimes be challenging because of its conventions, which may confuse newcomers.
00:22:20.080 The second noteworthy reaction against Rails has been the rise of micro-frameworks, like Sinatra.
00:22:36.160 Sinatra's simplicity allows developers to embed functionality with minimal code, representing a beautiful approach to web applications.
00:22:52.560 However, when projects grow, developers often find themselves pulling in Rails features, experiencing its full power.
00:23:09.360 Many popular languages have embraced the micro-framework trend, yet transitioning to a robust framework like Rails may not be an option.
00:23:20.480 Despite this, Rails has the potential to adapt and evolve, just as it did after introducing REST.
00:23:37.760 I believe that Rails will adjust to meet the needs of modern applications, whether for JavaScript or mobile.
00:23:54.720 We've examined programming in 2004, discussed the winning features of Rails, and considered the possible future. Reflecting on Edward Bellamy's impactful work, we see parallels in programming. While Bellamy's utopia challenged norms, DHH's frustration led him to build a transformative tool. We're here today thanks to the Rails community and its evolutionary journey, a testament to how programming can refashion our realities. Though most of us might not create the next great framework, we can embrace Rails’ lessons and strive to simplify and communicate effectively in our own endeavors. Thank you.
00:34:03.360 Thank you!