Talks

The Story of Rails!

The Story of Rails!

by Ratnadeep Deshmane

The video presentation titled 'The Story of Rails!' by Ratnadeep Deshmane, delivered at Birmingham on Rails 2020, explores the evolution and significant aspects of the Ruby on Rails framework, offering insights into its culture, community, and features. Ratnadeep shares his journey as an international speaker and consultant, bringing in anecdotes from his travels across the U.S. while attending various Ruby conferences. The talk is structured around the theme that understanding the 'why' behind Rails can enhance the experience of those starting with Ruby on Rails. Key points discussed in the presentation include:

  • Culture: Ratnadeep emphasizes that Ruby is designed for developer happiness. He highlights how DHH (David Heinemeier Hansson), the creator of Rails, has instilled a philosophy that aims to make programming enjoyable through features that facilitate ease of use and understanding.

  • Community: The Ruby and Rails community is portrayed as a supportive and passionate group. Ratnadeep recalls his initiative, Violet Ruby, where users could share and vote on reasons for loving Ruby, with the overwhelming sentiment acknowledging the warmth of the community.

  • Key Features: Ratnadeep delves into significant features from the framework's history, such as:

    • Bundler: Introduction of Bundler to manage gem dependencies effectively, resolving compatibility issues that developers faced before its inception.
    • Modularity: The merger of Rails with Merb led to a modular design, enabling users to select components they need for their applications.
    • Asset Management: Innovations in handling assets have improved the performance and efficiency of Rails applications.
    • Security: The history of security incidents led to the development of strong parameters, emphasizing the importance of secure coding practices.

Ratnadeep concludes by stressing the importance of knowing the foundational stories and philosophies behind Rails, which enhance understanding and appreciation of the framework. The nostalgic reflection on the Rails journey over the years serves as an inspiration for both newcomers and seasoned developers in the Rails community.

00:00:16 So this is the topic that I'm going to talk about: the story of Rails. I'm Ratnadeep Deshmane on Twitter, and perhaps that will be easy to pronounce as well. I come from Pune, India, which is pretty close to Mumbai.
00:00:36 Moreover, I'm one of the speakers from outside the country. I love traveling and work remotely for a couple of clients as a consultant. Apart from that, I have a passion for mechanical keyboards. If remote travel or mechanical keyboards are among your interests, please find me, and we can have a long discussion.
00:01:06 By the way, the Call for Proposals (CFP) for RubyConf India is open, so please consider attending.
00:01:15 Before I dive into the story of Rails, I want to share a personal experience from my first visit to the U.S. I came here in 2015 for the Madison, Wisconsin, Ruby conference.
00:01:29 During my travel for this conference, my flight was from New York to Madison, Wisconsin. I had to clear customs in New York first. Knowing this, I thought, why not spend some time exploring New York before heading to my conference? So, I called a friend who offered me a place to stay, and I decided to spend a week working remotely before heading to Madison.
00:02:00 While spending two weeks in the U.S., I was quite impressed by several things, especially the cars and automobiles. The museums were also fascinating, showcasing science in a wonderful manner. This made me think that someday, Detroit could be an interesting place to visit, so I made plans to visit my friend in Detroit.
00:02:22 I also spent time in Chicago, where I visited the Museum of Industrial Sciences, which was quite remarkable. After Chicago, I went to Detroit, where I stayed for a week and visited the Ford Museum, which left a lasting impression on me.
00:02:49 Remembering my school textbooks, I reflected on the historical events I had studied, such as the Boston Tea Party. Being so close to Boston, I decided to spend the weekend there. While in Boston, I realized that during my earlier trip to New York, I couldn't visit Washington, D.C., so I planned a week to explore the museums there as well.
00:03:24 Finally, while still in the U.S., I learned about a conference in Austin focused on Ruby programming, which I couldn't miss. I spent time in Austin and later visited San Francisco and San Antonio, where RubyConf was being held.
00:03:54 In total, during my six months in the U.S., I visited about ten different cities, working and experiencing the culture in each one.
00:04:08 Now, focusing on the story of Rails, it's essential for new learners to understand why Rails came to be. Knowing the reasons behind various features, their design philosophy, and how they evolved helps in grasping Rails more easily. It's been over ten years since Rails became significant in India, and its growing complexity can be overwhelming for beginners.
00:04:49 Here, I will share a couple of stories that delve into the Rails framework, hoping these insights will help you understand it better.
00:05:11 Let's start with the culture of Rails. While preparing for this talk, I revisited a manifesto written by DHH (David Heinemeier Hansson), which is available on the official Rails website. It emphasizes that Ruby is designed for developer happiness, and Rails strives to make development enjoyable.
00:05:25 One practical example highlighting this idea is the difference in user experience when quitting interactive consoles in Ruby versus Python. In Ruby, typing 'exit' or 'quit' will terminate the session easily, while Python requires more precision with input. This reflects the Ruby philosophy of making things simple and intuitive.
00:06:18 Another interesting aspect of Rails is illustrated with query method calls. Even in earlier versions like Rails 2.3, using methods like 'find_by' allows for easy querying without explicitly defining methods beforehand. This demonstrates Rails' meta-programming capabilities, making it easier for developers to perform complex queries simply and effectively.
00:07:35 For those who may not know, in Rails, you have access to convenient methods for retrieving elements from an array, such as `array.first`, `array.second`, etc. However, there has been some debate in the community regarding these methods. Some feel they are unnecessary since traditional indexing works fine.
00:08:13 In response to skepticism, DHH introduced the '42' method, returning the 42nd element from an array. This alludes to the significance of the number 42 in popular culture, specifically from 'The Hitchhiker's Guide to the Galaxy.'
00:08:55 The core philosophy of Rails is reflected in its principle of 'least surprise.' The goal is to align with developers' expectations and preferences, ensuring a smoother development experience. Ruby's culture is often likened to humor; if Ruby is a language of expression, Rails is a playful storytelling medium.
00:09:48 Moving on to the aspect of community, the Rails community is vibrant and supportive. Back when I began learning Rails in 2011 and 2012, I created a website called violetruby.com to gather reasons why people loved Ruby. It serves as an extensive collection of testimonials celebrating Ruby's virtues.
00:10:37 One of the standout testimonials, added by Konstantin Hesse, declared, 'Ruby is one of the best open-source communities ever.' It's heartwarming to see community appreciation highlighted across various aspects of Ruby and Rails.
00:11:09 Moving forward, I'd like to discuss some significant features. One of the notable features is 'Bundler.' In earlier versions of Rails, managing plugins and dependencies was cumbersome. With the advent of Bundler, we achieved better dependency management, making it easy to specify gem versions.
00:11:50 Previously, the manual editing of dependencies and compatibility issues posed challenges during installation. Bundler fixed these issues with dependency resolution, ensuring that gem versions are compatible and avoid conflicts. It allows developers to specify dependency requirements clearly.
00:12:42 Moreover, Bundler's introduction enhanced the handling of multiple Ruby versions on a single machine, simplifying the dependence resolution process across applications. The 'Gemfile.lock' ensures that the applications maintain their specified dependencies.
00:14:00 The modularity aspect of Rails also stems from early collaborations with the Merb framework. This collaboration led to features that allow developers to selectively use parts of Rails that fit their applications. It offers the flexibility to omit components not required for specific projects.
00:14:49 Rails 3 became the first version to incorporate Merb's modular design philosophy. The modular framework not only improved usability but also ensured that updates came more seamlessly, thereby fostering ecosystem growth.
00:15:24 Shifting to asset management, the Rails framework revolutionized the way we handled front-end assets, especially with the introduction of the asset pipeline in version 3.1. This made compiling assets faster and manageable.
00:15:54 Security has been a primary concern for Rails developers. In March 2012, a hacker highlighted severe vulnerabilities by showcasing exploit methods to the Rails repository without proper acknowledgment from GitHub. This prompted an urgent need for more robust security features within Rails.
00:16:34 The incident led to the introduction of strong parameters, which aimed to prevent mass assignment vulnerabilities. It taught the community the importance of validating incoming parameters carefully to ensure the integrity of the application.
00:17:10 In Rails, developers learned to use strong parameters to permit specific attributes, ensuring sensitive attributes remain protected. The sessions often get inundated with questions regarding how to handle tokens and parameters, indicating a crucial learning curve for beginners.
00:17:52 Despite Rails being opinionated, it offers significant built-in security features. These include encoding all data inputs and outputs as UTF-8 and providing protection against SQL injection attacks by default.
00:18:35 In conclusion, I've shared various stories and insights about the culture, community, and features of Rails. It has evolved significantly, emphasizing the need for developer happiness and a supportive community.
00:19:11 As time passes, both Matz (the creator of Ruby) and DHH continue to influence the Rails community positively. For those who have grown fond of Rails, I encourage you to fondly revisit the nostalgia of its earlier days.
00:19:48 Thank you for your attention.