
Ask HN: Being told to support IE6, any advice? - Azeralthefallen
We use React + Material Design, one of our largest clients has basically told us they are going to drop us because the people who use our app are stuck on IE6, which we don&#x27;t support at all.<p>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.<p>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&#x27;t find anything.<p>Electron doesn&#x27;t work on Windows 2000, and no amount of tinkering with babel seems to make it work at all.
======
zenexer
I think you're out of luck. Hindsight is 20/20, but shouldn't their hardware
and software requirements have come up long before you started development?
How did you get to the point at which you were actively developing without
knowing your target environment, especially if you're on premise?

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.

~~~
Azeralthefallen
Honestly we told them our requirements well over a year ago. Which wasn't an
issue apparently, even when we did a pilot in their internal labs which they
were running Ubuntu.

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.

~~~
zenexer
I don't think you're going to be able to go the virtualization route with
Windows 2000 as the host. As the client, sure, but not as the host. You'd need
at least XP.

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?)

------
masiulis
You are definitely not out of luck, IE6 is not that bad, older React versions
even supported it. You just need more shims and more babel plugins, so get
someone who knows babel/ES3 well. Add the console shim and start working error
by error.

Also, you should ask this in a JS community, because in HN you will get way
too generic answers.

------
MatthewPhillips
Don't attempt to build a SPA if you are support browsers that old (even IE8
imo). Give them a traditional server-rendered app and they'll be happy.

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.

~~~
brudgers
Being on premises even mitigates two of the major tradeoffs with server side
rendering, latency and matching demand to computational power and bandwidth.

------
Barneyparker
The only real option you have is to rewrite in a server side stack, PHP for
example. IE6 isn't going to handle rehydration for SSR, and as you've
mentioned any form of virtualization is going to be far more painful than it's
worth.

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.

------
cimmanom
Can you build a Win2k-compatible wrapper for a modern Blink or WebKit
rendering engine?

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.

------
rmason
Is a Docker or a VM solution possible? I admit to not being very knowledgeable
here. If you can get a virtualized solution running a different version of
Windows (or Linux) on these machines just for your app.

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.

~~~
Azeralthefallen
That is something a coworker is looking into, the biggest problem is we are
expected to have ~5,000+ users of our app internally providing them all with
VM's is way beyond the scope of what we support.

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.

~~~
jackfraser
Consider perhaps a remote-terminal solution - in general I am against VDI and
Citrix and such, but maybe you can find a remote app delivery mechanism that
still has a Win2k client and can display the browser running remotely.

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.

------
martin-adams
I suspect this is going to be quite a painful thing to support. I’ve worked
with IE6 in the past and even if you do get the app compatible, and get your
CSS to render correctly, the JavaScript performance is dreadful. I used to
find that our Dojo application when working at IBM would gradually get slower
and slower without a page refresh.

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).

------
etaioinshrdlu
I am sorry to hear about this. Seems like modern browsers are very hard to
come by on such old platforms...

Idea 1: AWS Appstream
[https://aws.amazon.com/appstream2/pricing/?nc=sn&loc=4](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.

~~~
acemarke
Option 5: run for the hills screaming?

(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.

~~~
zenexer
Option 6 seems like the most viable to me, but it's still a long shot. If they
wanted to upgrade, they would've done that a long time ago. At the end of the
day, they don't want to upgrade. I'm sure they could get software that does
the same thing that runs on newer platforms if they cared enough.

~~~
Azeralthefallen
Afaik they cannot upgrade because they are heavily reliant on a specialized
piece of software that:

1\. Requires a dongle attached to a parallel port for it to function. 2\. The
company who made it went out of business over 15 years ago.

They have plans in the future to migrate to linux, but that isn't in the card
for a few years unfortunately.

~~~
zenexer
If the dongle is for licensing:

1\. You probably don't need it. I don't know about the legalities involved
here or what the specific license is, but there's probably a trivial way to
circumvent the hardware requirement, especially with a VM. Back when Windows
2000 was a thing, people were still using MD5, and nobody was using secure
elements. Worst case scenario, they've got some of the actual program logic on
there, and you'll have to either reverse it or replace it. Again, not
commenting on the legalities here, but seeing how the software was
(presumably) legally licensed and the company is long gone, it couldn't hurt
to ask the lawyers whether they think it's safe.

2\. You can pass a parallel port through to a VM if you really must.

------
embeddeddev123
Try using qt instead of electron... Qts 4.X webkit implementation is quite
powerful we use it in different embedded environments (including Windows CE)
you can write your own client, compile it with VS studio prior to 2008 and
profit :)

------
ksankaran3006
Actually, it’s pretty easy to convert into a server render with react. Just
try to write a new middleware, new App.js for IE6-9. Apart from css issues,
you’ll have zero js to execute on client.

------
heyjudy
Is the app used in third-world countries? IE6 is insecure and only used on
very old computers that can't install anything else.

I'd check that the requirement is valid before doing a bunch of work.

~~~
embeddeddev123
This setup is still the defacto standard in a lot of Factories in all
developed countries, you will also see quite a lot of PCs still running
Windows NT. If you have a production line the life expectancy is more than
20years with no need to upgrade anything including the hardware most of the
assembly lines are controlled with really old hardware usually the hardware...
The usual browser statistics do not reflect the corporate world they are some
years behind... Fun fact one of the biggest Ie11 users is Japan, a rather
developed country

------
CodeWitchBella
Can you make them buy some cheap android tablets and run your software on
them?

------
piratebroadcast
Anybody know if StimulusJS works on older browsers?

