Also like the PC, IBM didn't realize that their boxes could be used for this new funky thing called the internet. Talk about blind-sighted. Their first web product was an abomination they inherited from their purchase of Lotus. It didn't work and produced unusable websites, boding poorly for IBM's entry into that market which was already taking off with Active Server Pages and XMLHTTP.
If IBM had loudly (and correctly) proclaimed that mainframes were the place to run web services, everyone and their mother would be running mainframes right now instead of Linux boxes. IBM's eventual realization of this led to their purchase of Red Hat!
No, they wouldn't. I could take one Linux box, get a domain name, and have a web server. I wouldn't be able to afford a mainframe, though. And if your alternative is renting a fraction of a mainframe, the answer is no. No, I will not trade a Linux box that I control for renting a piece of a mainframe that I don't control. Just no.
I wrote a horrible, hacky, CMS PIPES based gopher/http server for VM some time in 1993 that was used internally for various "non serious" things. A colleague and I designed a native HTTP server for MVS in 1995 and had started coding it when we were more or less reprimanded and told to defer to the then Network Services division which was porting something (I think CERN httpd, they had a bizarre fascination with CERN) to MVS.
It just wasn't in anyone's best interest to even experiment with web services on VM or MVS, let alone try to build a business out of it.
Cloud happened after I left, but the infrastructure to build or respond to the rise of AWS was never in place, sort of by design.
Try that with Kubernetes!
In peer reviews, for example, it was standard to bring output from both the failing case and the working case as printed handouts. Those were easy to generate; just spin up two machines and fix one while you leave the other broken. They can share resources if you like so you don't have recreate everything. That is horribly messy today. Testing is so hard most people don't do it.
On firewalls, PF has a syntax simpler than most text adventure games.
Every time I get into the GNU world, well, I get better HW support sometimes, among a slight bit of performance, but, FFS, configuring a Linux firewall gives me nightmares everyday. Just compare NAT on Linux vs OpenBSD. Or TUN/TAP devices, where in OpenBSD it's just a matter of a SINGLE line at pf.conf and two hostname.if files to define the bridge and the tap device with a subnet. Done. Oh, and sysctl to set IP forwarding, but that was the easiest task on any OS.