Kyrylo Silin Profile picture
Sep 27 2 tweets 3 min read Read on X
Notes from Rails World 2024 Opening Keynote by @dhh:

Fighting Complexity in the Web
- Rails 8 has been released
- Rails has been trying to follow the latest programming trends, but DHH was never satisfied with this approach
- Rails 7 and the introduction of ES6, HTTP2, and Importmaps brought back excitement
- DHH's work on HEY made him realize that the whole industry's approach was flawed
- Rails doesn't have to accept conventional rules

The #NOBUILD Approach
- HEY went 100% #NOBUILD (CSS and JS served directly to the browser as written)
- For 20 years, people claimed Rails doesn't scale
- @tobi proved them wrong: Shopify serves 1 million req/s in 2023
- JS minification has hindered the web as a learning platform, saving only 2-5% overhead
- We owe it to the open web to allow view source

Simplicity and Progress
- DHH composes a haiku to honor Matz: "Progress is our path, complexity builds the bridge, simplicity waits."
- Complexity is necessary for progress, but simplicity is the end goal
- Rails 7 ethos: rely on the browser
- Browser compatibility: { safari: 17.2, chrome: 120, firefox: 121, opera: 106, ie: false }
- The goal is to optimize for our limited "monkey brains"
- Rails aims to compress the complexity of modern web apps

Deployments: From HELLO WORLD to IPO
Current State of Deployments
- The industry has cultivated a fear of server management
- AWS solved a specific problem for Amazon's extreme usage spikes
- Most developers don't need such complex solutions

Cost Comparison
- Heroku's Performance M (1 core/2 threads/2.5GB RAM/$250 mo) vs. Hetzner hobby box (48 cores/96 threads/256GB RAM/$220 mo)
- DHH criticizes the markup on services like Vercel (AWS +500% markup)

The Need for "Generics" in Deployment
- DHH draws parallels to medical patents expiring after 20 years
- Calls for open-source alternatives to expensive PaaS solutions

Rails 8 Mission: NoBuild, NoPaaS
- Rails aims to eliminate the need for commercial vendors for production deployment
- The main path: deploy your application to any hardware of your choice

Learning Linux
- OMAKUB - DHH's favorite Linux environment
- Emphasizes the importance of basic security measures (e.g., denying password authentication with SSH)

Rails 8 Features
Authentication
- Rails 8 will generate authentication code instead of using Devise
- The generated code is extracted from 37signals' applications

Propshaft
- Replaces the outdated ACID pipeline
- Simpler to understand compared to Sprockets
- Designed for modern browsers, allowing direct code shipment to users

Database Innovations
- Introduction of "solid" adapters: solid_cable, solid_cache, solid_queue
- All run from "One Ring" - a single database system (SQLite)

Solid Cable
- Database-backed adapter for Action Cable
- Eliminates the need for Redis

Solid Cache
- Born out of Basecamp's needs
- Supports 10TB of caching stored for 60 days with a 96% hit rate
- Supports encryption, built on top of Active Record

Solid Queue
- Highly performant job processing system
- Works with all 3 major DBs
- Supports recurring jobs
- Processes 20M jobs per day on HEY

Thruster
- Aims to eliminate the need for nginx and other proxies
- Provides X-Sendfile acceleration, Cache-Control, and GZip compression
- Written in Go, capable of 60,000 RPS on a laptop

Kamal 2
- Deployment tool for Rails applications
- Features Auto SSL through Let's Encrypt
- Allows running multiple applications on a single server
- Includes a new proxy written in Go

Future Plans
Rails 8.1
- Action Notifier: new framework for web push notifications
- Active Record Search: alternative to Elastic Search
- Action Text with markdown support (codenamed "House MD")

Kamal 2.1
- Ongoing improvements to the deployment tool

Conclusion
- Rails 8 provides #NOBUILD and #NOPAAS solutions
- First beta of Rails 8 released on the day of the talk
- Kamal 2, Solid Queue, and other features are now liveImage
@dhh There's a slightly longer and messier version of this post:
kyrylo.org/rails/2024/09/…

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Kyrylo Silin

Kyrylo Silin Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(