-
-
Notifications
You must be signed in to change notification settings - Fork 56
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Define Client Support strategy #1029
Comments
I strongly support this. Even quite recent browsers fail with Kiwix Serve because of the use of advanced JS without consideration for browser support. An example is the use of We (belatedly) transitioned from JQuery to transpiling with Babel over at KJS several months ago, and we don't find it intrusive at all. Testing can still be done on untranspiled code (and we work a lot that way), and then you just do something like |
I propose to move forward on this with Browserlist I understand that:
But it is done like this because:
|
I think the problem with A more representative list might be If you want to do automated testing of the library.kiwix.org UI via BrowserStack's API (I do this for KJS browser extension with Selenium WebDriver), then you have to declare the specific browser versions to run each test on. In practice, that's your supported browser list. Tests would need to include downloading a small ZIM, EDIT: BrowserStack only has macOS, iOS, Android and Windows (XP-11) as testing platforms for browsers (these are invoked from a Linux runner on GitHub). It doesn't provide a testing platform for browsers on Linux, but I'm not aware of any major browser version that works differently on Linux than on the other platforms. At KJS, we do automated testing of recent Linux builds of Firefox and Chrome directly on GitHub's Linux VMs, which provides some assurance there. |
@Jaifroid This list has a few browsers I don't really know and don't know how to clearly test automatically. Do you? |
I checked the funny Android ones, and they're all using Chromium, so testing could be sort-of covered by a test on Chrome on Android. However, as I mentioned, IMHO it might be simpler (and easier to test) if we didn't try to use a moving target, and simply decided to support, officially, Chromium >= 80, Firefox >= 70 and Safari >= 14 (those are just suggestions based on my support experience in KJS and on what I believe the main blockers are currently that were revealed in KJS testing and would need fixing to support these versions). Incidentally, library.kiwix.org works on a recent Samsung Internet (I tested it manually, though it can be tested on BrowserStack automatically). |
Ooh, I forgot we already fixed #1051, so that should make it even easier to hit suggested browsers. |
From my perspective, before defining the details, we need to define the objective. What do we want to do? From my PoV, we want to support as many mainstream browsers as possible AND as many versions of these browsers as possible. As possible could be rephrased "as reasonable given our constraints". And this is true for kiwix-serve, but this is also true for scrapers (even if it will be even harder to enforce compliance for some of them like zimit). We should hence move this issue to openzim/overview from my perspective. If we agree on that, it means that we have to define:
In term of mainstream browsers, I think it is mandatory to cover desktops, phones and tablets. In term of versions, I think it is mandatory to express it in terms of "oldest supported version" for simplicity, and to make it clear that it doesn't necessarily implies that all browsers versions from this oldest supported version till now will work, since there are obviously some bugs in all browsers in the wild. We will inevitably encounter some buggy browser versions and we don't expect to make much effort to support them. This means that we do not really care about the most recent browser versions (especially since what is reported on browserlist stats are "online" browsers reporting telemetry, so again not our core public). This is kinda problematic since devs are usually working on these most recent versions. It means that we need a solution for developers and testers to work on these "ancient" versions so that we do not have wait for user feedback to identify issues. The list of mainstream browsers and minimum support versions can then be reviewed once in a while when we realize that the list of browsers is not accurate anymore or that the minimum supported versions is causing too much trouble. |
@benoit74 I agree. It seems that we're currently in a quite a good place, because after #1051, some quite old browsers are already supported. I tested library.kiwix.org on Safari 14 on macOS (Big Sur) and iOS (an old BrowserStack iPad) yesterday during final testing for a PR on KJS, and it works fine for everything important. The only thing that appeared not to work was getting a Incidentally, a lot of inline JS is used in https://library.kiwix.org, which is blocked in a local Chrome Browser Extension. I'll open a separate issue for that. (We fall back to https://download.kiwix.org in KJS in such cases.) |
@Jaifroid @benoit74 From your discussion it is not clear what is the alternative to Browserlist For the moment, I'm ready to:
|
The version you suggest, @kelson42, provides only 81.8% worldwide coverage and less than 80% in China, United States, Germany, Canada, Australia. An automated alternative I would suggest is: Advantages:
Of course, we'd need to be sure Kiwix Serve can in fact be used in these browsers currently (with the polyfills). |
@Jaifroid Is that testable with Browseratack? This is not a Christmas wishlist, it has to be doable in a reasonable effort. |
Browseratack reads hilariously ambiguous 😃 |
Yes, all of those have BrowserStack versions. I don't see anything Christmasy about that list...! |
Following #1010 ; as kiwix-serve is meant to be used on non-evolving environments, I think we should have a clear support strategy. It's kinda bad that such an essential piece of our tool-chain has no clear target and no policy/process in terms of client support.
There are many ways to proceed of course:
IMO, the most practical thing from where we are now is to add eslint-plugin-compat to our CI (and developers' setup)
The text was updated successfully, but these errors were encountered: