Product Principles: Redefining the CLI Experience for Developers
Contents
In the world of software development, the command line interface (CLI) is a powerful tool that empowers developers to automate tasks, manage systems, and build incredible software.
However, the traditional CLI experience has often been perceived as daunting and inaccessible for newcomers. Enter Warp, a groundbreaking terminal emulator that revolutionizes the way developers interact with the CLI.
Warp embraces a set of core principles to create a truly transformative CLI experience:
Meet developers where they are
This means that our terminal should be backwards compatible. A developer using it for the first time should be at least as productive as they were in their old terminal.
Practically speaking, this means we need to create a POSIX-compliant terminal that works with developers’ existing shells, scripts, and key bindings.
Keep the power, but fix the UI
We don’t see any reason why the terminal can’t have a more modern, intuitive interface, while maintaining the power of a primarily textual, keyboard driven experience.
If a user wants to use the mouse to position the cursor, why not support that? Why not have a native autocomplete and search experience?
Our goal is to create the UX that best supports what developers use the tool to accomplish, and we are pragmatic about whether that UX is character based or pixel based and whether the input mechanism is the keyboard or the mouse.
A great out-of-the-box experience
There are many different plugins, themes, and open-source projects that improve aspects of the CLI; e.g. tmux, mosh, and powerlevel10k. Each has its own install process, configuration scheme, update mechanism and more.
Many developers end up using a very basic and underpowered version of the CLI because they never discover, configure or learn these tools.
We believe there is value in an integrated, out-of-the-box experience that helps all developers be more productive immediately.
Build for speed
One of the great attractions of working in the CLI is that if you master it, you can work very quickly. That’s only true though if the underlying terminal is fast.
We are building Warp on the fastest possible stack. On desktop: a pure Rust app that goes directly to the GPU for rendering. On the web, a WASM app that uses WebGL.
Build a platform
Most developers will experience Warp as a terminal app, a product they launch and run.
However, the CLI is more than an app, it’s a platform, much like iOS or Windows. It has (primitive) mechanisms for discovering apps, installing them, running them, but it lacks many of the affordances of modern platforms, like an app-store, a unified way of securely installing and removing apps, a well defined API for developers to configure the runtime environment, and more.
While we are starting by focusing on the terminal app and experience, we eventually want to build the best possible CLI platform.
Leverage the cloud
The basics of computing have changed since the advent of the CLI, and no change has been more profound than the rise of the internet.
Once you start to think about it, there are a lot of leverage points: why is shell history limited by your local hard-drive? Why doesn’t your shell configuration follow you across machines? Why can’t you transfer a CLI session to the browser so you can keep working on the go?
Build for teams
Developers today work in teams on shared projects. Because of this, most applications developers use are collaborative in one sense or another.
Github is a good example, as is VSCode live session sharing. And yet the CLI is still primarily a single-user tool, with collaboration facilitated by copy/paste, screenshots, and screen-sharing, rather than a true multi-player experience.
We believe that CLI-based teamwork is a very powerful concept, extending beyond google-docs real-time collaboration, to facilitating asynchronous workflows like command-reviews, shared devops terminals and more.
Build for everyone
The CLI traditionally has a bit of a mystique around it; developers feel like hackers when they use it, and there’s almost a rite of passage in conquering its idiosyncrasies.
We believe that the CLI should be more accessible, more humane, and more useful to all developers.
Too many are turned off by the intimidating UI. Many aspiring developers have their first experience using the CLI (it’s how they set up development environments), and that first experience is often very negative because the interface is so hard and creates so much incidental complexity.
We want to fix this and make a modern CLI for all developers.
By adhering to these product principles, we aim to redefine the CLI experience, empowering developers to unlock their full potential in a user-friendly, collaborative, and accessible environment.
Author Embiid
LastMod 2023-06-10