Remix.run Logo
▲ sunrunner 3 hours ago

I imagine the future of computer interaction could evolve into a split model combining foundational capabilities that just make sense to be pre-built, tested and shared deterministic code - codecs, numerical solvers, geometry kernels, databases and transactional tools, compilers, theorem provers, cryptography, etc. - with a fluid interaction layer that accesses either local or cloud-provided versions of those foundational capabilities and is capable of synthesising any tools it needs where it would be helpful to build it first - either as a one-off or something to cache - for anything that can’t just be done as a task.

Applications are compressed bundles of some assumptions about how something should work and be interacted with. So you wouldn’t need VLC, it’s a shell around a foundational codec layer. Instagram is just a view over data in the Instagram social network, and you could customise it as you see fit. Transmit is a lovely application but you can delegate that to a fluid task layer that can do one-off tasks or make something you can re-use.

Everything in the fat ‘middle layer’ of software that is connecting a user to something foundational through interface assumptions might disappear, unless it’s more useful for it to exist as a permanent tool. Things that a lot of people share or that are more complex, Blender for example.

I also imagine there’d be a lot more focus on making explicit things like canonical records or schema, contracts, provenance, versioning, access policies, some kind of fixed views. Things that your local fluid interface would rely on the structure for when it came to connecting to your bank and doing whatever you want with your finances.

Not all software as we think of it might disappear, but the things that are lightweight layers over something more stable could all be subsumed with tools synthesised on demand.

Perhaps, at least.