logoalt Hacker News

caseyrosstoday at 6:36 AM4 repliesview on HN

The real world is infinitely more standardized than virtual ones.

Physical space itself enforces a set of laws that make any two objects "compatible", regardless of any established interoperability agreements.

However, in software, there is no such constraint. Two randomly chosen software components are, in general, less composable than a chair and a galaxy.

This is the core reason why we have only been able to achieve interoperability in very specific domains. It's not because we're bad at design or planning --- it's because the space of ideas itself is simply so overwhelmingly large that it takes time and incredible coordination to get anything like pre-built IKEA blocks which fit together naturally.


Replies

Mikhail_Edoshintoday at 9:07 AM

I would disagree. Software has certain constraints, or, for the search of a better concept, certain nature. E.g. I myself would say that one side of it is that you always have a very small tool that is supposed to operate on much larger data and can only manage this by doing many-many steps that have to be perfectly orchestrated. This is true to the low-level CPU, but as we move higher we start inventing things and can invent something that is rather different. E.g. on certain levels it may convincingly look that we send a bunch of elves against a bunch of orks. There is a multitude of such concepts, they are vastly different and, of course, incompatible, and it may look that they're all worth each other and what we choose is a matter of preference. Yet among them there is is a single concept that is special, because it is true to the nature of software; or is closer to that truth than others. It is not to be invented, but to be discovered. If we discover it, we will solve the problem of compatibility.

oaieytoday at 7:31 AM

Yeah, but it does not have to.

There are for example products like keycloak. OpenID/OAuth2/Token/Security IdP in a box.

Why there is not ticket system in a box? Yeah, we all know Jira and friends, but these are products not building blocks.

Another angle is: Why the hack does everyone rewrite their microservice foundation. Inbox/Outbox/Worker Queue/Throtteling/tracing/..... What happened to the application servers of the past?

I am a big supporter of that narrative. Why do I need to write more than my dedicated business logic and wire up some UI (and do not get me started on UI space).

IMHO, this can be a real differentiator for the language platforms. Ruby has parts of it, but is still far of.

show 2 replies
mejutocotoday at 8:31 AM

I think in a way the OS is the "physical space" of software. This matches common composable interfaces like lines of text, files or http calls (rest).

hulitutoday at 8:51 AM

> It's not because we're bad at design or planning

No, it is, code writers are bad at design, testing and debuging. That's why LLMs are so popular: just throw together some code, see if it compiles.

How many (between them) incompatible GTK or QT versions are there ? Why someone has to come every few years with a new graphics library ? Is the JPEG, TIFF or PNG standard changed ? And who thinks that adding layers of abstractions solve problems ?