I am arguing how things could be done better, but how social and political forces in specific non-user quarters make any change exceedingly difficult; and how one huge factor is exactly people used and fixed into the ways things are done now. I fully agree with you how things work now!
i'm not denying things couldn't be done better. But there is another factor at play : legacy.
Codebases of commercial unix based tools are often "ancient". They date back to the days of the Nova, VAX and sun workstations (like most chip layout tools). they are not going to rewrite that. Proven to work. There's a reason outfits like banks are still running emulated ibm360 processors running a 360 os running a Cobol application on the latest and greatest hardware (emulation on top of emulation on top of emulation on top of virtualization. it's nuts, but you can test the virtual machine is correct. Then running your application is simply a matter of bringing over the entire stack, including the operating system. The hardware is now irrelevant). They don't dare touch it for fear of introducing issues !. Same for things like Sabre ( the flight booking system)
Fro command line or daemon style processes it is easier. Things that UI driven are more complicated due to dependencies.
To save development and verification time you simply eliminate variables. This kernel, these libraries, this config. Now all the dependencies are known and nothing will come get in the way. This is the old "but it runs fine on my computer" issue. To solve that : clone the computer, warts and all.
can it be done better ? yes. The question is : how much time and money are you willing to throw at it ? The carpenter needs that saw ... he's got cabinets to make.
Example, I get comments like "why you stick to Altium ? why don't you use KiCad or Diptrace or Cadence or Mentor or Zuken or whatever".
Well , i've been using Altium since 1988 when it came on a single floppy disk and ran under DOS 3.21 in EGA mode... every version including the enterprise installs with 500+ users. That's 38 years ! I know that thing inside and out, i have been an alpha and beta tester, i had the SDK, and been in areas i cant talk about.
I can try to use a different tool but there is going to be a tool learning curve (not the process of pcb layout itself, using the tool. I know how to make the cabinet. The new saw has a learning curve).
I will never be as fast as i am now. I will get frustrated, my productivity will tank and stress will go up. I will be in a race against people that are already proficient in the other tool. My job evaluation will be bad because i will be slower...
I'm simply not interested in doing that. I Have a board to design. I've turned down many job opportunities. "But we offer cross-training". Not interested. I don't need the stress and frustration. After two heart attacks i need to take it easier...
That is a big factor at play inside many companies. The cost of retraining their workforce. Not just users, but also developers : they are also a workforce. And It people are also a workforce.. Time is money. Time to market is crucial , whether you are making cabinets or saws.
It's a difficult situation. can it be done better ? again, yes. Who will foot the bill ?
I personally think Web-based applications are the future. They run in an os-independent environment : a browser engine. That engine is available for different OSs.
The application doesn't care where it runs. It's a common virtual machine : The browser.
- For the application developer the Hardware, OS , middleware is all abstracted away. If it runs in the browser it runs everywhere.
- For the user it is the same whether they are on windows, macos, chromeos or Linux or are using a Dell , HP or Apple computer. Completely hardware and OS agnostic.
The backend can be whatever is required. Drop the entire contraption in a container, OS and all, and run it on a virtual system. Can it be done better ? yes. More power efficient ? yes. But can the deployment be easier and faster ? i don't think so. You send me the preconfigured docker image and i spin it up. I tell my user to point to a webpage. My work is done. So what if it consumes a bit of processing power and electricity. I save it on the front end.
just my two cents.