"Data can be an interface" is a pretty good and very underrated insight, I think.
Note that it's not just 'compilers' as an example of extremely complicated systems that achieve interoperability and componentisation by fully specifying and exposing data: *the Internet* does this too. At multiple layers: physical, data-link, TCP/IP, HTTP, REST.
It's almost like data is actually the best interface.
https://www.tedinski.com/2018/03/13/how-compilers-are-designed.html