Open vs Proprietary Standards
Reflections on the use of proprietary standards by Apple, Microsoft and others.
Apple gets a lot of flak for its use of proprietary standards whether that is the lightning connector or Metal for 3D graphics. This topic has arisen again due to Apple adding lots of specialized hardware to their Mac lineup which must be used through Apple APIs such as Core ML or Accelerate.
There are a lot of things to be said about this. I do wish that Apple had embraced USB-C rather than continue with lightening plugs e.g.
But my intention with this story is to reflect upon the merits of open and proprietary standards. When I began as a Linux user and later a Mac user I certainly felt the pain of the dominance of Microsoft proprietary standards. As a Linux user you could not easily interact with the rest of the world. Seemingly every written document passed around was written in Microsoft Word. A format which was not a standard anyone could implement until governments basically twisted Microsoft’s arm. In the early years, open source developers had to reverse engineer the format.
Just using the internet, supposedly multi-platform was not really possible from Linux and MacOS in the early years thanks to the dominance of ActiveX controls, Flash and all sorts of stuff only made to work with Internet Explorer.
Buy something like a modem and you would be out of luck to get it work on anything but Windows. I remember all the efforts it took to get ISDN modems to work on Linux boxes in the past.
Then there was games. Thanks to the dominance of DirectX, we got pretty much locked out of the gaming market too.
That the industry embraced standards such as HTML5 has certainly been a benefit to everyone.
At the same time I am not entirely convinced that propritary standards always need to be as bad as they where back in the late 1990s and early 2000s. The problem back then was the complete dominance of one company, Microsoft. Apple today e.g. is nowhere near that kind of dominance.
Today we see software released on Android, iOS and the Web. Basically have have gotten use to a world where companies are catering to multiple platforms rather than just one. Games are increasingly built using large engines such as Unity3D, Godot and UnrealEngine. Whether the platform uses DirectX, OpenGL or Metal starts to matter a lot less.
Benefits of Open Standards
Open standards are great because it allows us to more easily pick the system we like to work in. E.g. with standards like HTML5, I can use Safari, Chrome or even Edge as long as they follow that standard. Same deal with e-mail, I can use whatever email client I like.
I means I can buy a mouse or keyboard and put it into a computer regardless of whether it runs Linux, macOS or Windows.
Open standards means e.g. I could access a government site for health care, my internet bank etc regardless of what operating system I run. That is important.
Open standards means I could use whatever word processor I want without paying hundreds of dollars to buy e.g. Microsoft Office.
The Downside of Open Standards
All the benefits of open standards make it easy to get trapped into this argument that pretty much everything should be an open standard. Or rather that everybody should use the same standards. The problem with this is that we easily get locked into a world of least common denominator.
If every piece of software released was cross platform, by using the same APIs the whole point of having different platforms in the first place would large disappear. Using Linux, Windows or macOS should not be simply a fashion statement, where the only difference is the appearance of icons, color schemes and wind borders.
These operating systems offer different abilities, ways of doings things and standards that appeal to different sets of people. I like macOS because the software on it follows the guidelines set by Apple and the traditions that have developed on that platform on how we do things. If all my software was suddenly made identical to Windows software only with some slightly different color schemes and icons, then what would be the point of running macOS? You would be paying a premium price to get the exact same experience you could get on another platform at a much lower price.
I have spent years working with libraries for creating cross platform graphical user interfaces. Yet nothing has been as appealing as working with Apple’s Cocoa and GUI design tools. The rich and responsive user interfaces I could create could not be matched by other tools. I am not saying that is necessarily the case today. But the point is that at various juncture in time, the superior tools, library or software to use is not necessarily part of any open standard.
If everything is supposed to be built on a narrow set of open standards we easily end up in a sort of Soviet style bleak reality where one famously had only two types of kitchens to choose from.
Finding the Right Balance
The key is to find a sensible balance between open standards and proprietary ones. We need standards that make it easy for people on any platform to connect to the internet, be able to do banking, access government information, read a book or watch a movie.
I also think we need open standards which we can use things like images and documents. It must be easy to exchange written text and images between platforms. In many of these areas I think are mostly fine. We got standards for email as well as HTML5 through which we can push a lot of applications and content.
One fear however is that stuff like HTML5 has grown far too complex. Web browsers have developed into one of the most complex pieces of software that exists. Ideally think the world should have made a distinction between a standardized way of delivering text, images and audio and a method of delivering cross platform applications. Making this part of the same standard I think was a mistake. But we can live with what we got.
What remains a problem in my opinion is the dominance of Microsoft Word. There should have been a better and simpler standard for which people could easily exchange rich documents.
For graphical user interfaces I think having a diverse set of standards is actually preferable. We want to be able to have unique tailor made solutions in this area. Although I wish that GUIs had something akin to POSIX of OpenGL. That there was some kind of minimal GUI standard every platform promised to support. Then people could target this minimal standard if they where making software which absolutely had to be cross platform.
Alternatively you could think of it as HTML5. A GUI API standard that everybody implements.
I am okay with a similar approach to 3D graphics. Sure, have proprietary libraries like DirectX and Metal but at least make sure one open standard such as Vulkan is supported as well so that developers have the option to target multiple platforms easily. Some software does not need to be unique or different. It just needs to work on every platform.