Smoothing the Cloud & Local Roundtrip Developer Experience
Getting started with new technologies is usually a huge pain. Often I stumble around for hours trying to get an app’s toolchain setup correctly. Instructions are usually like:
Things get worse when I lead workshops for hundreds of enterprise developers where many are on Windows machines and not very comfortable with cmd.exe
.
Experiencing this pain over-and-over is what led me to create Typesafe Activator as a smooth way to get started with Play Framework, Akka, and Scala. Developers have been thrilled with how easy taking their first step with Activator is but I never finished polishing the experience of the second step: App Deployment.
Over the past few months I’ve been working on a set of tools that make the roundtrip between deployment and local development super smooth with zero-CLI and zero-install. Check out a demo:
Here is a summary of the “from scratch” experience:
- Deploy the Click, Deploy, Develop app on the cloud
- Download the app’s source
- Run gulp from a file explorer to download Node, the app’s dependencies, and Atom and then launch the Node / Express server and the Atom code editor
- Open the local app in a browser: http://localhost:5000
- Make a change in Atom to the
app.js
file - Test the changes locally
- Login to Heroku via Atom
- Deploy the changes via Atom
That is one smooth roundtrip!
For more detailed docs on this flow, checkout the Click, Deploy, Develop project.
Great dev experience starts with the simplest thing that can possibly work and has layered escape hatches to more complexity.
That kind of developer experience (DX) is something I’ve tried to do with this toolchain. It builds on top of tools that can be used directly by advanced users. Underneath the smooth DX is just a normal Node.js / Express app, a Gulp build, and the Atom code editor. Here are the pieces that I’ve built to polish the DX, creating the zero-CLI and zero-install experience:
- Gulp Launcher - Bootstraps a Gulp-ready environment from nothing
- download-heroku-source - A web app that lists your Heroku apps and downloads the source as a zip
- gulp-heroku-source-deployer - A Gulp plugin that deploys sources on Heroku
- gulp-atom-downloader - A Gulp plugin that downloads Atom
- atom-heroku-tools - An Atom package that adds a menu for logging into Heroku
I hope that others find this useful for helping to give new users a great roundtrip developer experience. Let me know what you think.
Note: Currently gulp-atom-downloader does not support Linux because there isn’t a standalone zip download of Atom for Linux. Hopefully we can get that resolved soon.