Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Brander's "Composability with other tools" to catalog #63

Open
jryans opened this issue Dec 9, 2021 · 0 comments
Open

Add Brander's "Composability with other tools" to catalog #63

jryans opened this issue Dec 9, 2021 · 0 comments
Labels

Comments

@jryans
Copy link
Member

jryans commented Dec 9, 2021

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

@jryans jryans added the catalog label Dec 9, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant