malleable.systems
malleable.systems copied to clipboard
Add Brander's "Composability with other tools" to catalog
https://subconscious.substack.com/p/composability-with-other-tools
On the web, the most common way to save data is in a database hidden behind a server. This makes interoperability an explicit feature that must be implemented through APIs. The default is for web apps not to interoperate.
Unlike the web, the classic desktop computing paradigm makes a distinction between apps and files. The default way for a desktop app to save data is to save it to an external file.
Files act as hubs around which interoperability can emerge. Rather than implementing each other’s bespoke APIs, apps can collaborate over a shared file type, cutting down the necessary integrations from n * (n-1), to just n. Take a .png. How many apps can work with a .png? Too many to count, and it’s an open set. Any app can opt in to working with .pngs. Workflows that span multiple apps can emerge organically and permissionlessly.
Files allow interoperability to emerge retroactively. New apps can come along and implement the file formats of other popular apps, uplifting their file format into a de facto protocol. This has happened many times, from .doc, to .rtf, to .psd. Competing products are able to get off the ground by interoperating with incumbents. New workflows can be created permissionlessly.
Files mean the OS can guarantee basic rights for your data. On the web, “data” is a miasma, invisibly collected, transferred, leaked, and shared. In the desktop paradigm, “data” is a document, a physical object you can manipulate. All documents can be moved, copied, shared or deleted, whether or not an app implements these features.
So, interoperability is an emergent outcome. It doesn't exist in any one mechanism or standard, but rather emerges from the interplay between the actors in a system, and the structure of a system. Some system designs are more conducive to the emergence of interoperability than others. Files are one such example. Yet, even system designs which favor interoperability are not guaranteed to produce it. The actors in a system have their own goals.
If a tool supports composition with other tools, it supports open-ended evolution. At that point, all of the other ways in which it might be terrible become incidental, because an evolutionary system will always be more expressive than one that isn’t.
Suggester: me