First of all this was 1993 and there was no Docker then. Second, that would not have solved the problem in any way. As I told them when I interviewed they needed to write dual native apps. Properly layered, most of the code could have been used in both. And these two were aside from their API and the desktop coordinate system, extremely similar operating systems and near identical in their user interfaces. Turns out they had wasted nine months apiece on two different DLLs that were supposed to abracadabra turn a Windows app into an OS/2 app. They responded to all problems by firing someone so I was telling them that my manager to be had screwed up. I said that they probably got to 80% functionality as soon as they hooked in the DLLs, had done months of work to get to 90–95%, and would never reach 100% (I learned this was exactly what happened). Dual native apps, or forget about OS/2. I wrote an OS/2 app for them and solved a pile of their long-standing problems.
I’ve not used Docker on the job but I have studied it and my impression is that
(1) it exists to solve problems that never should have arisen. Breaking changes were a disciplinary matter in my first years as a developer and I saw people terminated for them. Now the kids just accept them, along with endless meetings and all that bullshit nomenclature, as unavoidable facts of life.
(2) Docker requires one hell of a lot of work to prepare. It’s a fledgeling technology and just adds another layer of complexity, another opportunity for something to fail.
In my view a package or framework should absolutely never break existing code, period, there is no excuse for that. In COM every class had a unique identifier, a GUID, and if a new version was incompatible with previous code, it had a new GUID and maybe a new name, and the previous version was still in the package. To have a project using multiple versions of the same package strikes me as nuts. This is what I wrote about that
Patching Bad Design With More Bad Design Has Become the Software Standard
It never occurs to anyone to return to what worked before.
I’ve only used JS in foreground on one job and in another I tweaked front-end code to call the REST API I was writing on the back end, and everyone on both projects was using var. One guy was even using it in C#, which made me furious and I ripped it out every time I saw it. Of course I know about const and let and though I have never used TS I know what it is. I regard weak-typing languages as unfit for real use but aside from that, JS’ single-threading is a non-starter, that’s exactly like 16 bit Windows.
Of course I know about Babel but I see it as just like Docker, a bandaid on a bandaid, another hack to solve a problem that never should have arisen.
But JS is beauty compared to Django. Christ, what a fucking mess that is.