The five platforms we have to cover when planning systems

May 20, 2025

Suppose, not entirely hypothetically, that you're going to need a 'VPN' system that authenticates through OIDC. What platforms do you need this VPN system to support? In our environment, the answer is that we have five platforms that we need to care about, and they're the obvious four plus one more: Windows, macOS, iOS, Android, and Linux.

We need to cover these five platforms because people here use our services from all of those platforms. Both Windows and macOS are popular on laptops (and desktops, which still linger around), and there's enough people who use Linux to be something we need to care about. On mobile devices (phones and tablets), obviously iOS and Android are the two big options, with people using either or both. We don't usually worry about the versions of Windows and macOS and suggest that people to stick to supported ones, but that may need to change with Windows 10.

Needing to support mobile devices unquestionably narrows our options for what we can use, at least in theory, because there are certain sorts of things you can semi-reasonably do on Linux, macOS, and Windows that are infeasible to do (at least for us) on mobile devices. But we have to support access to various of our services even on iOS and Android, which constrains us to certain sorts of solutions, and ideally ones that can deal with network interruptions (which are quite common on mobile devices in Toronto, as anyone who takes our subways is familiar with).

(And obviously it's easier for open source systems to support Linux, macOS, and Windows than it is for them to extend this support to Android and especially iOS. This extends to us patching and rebuilding them for local needs; with various modern languages, we can produce Windows or macOS binaries from modified open source projects. Not so much for mobile devices.)

In an ideal world it would be easy to find out the support matrix of platforms (and features) for any given project. In this world, the information can sometimes be obscure, especially for what features are supported on what platforms. One of my resolutions to myself is that when I find interesting projects but they seem to have platform limitations, I should note down where in their documentation they discuss this, so I can find it later to see if things have changed (or to discuss with people why certain projects might be troublesome).


Comments on this page:

Presumably for web browsers it would be: Chrome (and Edge?), Safari (iOS/macOS), and (perhaps?) Firefox.

By cks at 2025-05-21 15:11:53:

For the sites that my group works on, we don't do enough sophisticated web stuff that we need to worry about browser compatibility; any vaguely modern browser is good enough for our stuff. Probably it's not all that great on small mobile screens because that's not an area we have much exposure to.

For the department's public-facing sites in general, I don't know what browsers they worry about but I think that they probably do still worry about Firefox.

Written on 20 May 2025.
« Python, type hints, and feeling like they create a different language
Thinking about what you'd want in a modern simple web server »

Page tools: View Source, View Normal.
Search:
Login: Password:

Last modified: Tue May 20 23:33:52 2025
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.