So what others might call API boundaries? the components of logical separation where you could intrude new logic, without necessarily having to tell either side?<p>A unix-y analogy would be mapping network calls into /dev/tun or /dev/tap instances via the kernel so you can put them into processes and "do things" to the payload.<p>In the literal mainframe days, when real programmers were women and pipes and cables had waxed string laces around them, there were known points in the architecture to "add bits" without massive change. IBM excelled in selling boxes which were soft-locked slow, and could be field upgraded by key turns but also by adding extra processing logic to the edge.<p>third party integrators sold addons for Dec-10 to add a parallel processor through memory mapping and User-Unallocated-Instructions (deliberate holes left in the ISA to permit wire-wrap coding of microcode to do things). Vax VARs sold memory upgrades based on all kinds of wierd tricks including bending the memory chip legs up to make an extra air-strung address line tied to an I/O pin.. But IBM users would say neither the 10 nor the 11/780 were true mainframes. I think by the time the 11/780 came out, the idea of micro-mini-midi-mainframe was a bit passe. It mattered if you were an IBM jobshop and depended on VM/CMS and the like. The "prism" idea meant these huge behemoths were already being sharded into logical sub-machines.<p>There's a whole chapter in Bell/Mudge/MacNamara computer architecture on the "wheel of life" model of how a device becomes intelligent until eventually its a discrete computer and then .. the wheel runs again.