Notes on the Rails 8 Keynote
“It’s More Fun to Be Competent”
David Heinemeier Hansson is back with the the Rails World keynote talking about the trends he is seeing in the industry and where he wants to take Rails 8.
As usual, the keynote has lots of interesting ideas and the next version of Rails is giving us developers lots of new tools. I want to cover the big ideas from the keynote so this is more of a overview post (with some references to supporting blog posts) than a deep dive into any specific new Rails 8 feature.
I am going to cover two big themes from the keynote:
- Programmers have gotten away from being comfortable working directly with Linux (we often opt for Macs) and the corresponding rise of Platforms as a Service (think Heroku).
- New features in Rails 8 which will help us reconnect with the server, deploy to production more easily, simplify out tech stack, and save tons of money while doing so.
Don’t Panic! Computers are your friend.
David wants to help developers get back into deploying and setting up servers. He thinks that AWS and Heroku has gotten all of us thinking that we need professional help to do anything in production.
“The insecurity of developers is a mass market, lets tap into that.” – David Heinemeier Hansson’s take on Venture Capitalists
For years now we (developers) have gotten used to the idea that we can’t touch the server or what David calls “touch the computer”. We are programmers! Of course we should touch the server and David wants us to help us do that again.
“It’s more fun to be competent.” – David Heinemeier Hansson, Rails World 2024 Opening Keynote
David says first step to re-friending your server is getting into Linux again.
Linux and OMAKUB
“There is a cure to server-phobia… It’s called LINUX.” – David Heinemeier Hansson, Rails World 2024 Opening Keynote
David thinks that a big part of why we are comfortable with the server is that we (developers) don’t spend enough time in Linux. He even wrote a whole blog post about it: Why don’t more people use Linux?
This push to Linux is a pretty big part of the first half of the keynote. The way he sees the web moving forward requires developers to be more comfortable with working in Linux again. This is why he wrote OMAKUB for Ubuntu.
“OMAKUB is a project for taking that scary Linux machine and turning it into a comfortable, productive, great looking Linux setup that you can jump right into and use.” – David Heinemeier Hansson, Rails World 2024 Opening Keynote
Platform as a Service
The second part of working more directly with servers again is getting rid of Platforms as a Service (PAAS).
PAASs have been required for years because of the complexity of modern web apps. Production apps need to utilize multiple databases (Redis, PostgreSQL, ElasticSearch, etc), asset build pipelines and custom software for deploy.
It is nice that Heroku was able to simplify deploying to production to a simple git push but David thinks we can do better now. If you can simplify the app complexity then you can get rid of the PAASs.
“Rails will be a framework… that does not require you to pay a commercial vendor to go to production… That’s the mission for Rails 8… The main path is for you to deploy your own application to any hardware of your choice.” – David Heinemeier Hansson, Rails World 2024 Opening Keynote
Features of Rails 8
Authentication
“Rails 8 is not going to ship with the black box of Devise.” – David Heinemeier Hansson, Rails World 2024 Opening Keynote
Devise has long be a popular way of implementing authentication in Rails apps. Basically you add it to your Gemfile, rails g devise:install, add some attributes to your user model and then filters in the controller. Pretty easy but also it hides away much of the authentication code inside the gem. Rails 8 is of the opinion that should change.
“We are going to implement authentication through generation.” – David Heinemeier Hansson, Rails World 2024 Opening Keynote
In Rails 8 you can run rails generate authentication and you will get authentication files created for you, in the main Rails app, where you can see and work on them. David is of the opinion that it is time to bring this hugely popular feature in house, into the Rails framework and in front of the developers.
He also says that authentication is something we have been able to do in app for quite a while but that we have been conditioned to feel like we can’t. He is basically saying that using other libraries or paying for user authentication is outdated at this point in time and we should get used to doing it ourselves even if we have to learn a few new things.
“You should understand the basics of secure passwords.” – David Heinemeier Hansson, Rails World 2024 Opening Keynote
Propshaft
“Since modern browsers allow us to ship code directly to the user we just need a load path and we need to digest assets for the far future.” – David Heinemeier Hansson, Rails World 2024 Opening Keynote
The opinion of Rails 8 is that minifying/compressing JavaScript and CSS is not optimal in modern browsers. For one thing, all that work only saves you about 2-5% in size which is really not important. The downside of minifying is that it breaks the ability of developers to view source. David goes on about how he has learned tons from viewing source and it is our responsibility to give back to the web for future developers.
Solid Trio
I think the Solid trio is what got me most excited about Rails 8. It is three new features (Solid Cache, Solid Cable and Solid Queue) that lets web apps run off a single database instead of the many we use now.
Solid Cable for backing web socket communication (Action Cable) which gets rid of the need for Redis for this feature.
Solid Cache for storing caching in the database. Since hard drive space (what databases use) is getting so cheap it has allowed Hey to store 10TB of caching which brought down their 95% response time from ~= 400 ms to ~250 ms.
Solid Queue for storing jobs on the database and works with Active Job.
The Solid trio works with MySql, PostgreSQL and SQLite.
“SQLite has allowed us to even take the system out of database systems. There’s no longer a process to operate, just a collection of files that you use directly.” – David Heinemeier Hansson, Rails World 2024 Opening Keynote
Thruster
Thruster is meant to replace proxies like nginx with an in house tool written in Go.
“Go is a very nice language for writing proxies and proudly something that we employ in the Rails stack by default. Here’s a part of the Rails stack, it’s written in Go because Go is better at that part… It’s also really fast.” – David Heinemeier Hansson, Rails World 2024 Opening Keynote
Kamal 2
Kamal is a big feature for Rails 8 because it it a deployment tool (which is part of the whole getting away from PAASs thing). It allows you to run multiple applications on on server (they did a demo) and supports Auto SSL via Let’s Encrypt.
“Kamal is for deploying you application into the cloud, or your hardware or wherever you want to put it.” – David Heinemeier Hansson, Rails World 2024 Opening Keynote
Taste of 8.1
David also gave a quick taste of what the Rails team has in store for 8.1.
Action Notifier – Web push notifications will not need native applications in the future.
Active Record Search – Using Active Record to search on Active Record objects instead of using ElasticSearch.
House (MD) – Action Text with Markdown as a storage format.
Video Keynote
That covers this overview of the keynote. The whole keynote is full of great thoughts (and very entertaining). I suggest you give it a watch for more detail: