Hi! Yes Mozilla approached WA (talks were held with Brian Acton if I remember correctly). We tried various workarounds:
- 3rd party clients. That worked initially, but WA was quite aggressive in breaking them, and once e2ee was added they stopped working.
- we wrote a j2me VM in Javascript (https://github.com/mozilla/pluotsorbet) to run the S40 version :) Perf was not good enough when dealing with java threads.
- we collaborated with a company (OpenMobile) to run the Android app in a container, rendering in a DOM element. That was a pain in term of OS integration, and OpenMobile finally didn't get the distribution agreement from WA.
I implemented the KaiOS additional APIs, basically exposing a subset of libsignal. You're right that there are missing pieces in the web stack for these apps - it's very frustrating that you can't rely on WebCrypto for all the e2ee. Let's hope WebAssembly will fix that!
> - 3rd party clients. That worked initially, but WA was quite aggressive in breaking them, and once e2ee was added they stopped working.
Yeah, that happened. :/ I was mostly in favor of a light touch, but e2ee would have been a hard cutoff anyway, and we didn't have the desire to make a compliance program for 3rd party clients, so they just got the boot whenever they caused inconvenience. There would usually be a flurry of activity around individual changes, but afaik, third parties saw the writing on the wall when e2ee started showing up.
> - we wrote a j2me VM in Javascript (https://github.com/mozilla/pluotsorbet) to run the S40 version :) Perf was not good enough when dealing with java threads.
Wow, that's impressive! (and kind of terrible!) Were you able to leverage this for other things, I hope?
> - we collaborated with a company (OpenMobile) to run the Android app in a container, rendering in a DOM element. That was a pain in term of OS integration, and OpenMobile finally didn't get the distribution agreement from WA.
I was unaware of this. That's interesting to hear about. I think you're right from your earlier post, that user count would have pushed WA the other way, and that lack of WA support made it harder to get user count. Samsung (Tizen) and Jio (KaiOS) got WA to make clients by subsidizing handsets and leveraging user counts / other business relations; s40 got a client because Nokia was clearly going to sell at least a few million of them (s40 predates WA, of course, but the earlier ones never ran WA); same with WP7, although no client until 7.5, because the platform was missing pieces.
WebOS didn't get a client because the platform was missing pieces and didn't survive long enough to add them (lack of WA support wasn't really an issue, given the timing). MeeGo didn't get a client because Nokia cancelled the N9 before they launched it, and limited the release.
- 3rd party clients. That worked initially, but WA was quite aggressive in breaking them, and once e2ee was added they stopped working.
- we wrote a j2me VM in Javascript (https://github.com/mozilla/pluotsorbet) to run the S40 version :) Perf was not good enough when dealing with java threads.
- we collaborated with a company (OpenMobile) to run the Android app in a container, rendering in a DOM element. That was a pain in term of OS integration, and OpenMobile finally didn't get the distribution agreement from WA.
I implemented the KaiOS additional APIs, basically exposing a subset of libsignal. You're right that there are missing pieces in the web stack for these apps - it's very frustrating that you can't rely on WebCrypto for all the e2ee. Let's hope WebAssembly will fix that!