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

Debanking (and Debunking?)

Crypto advocates kicked off a recent, somewhat politicized, discussion of debanking. Strap in for scintillating banking compliance trivia.

via Bits about Money December 9, 2024

Conjuring a Linux distribution out of thin air

I decided I had to get something with slightly more CPU power than my Thinkpad x230 for a few tasks so I got a refurbished x280, aside from the worse keyboard the laptop is pretty nice and light. It shipped with Windows of course so the first thing I did …

via BrixIT Blog December 7, 2024

Threads Won't Take You South of Market

In June 2023, when Threads announced their plans to federate with other Fediverse instances, there was a good deal of debate around whether smaller instances should allow federation or block it pre-emptively. As one of the admins of woof.group, I wrote ab…

via Aphyr: Posts December 1, 2024