Viewing a single comment thread. View all comments

AidanAmerica t1_j5x6ex7 wrote

I’ve always been interested in this type of thing as a type of modern day history. It’s fascinating to see how people solved all kinds of little problems to put together the modern world. The history of Unix has as much engineering effort for multiple moon landings, along with b-plots of intense business pressures, a weirdly large amount of government influence, and intense interpersonal political intrigue.

The closest thing to a universal language for Unix would be the Single Unix Specification. I’m not familiar enough to say if there’s some programming language that can be turned into a compatible app for any Unix-derived system, but the practical answer is more political than technical. That specification came about because there were multiple similar, but different and incompatible versions of Unix on the market. The US government adopted a regulation that they would only buy software that met this new standard, so anyone who wanted to go for a lucrative DoD contract needed to meet that standard. (In a surprise twist, though, Microsoft talked the government into buying their software that was a totally different breed from anything that would meet the standard). That standard still exists, though, and it’s regularly updated. A consortium that acquired the legal rights to Unix from AT&T is responsible for maintaining that standard, and they certify operating systems as compliant. If an OS is derived from the Unix lineage, but not compliant with the SUS[^sus], then they can’t use the Unix name since it’s copyrighted. Those are usually described as Unix-Like, because for some reason that’s legally distinct enough. A few years ago, Apple made a few changes macOS so it could get Unix certification. I assume they also had to pay for that.

Working developers likely know a few popular programming languages. If they want to write software for an OS, they need to find a “compiler,” an application which takes the code, written in the language of the programmer’s choice, and outputs a finished, functional application.[^I don’t code, so if there’s any place I’m getting a small detail wrong, it’s here. ] If you want that application to run on an iPhone, for example, you need to follow Apple’s rules and go through their approval and certification process. Apple made the iPhone’s operating system by building it on top of a Unix-derived free operating system, but they’re allowed and able to put their non-free licenses and terms on top of that free foundation.

A totally free operating system — for example, Debian Linux — isn’t made by a group that uses their legal rights to keep their software locked down in that way. What’s interesting about projects like those is that they’re equally, if not more, innovative in their legal and social philosophy as they are in their technical design. These are projects run by volunteers online who vote democratically to decide how the project should be run. It’s guided by a constitution and social contract that outline, among other things, the process to propose and approve changes to the OS, a stipulation that the OS will always be free, that they’ll always make both the source code (the kit with parts and instructions) and the final product openly and freely available, and that it won’t come with any software that doesn’t abide by those same open and free terms. These Unix-derivative projects compete more on licensing terms, philosophy, and what to prioritize as their focus than on technical differences. People debate these things online in their free time like software rabbis. There wouldn’t be room to debate those types of questions if the most important technical questions hadn’t largely been answered by AT&T (and all the other contributors) over the last few decades. If someone doesn’t like the way the Debian project is answering the philosophical questions, they can go look at some other group’s Unix-like OS, or even take the source code and make their own.

So, to answer your question: there are many standard and well-known languages that can be used to write software that is technically capable of being run on any Unix-derived operating system, but whether or not it does run is more a question of whether or not the people who make the operating system decide they want to let it run.

And, again, Windows is its own lineage. A developer who knows one of those common programming languages can find a compiler to make a working app for Windows just as they could for any other OS, but that’s because Microsoft puts its significant resources behind making it easy to make software for Windows, and easy for users to get a computer that runs Windows. Apple does the same for their operating systems. Microsoft (like Apple or any company in a similarly market-dominant position) has a sales staff that convinces companies to buy their software because those companies know it’ll be warrantied by Microsoft, a big name they trust. If you’re the one tasked with buying new software for the whole company, are you going to have the company spend a few thousand dollars to buy Microsoft’s offering, or are you going to gamble your career on the free option? If that turns out to be a dud, even if only because the new software looks scary and different, you’re to blame. That’s essentially why Windows still exists as a distinct breed: Microsoft is the only company uniquely positioned so that it’s cheaper and less risky for them to stick with their own thing than to build off of what’s long been freely available.

Oops, I wrote a blog post again.

2