This never came up anytime before, or during the pilot. This only came out as we started to roll out to one of their offices.
Their primary workstations are stuck on a version of Windows 2000, because their primary workflow applications do not run on anything more modern. We are on premise for them, so i can make a special build if needed. Any suggestions or ideas? I looked and dug around and can't find anything.
Electron doesn't work on Windows 2000, and no amount of tinkering with babel seems to make it work at all.
At first I wrote a response suggesting a few ways you might be able to get it working on older versions of Windows, but they're just not feasible for anything prior to XP. Possible? Probably, but more work than rewriting everything, most likely.
You might be able to convince them to upgrade and virtualize their Windows 2000 programs--heck, you might even be able to get away with using DOSBox. That seems a lot more realistic than virtualizing Linux or a newer version of Windows on Windows 2000. But I wouldn't get your hopes up--anyone still on Windows 2000 is going to object heavily to upgrading; that's why they're still on Windows 2000. You can eliminate all the barriers for them and they still won't want to do it.
Edit: This might sound crazy, but have you looked into whether it's possible to make some changes to Electron to get it to run on Windows 2000? It's designed to be portable, so, in theory, you should be able to get it to run on a potato--assuming said potato has enough RAM.
It only came up after we started the rollout, when someone from their side who was asked to write documentation about how our app would work into their workflow, realized our app didn't work at all on his station. Which lead to oh no their requirements are horribly wrong.
To me it was a communication breakdown on both sides, but i doubt i can get them to change.
I am going to give getting electron built in Virtual Box and see if i have any luck with it.
For many contractors, Windows 2000 as a requirement would be a red flag--decline the contract and run the other way, because that's just where it starts. Chances are you're looking at the tip of the iceberg.
Since you're already committed, though, your focus should probably be on pushing them to upgrade whatever they can. It's a lot easier to run old software on new platforms than the other way around. Whatever ancient programs they want to run, they can do it on newer versions of Windows--there's guaranteed to be a way, and it'll be a lot easier than getting a modern application running on Windows 2000. Lots of people want to run old programs on new computers. Nobody wants to run new programs on old computers.
Edit: To clarify, there are great programs like DOSBox that will let you run old programs you wouldn't normally be able to run on new versions of Windows. DOSBox targets a specific niche, but it works well, and the concept is quite prevalent: people want a way to run their old programs, even if it's just for nostalgia. I would bet my life on it being significantly easier to run their specialized software on a newer version of Windows, even if it's in a VM. (Or, heck, what about WINE, since they have Ubuntu?)
Also, you should ask this in a JS community, because in HN you will get way too generic answers.
Since you've already built with React, the good news is that it's easy to build a React app that you deploy as a server-rendered app. Just make sure you are doing things in normal HTML, like forms, and not relying on xhr/fetch.
It's entirely doable, the big question is - do you really want to? If this is genuinely the clients fault for not providing the IE6 requirement and asking you to work with a QA team using Ubuntu, then the costs should be covered by them. Potentially though, if the client is important enough to you, you may need to make a reduced rate offer or even take the hit yourselves. Whatever you choose, seeking legal advise may be a wise move.
And man, why aren’t they at least on WinXP?
You may have room to make an argument that this compatibility should be implemented in a separate contract/extension (that is, at extra cost) since compatibility with 20-year-old software that even MS no longer supports is not something that a vendor should reasonably expect as a requirement without it being explicitly brought up from the beginning. You may want to consult a lawyer.
Either that or it's rebuild the app using jQuery and an earlier version of Bootstrap. For an alterative for Electron you can look into LibUI plus LibUI-Node.
Even getting our app running on premise was a nightmare, and resulted in us just buying a rack mount and having them put it inside their DC, after everything they gave us was pretty awful.
There are X11 servers for Windows that might be able to run Electron off a remote Linux machine, though watch out for problems with opening files and copy/paste.
I’d consider doing some static rendering from React components then fallback to a simpler client interaction. Alternatively let the client go and waste the engineering efforts of your competitor (I appreciate that may not be an option).
Idea 1: AWS Appstream https://aws.amazon.com/appstream2/pricing/?nc=sn&loc=4
Idea 2: VNC to something else on premise
Idea 3: Run the app inside Linux inside QEMU (or another emulator)
Idea 4: Write your web app like its 1999
I think Idea 3 may be best for this case.
(Only half-joking here. I know it sounds like it's an important client, but it seems as if there was a serious breakdown in communications on the client's part, _and_ they're stuck on obsolete technology. These are not realistic requirements.)
I suppose option 6 would be to figure out how to get the client to upgrade their systems to a modern hardware and OS, and then run the old software in a VM instead.
Idea 2: Not viable due to the sheer number of users most likely.
Idea 3: We tried to get virtualbox to run on their machines, which we found most only have a ~4 GB of ram and it makes hosting an entire other OS a very painful experience.
Idea 4: Looks more and more likely. :(
I'd check that the requirement is valid before doing a bunch of work.
Unfortunately this is basically what i am dealt with and i don't have any real options of changing the environment.