Replit: the Bundling of Software Development
$ when • April 2022
Disclaimer: a few weeks after I published this article, I ended up actually joining the Replit team: more about it here.
If I don't go to the gym, it's usually because of how crowded it is. Too many people, and suddenly it goes from being a satisfying experience to a deeply frustrating one.
I'm lucky: my gym shows real-time utilization rate on their website. I'm also unlucky: no precise historical data. This makes it hard to plan in advance when to go: is it going to be crammed, or desert?
A few months ago I decided to take matters into my own hands. I fired up my terminal, and started hacking together a quick scraper that would visit the gym's webpage every few minutes and save locally the current fill rate. This would have given me the historical data I needed to adapt my schedule in a sensible way.
Even if we're talking about a script with less than 30 lines of code, I had to deal with a bunch of different tools to get the job done: Kitty (terminal), neovim (editor) customized with a bunch of plugins, Python virtual environment (venv), coupled with Poetry to keep packages neat. Cherry on top, my personal AWS account with a remote EC2 machine always running, to keep the thread running 24/7, with its own tmux pane to avoid the script being killed by the SSH connection dropping. Oh, and scp to download the resulting CSV and Github to share my findings with my friends.
All this just to run a dumb, stand-alone Python script. No wonder software development feels scary for the uninitiated.
Now, enter Replit.
I've already written about the future of IDEs in a past essay. I mentioned Replit as a somewhat negative example, because it doesn't give you access to the underlying hardware. I stand by that point, but in hindsight it's less relevant than it seemed.
The fact is that Replit doesn't want to replace Jetbrain's Gateway, nor Projector, nor Visual Studio Code. It doesn't want to replace Github, nor Digital Ocean, nor StackOverflow. It doesn't want to replace npm, or Docker Hub.
Replit wants to replace all of them.
This is my gym scraper on Replit. In just one screen, you can see the future of software development. And that future is bundling.
The whole interface is — primarily — an IDE: you have files management, the editor, intellisense, docs. Cool. But this IDE is also running in the cloud, so it's portable, and multiplayer. Now, if you pay attention to the bottom left corner, there are statistics on server resources: congrats, you now also have a literal machine at your disposal. In the control bar on the leftmost side, there are other interesting concepts: a barebone key-value database, for instance. Take a look at the files: you'll notice a Poetry lock file for package management.
It took me 10 minutes to go from conception to being live: created a new Python repl, wrote my code in a file, toggled on the flag “Always On” to prevent it from shutting down, hit “Run”. Done. I didn't even need to install external dependencies: Replit figured them out on its own.
This was a powerful aha moment for me: for the first time, I had in front of me a new paradigm for building things. I got hooked.
If you're a professional developer, you'll now be thinking: "This is magic. But! What about a large-scale production app? That's a different game.”. And you'd be right: Replit — as it stands today — is not truly ready for prime time. In many ways, it's still a toy.
If you want to build a complex project, you need to use complex tools, and Replit is not sophisticated enough. It has a suboptimal code editor, with missing keyboard shortcuts, high lag if you're in Asia, a weird navigation system, limited refactoring capabilities depending on the language, no plugins, limited devtools. Its cloud infrastructure is on-off, so it can't scale on demand. It's easy to install machine-level dependencies, but there's no UI for that, making it a hide-and-seek kind of adventure.
My point, however, is that this is all beside the point.
None of its current limitations are structural — as a matter of fact, most of them are being addressed as I'm typing these words. To truly get how Replit is changing how we learn and how we build, we need to discard these local minima, and look instead at its directional movement.
This is what fascinates me the most about Replit: what it stands for. The future it's promising.
Every next big thing starts like a toy. Replit is no different: it's what both tech kids and young professional use to play — either with ideas, or with new skills. You can't do much more than that with it today. The crucial difference though is what this toy will become 5 to 10 years from now. Replit is imagining a new way of building and shipping software, where every tool is bundled in a unique environment. Where we can blur the lines between localhost and staging environments, between coding and shipping, thinking and making, learning and building. And most interestingly, where complexity is neither blindly removed nor peaceably accepted: it's carefully managed.
Yes, to build complex projects you need complex tools. But this is not always the case, is it? You use the very same Macbook for editing Powerpoint slides, crafting new virtual realities, developing mobile apps, making music, editing videos. Apple was able to abstract complexity and let it emerge gradually, depending on the use case. Consumers became professionals and vice versa. The way I see it, Replit is trying to achieve the same thing: the very same development environment should be used for large projects, quick scripts, and coding lectures, with a flexible and emergent complexity. Current development tools can't get us there. Replit can. But we need to give it time.
And yet — even today — Replit is already fun to play with.
Every single tool I used to write my early-morning gym scraper has been bundled together in one place: editor, server, persistent database, dependencies, multiplayer. All remote-first: I can access it from my iPad, from an Internet café in India, or a Chromebook in Nigeria. I can be a poor student in Jordan, a young hacker in Indonesia, an excited founder building an MVP. Replit gives me the power to go from idea to production at the speed of thought.
As all coding should be.