Linux kernel is open source and really easy to read, and also fairly easy to write drivers for.
> proprietary protocols
I've written many network softwares, and proprietary protocols aren't difficult to me.
> vendor warranties/support
Fuck vendor lock-in. Move to Linux.
> licensing/relicensing
Fuck vendors.
> paying you to do the work
...is cheaper than paying vendors.
> waiting for the work to be done/tested
Here, let me demonstrate that it works... with many many many automated tests.
> * paying for workforce re-training*
Not really important if it's well-done.
> justifying this to management
A lot of business management can't see past their own nose until it comes to money. Do some maths and show them the cost savings in a presentation. They'll listen.
The best option in these cases is to isolate the system from external networks to keep it secured and keep operating until the organization can afford a major capital expenditure to replace everything.
I ran out of patience years ago for the inevitable results of letting an unaccountable third party own decision-making on your critical systems. I'd much rather have that argument when the CEOs aren't breathing down our necks.
> you have no test environment
That can be solved.
> the original vendor no longer exists
Even more reason that your company needs to upgrade.
> That computer is connected to industrial equipment that costs millions of dollars ... any failure or downtime at best will cause millions in financial losses
I heard a minute of downtime on an oil rig costs millions in financial losses.
So a fuck-up is extremely expensive. Nothing new to me. I've also worked in industries where a fuck-up can cost lives. That's also extremely expensive.
Trust me, there are software engineers and hardware engineers who know your pains and aren't afraid of how difficult you think this stuff is. Yes it's difficult, no it's not impossible. And it's a lot cheaper than you think if it's done right.
If you think I’m describing a software engineering problem, I don’t think you understand what I’m saying.
Sure, you can do anything with infinite time and money, but those can be quite prohibitive where the limitations are tens of millions of dollars and/or a years of regulatory hurdles.
I’ll give you an easy example:
I have maintained multimillion dollar surgical equipment that ran outdated versions of Windows. Even if you were an expert in all the required disciplines, You can’t change the software on the thing without recertifying the system, which is more expensive than buying a new one. (Not to mention that the organizations that use these devices aren’t credentialed to even begin that process) The only viable solution is to maintain it to the original specifications and implement appropriate security precautions until the useful end of life. There is literally no other workable scenario that isn’t laughably ridiculous.
You clearly dont understand that you dont get to make those decisions. Your users need software X to do Y as a business requirement. Are you going to tell them fuck off because you dont support windows? Sure, you could, once.
And no manager would ever okay someone writing a fuckton of driver shit or reverse engineering some protocols just so you can be high king and not use a specific OS.
Fact is business needs drive whats used, and you do not get a say in it, you might think you do, but you really dont. You can give information and options but ultimately it wont be your decision and youll support what the business needs you to support, or you wont be with the business anymore.
Yeah i agree vendors suck and so do license related shit, but you arent going to convince management that you could write a superior product AND support it for less than the cost the vendor would charge the company. And yes, this isnt always true, there are obviously some times when it is actually better to do it yourself, or use a foss solution. You still wont win in most cases. Users are going to use the thing they need and if youre blocking them from moving forward, youre more problem than the software youre trying to stop deployment of.
I'm sure you can rewrite every piece of professional software yourself in a day for $100 and offer zero support. That will go over swimmingly in the real world.
All these reasons suck, but they’re all reality in one industry or another sadly.