Portability matters November 13, 2017 on Drew DeVault's blog

There are many kinds of “portability” in software. Portability refers to the relative ease of “porting” a piece of software to another system. That platform might be another operating system, another CPU architecture, another web browser, another filesystem… and so on. More portable software uses the limited subset of interfaces that are common between systems, and less portable software leverages interfaces specific to a particular system.

Some people think that portability isn’t very important, or don’t understand the degree to which it’s important. Some people might call their software portable if it works on Windows and macOS - they’re wrong. They might call their software portable if it works on Windows, macOS, and Linux - but they’re wrong, too. Supporting multiple systems does not necessarily make your software portable. What makes your software portable is standards.

The most important standard for software portability is POSIX, or the Portable Operating System Interface. Significant subsets of this standard are supported by many, many operating systems, including:

I could go on. Through these operating systems, you’re able to run POSIX compatible code on a large number of CPU architectures as well, such as:

Again, I could go on. Here’s the point: by supporting POSIX, your software runs on basically every system. That’s what it means to be portable - standards. So why is it important to support POSIX?

First of all, if you use POSIX then your software runs on just about anything, so lots of users will be available to you and it will work in a variety of situations. You get lots of platforms for free (or at least cheap). But more importantly, new platforms get your software for free, too.

The current market leaders are not the end-all-be-all of operating system design - far from it. What they have in their advantage is working well enough and being incubent. Windows, Linux, and macOS are still popular for the same reason that legislator you don’t like keeps getting elected! However, new operating systems have a fighting chance thanks to POSIX. All you have to do to make your OS viable is implement POSIX and you will immediately open up hundreds, if not thousands, of potential applications. Portability is important for innovation.

The same applies to other kinds of portability. Limiting yourself to standard browser features gives new browsers a chance. Implementing standard networking protocols allows you to interop with other platforms. I’d argue that failing to do this is unethical - it’s just another form of vendor lock-in. This is why Windows does not support POSIX.

This is also why I question niche programming languages like Rust when they claim to be suited to systems programming or even kernel development. That’s simply not true when they only run on a small handful of operating systems and CPU architectures. C runs on literally everything.

In conclusion: use standard interfaces for your software. That guy who wants to bring new life to that old VAX will thank you. The authors of servo thank you. You will thank you when your circumstances change in 5 years.

Articles from blogs I read Generated by openring

On how to enhance Alpine Linux user experience

Very recently I had the need for a watch-party solution. Syncplay seems a formidable tool for this. It allows me and my partner to watch videos from our respective Mpv players. Fortunately it was already packaged for our Linux distribution, formerly Alpin…

via Willow's feed October 19, 2025

Using a Blackmagic Design camera as wildlife camera

The sane solution to capturing wildlife going through your garden is to use a dedicated wildlife camera. In my experience these things are pretty much always trash. The devices I've seen are all basically cheap dash-cam boards that happen to have moti…

via BrixIT Blog October 17, 2025

Geoblocking Multiple Localities With Nginx

A few months back I wound up concluding, based on conversations with Ofcom, that aphyr.com might be illegal in the UK due to the UK Online Safety Act. I wrote a short tutorial on geoblocking a single country using Nginx on Debian. Now Mississippi’s 2024 HB…

via Aphyr: Posts October 11, 2025