Why is interprocess communication (IPC) so unergonomic

For some reason the idea to have multiple programs written in different programming languages that work together by sending messages never let me go. Writing a render in C++ and the game logic in Julia. Having them communicate by sending various messages. It always intrigued me.

Having the ability to replace for example the render with a version written in C# that just needs to adhere to what message need to be accepted and send to others, felt so good.

Communication is not Free

The sad thing is that communication is not free, there is always a communication overhead. This overhead often results in latency and additional complexity. We need to handle the latency, crashes in servers. Having multiple processes communicating with each other is a distributed system.

All problems that a distributed system has this system would also have.

Smalltalk Lost

Many of the complexities that arise from a local distributed system should be solved by the operating system. Programming languages like Erlang/Elixir that run on the Beam shows what abstractions should exist to make our life easier.

There are incredible videos by Alan Kay showing the power of an operating system and language runtime that make it possible for programs to cooperate.

The best communication we have between programs 39 years later is exporting and importing files. What a shame.

Walled Garden

A real disgrace is the walled garden we are creating with software as a service (SaaS). So many APIs that could be used for communication between programs is locked behind interfaces on the web or in GUIs. Cloud services are not there to empower the user but to chain him. And that is a disgrace.

Most programmers and managers don’t feel shamed when they create such gardens, but they should.