Rough

Malleable software

Some products hand a piece of themselves to the people using them, to reshape as they need. This is a running list of the ones that do.

New to the term? Start with the definition. If you'd like to be on this list, please contact us.

Spreadsheets

Google Sheets

Formulas & Apps Script

A formula in one cell reshapes the meaning of every other. Apps Script adds custom functions and menus for the parts formulas cannot reach.

Developer tools

Visual Studio Code

Extension API

Add commands, languages, debuggers and whole UI panels through an extension API, then install them from the marketplace or your own disk.

Raycast

Extensions

Write extensions in React and TypeScript that add new commands and views to the launcher, and publish them to the store.

GNU Emacs

Emacs Lisp

Redefine almost any behaviour of the editor while it is running, in the same language the editor is largely written in.

How does a product get on this list?

A product needs a surface that clears the bar we set out in the explainer, and we need to be able to link to the vendor's own documentation for that surface. Pointing at the docs keeps us honest, and it means you can check any entry here for yourself.

Some of these surfaces ask for a little code and some ask for none. We haven't tried to settle the argument about where that line should sit. We've written about how we think about it over here instead.

Make your own product malleable

Rough adds a malleable surface to your product, so the people using it can build the small features they need themselves, inside your app and within the limits you set.