No - they work as a team and make changes together without any regard for the needs of API consumers outside their company.
This is exactly the point.
Front and back end teams work together to make changes and don’t have to maintain a stable API for any other consumers.
> look at the EU's mandate for a common charging connector that both avoided locking in one implementation
If I was interviewing someone for a technical role and they told me that APIs were like charging connectors, I would say ‘no hire’, and complain to the recruiter.
> you keep superficially dragging in orthogonal complexity
It’s not orthogonal.
Your argument seems to be that supporting external API clients in addition to an in-house UI imposes no burden on someone’s architecture.
This is patently false.
If you could accept that there are architectural constraints imposed by your demand, then it would be possible to reason about them, but simply denying them leads nowhere.
So you agree that they already have to maintain stable APIs for each other? Meaning the mandate would be just adding a requirement for external visibility into the existing internal process, not anything significantly different from what they're already doing.
> If I was interviewing someone for a technical role and they told me that APIs were like charging connectors, I would say ‘no hire’, and complain to the recruiter.
So are you closed minded to analogies in general, don't appreciate that the physical layer has its own complexity, or what? The same type of arguments you're making were also levied at micro USB, by companies trying to keep their bespoke proprietary connectors so they could charge $50 for a spare phone charger. In the end they lost and the market benefited.
> Your argument seems to be that supporting external API clients in addition to an in-house UI imposes no burden
I agree there's a "burden". It's a small burden. One easy bound on this burden is that it is much less effort than developing a mobile app or another whole website specifically for mobile users. And most companies have eagerly done both.
> If you could accept that there are architectural constraints imposed by your demand
You keep using this word architecture. The current de facto deliverable includes XML or JSON documents. The deliverable for the mandate would be differently-formatted XML or JSON documents. Calling a second formatting an "architectural constraint" is a stretch.
I'm referencing details that today's businesses are already operating with. I'm not proposing them to be part of the law, but analyzing how a generally abstract law would be applied to today's implementations.
> Actual machine friendly formats are not the same as the data structures that power UIs.
You're right. I tried to simplify by leaving off the network, and that was a mistake. It is true, a business offering in-person user-facing software would have to design a protocol to get the data out of memory (ie a security boundary). But when a business offers the software over a communications network, such serialization formats are already a requirement. So I do have a second assumption of a communications network.
> Front ends often require sign up for read access
I have yet to see a popular consumer store that requires a signin to browse products.
> Wait - I thought your idea was architecture neutral. Why are you talking about the web ui?
Because we're still talking about businesses who have chosen to make their software available over the web. That is complexity that they've chosen.
> Aggregators owned by whom? Google, Facebook, Amazon?
Whomever, at your own individual choice, as they're not bound by network effects of selling products as well. I'd personally choose a local client from the apt repository or nixpkgs.
> If you are iterating on the UI frequently, and changing the structures that supports that UI, the by definition you don’t have a stable API
So you're telling me that the back end engineers at Amazon just make whatever changes they feel like, remove the old version, and the front end engineers just deal? Or when the front end engineers want some additional data, they simply edit the backend code and deploy it directly?
In reality, there is versioning and change control going on internal to any large company. But once again you're blindfolding yourself to the common structure and customs that already exist, only to throw your hands up.
I really don't see how we can productively continue this conversation, as you keep superficially dragging in orthogonal complexity and then point outing how complex it is, rather than focusing on my proposal as stated.
FWIW, look at the EU's mandate for a common charging connector that both avoided locking in one implementation forever, while leveraging modern industry consensus to provide a massive market benefit.