Please add a warning for people that use old browsers. I am the admin of https://mastodon.utwente.nl. Our university's employees (unfortunately) mostly use Internet Explorer 11, which gives a blank screen after login (no graceful degradation to something simpler, no warning).
Because of this, I have many sign-ups without a single post, and people completely disappointed about Mastodon.
Same thing happens on old firefox versions. Discord has the same issue, both sites fail to load up to firefox version ~40.
Really, backwards compatibility to actually work with IE 11 - still a widely available and supported browser - may be a good idea.
However, I'd say that degradation to "your browser is not supported" is acceptable on Firefox 40 - IIRC 52 ESR is the oldest version that still receives security updates. (I'd prefer a simpler - maybe even zero JavaScript - front end to be available that would work on even very old browsers (as well as those of us that run modern browsers with JavaScript disabled), but it would be quite a bit of work for likely not much gain.)
Does anyone more familiar with the codebase have some info on what Mastodon is making use of that isn't IE11 compatible?
I see it uses Flexbox. That has fallbacks as far as IE10 (with the funky old syntax).
Websockets? Goes back to IE10 also. Doesn't support the optional compression extension (perframe-deflate) but big whoop.
IE11 supports only a small amount of ES6 natively but if you transpile down with Babel to ES5 you're fine.
Is it doing anything critical with Proxies/Symbols?
I agree with @bhtooefr that supporting old versions of "Evergreen" browsers like Firefox and Chrome isn't worthwhile.
Tried it in IE11. First error is Promise is undefined. So then you're not using babel-polyfill. You should be.
For code-size concerns, you can split your output in two with the type=module trick for including scripts. Modern browsers get the leaner package.
https://philipwalton.com/articles/deploying-es2015-code-in-production-today/
This is going to be supported natively in Babel 7, but you can do it already.
https://babeljs.io/blog/2018/06/26/on-consuming-and-publishing-es2015+-packages
(I'd prefer a simpler - maybe even zero JavaScript - front end to be available that would work on even very old browsers (as well as those of us that run modern browsers with JavaScript disabled), but it would be quite a bit of work for likely not much gain.)
Considering the new trends towards 1.- fixing or avoiding toolings that are privacy-invading or privacy-leaking, where JS is one of the most notable offenders and 2.- accessibility-aware designs, I'd totally see a low-JS or a zero-JS frontend as a worthy development. Just now Mastodon broke on all my browsers due to whatever is causing #13015 (which would likely not happen if the frontend was limited to Standard-Complying HTML+CSS) which literally leaves me outside the entire fediverse until I can find a CLI frontend or this is solved.
Considering the new trends towards 1.- fixing or avoiding toolings that are privacy-invading or privacy-leaking, where JS is one of the most notable offenders and 2.- accessibility-aware designs, I'd totally see a low-JS or a zero-JS frontend as a worthy development.
Let's be real, this won't happen. The only way you can make a refreshing feed of posts without JS would be to use a meta refresh tag with a reasonable timeout (60-120 seconds or so), encapsulate that in an iframe and make a second iframe with a toot submit form. There isn't another way, and I've been wondering about the issue of dynamic pages without JavaScript for months now.
This solution is anything but ideal (you can't preload older statuses, almost everything you click except for some cool CSS menus will trigger a request to the server AND a frame reload), and for software so heavily reliant on js as mastodon, I don't see how this could get merged into master.
Most helpful comment
Really, backwards compatibility to actually work with IE 11 - still a widely available and supported browser - may be a good idea.
However, I'd say that degradation to "your browser is not supported" is acceptable on Firefox 40 - IIRC 52 ESR is the oldest version that still receives security updates. (I'd prefer a simpler - maybe even zero JavaScript - front end to be available that would work on even very old browsers (as well as those of us that run modern browsers with JavaScript disabled), but it would be quite a bit of work for likely not much gain.)