When we talk about “cross-platform” software, we necessarily invoke the idea that there are software platforms. What are they? Do they really exist?
In a business context, a platform is a business model where a company acts as a broker between suppliers and customers engaging in another transaction, taking a fee for the service. A recruitment consultancy connects suppliers (people who want jobs) to customers (employers), and is therefore a platform business. A marketplace provides a platform for vendors to sell goods to buyers.
In this sense, no computing “platform” was a platform until the arrival of the app store business model. Niche platforms like the third-party Electronic AppWrapper for NeXTSTEP took early advantage of the Internet as a distribution platform for software. In a certain sense, shareware libraries like Aminet or Info-Mac were platforms, and of course pre-empted the “free to use, pay to unlock features” model popular today, but typically these didn’t act like intermediaries or brokers in the strict sense of a platform business. A developer (or somebody else) would put their software into the catalogue, which users would know they could search for interesting software, but that transaction would take place away from the platform.
Another sense for the word “platform” in computing is software that exists to make it easier to write other software. Often, this type of platform is run by a company with a multi-sided business model. Take a company like Microsoft. The “platform” is the operating system services, APIs, database and web server, and other components that they sell to developers alongside access to documentation, technical support, and the rest of the MSDN. In revenue terms, this is small fry when compared with the main business: licensing their software to end users.
In some pedantic sense, the two businesses are loosely coupled. You could pay for access to the MSDN, then make the software you write exclusively available on ReactOS to people who haven’t bought Microsoft licenses. Or you could buy Windows and Office, but only use third-party software developed for the web or using Cygwin. In practice, of course, these situations are rare, and Microsoft maintains the software “platform” to increase the benfits to customers of their licence-selling business. Buy limited rights to use this software, and also get access to all this other software! Then the proposition to developers is “use our technologies and interfaces, and also get access to all these customers!” It starts to look like a platform again.
The true—and narrow—platform aspect of their business, Microsoft’s Windows Store online marketplace, is a second-level epicycle in this hierarchy of ever-shrinking business models. In acknowledging the connective nature of the multi-sided structure described above, vendor app stores represent an attempt to enclose, control, and take a cut from the existing unstructured software distribution that was already taking place.
Thus we find that supposed “cross-platform frameworks” are actually (software, if not business) platforms in their own right. Taking, say, Qt, Delphi, or Electron, the platform is the software that makes it easier to write your own software. One of the benefits of these platforms is that you can reach customers who bought their computers and operating systems from multiple vendors. Or, to put it another way, customers of your software are not limited to a particular choice of hardware or operating system. The direction in which you take this relationship depends on whether your software is more or less valuable than the computer it runs on. Of course, this isn’t binary: you could write an app using vendor tools then port those tools to other vendor software, or you could write an app using cross-vendor tools then only sell it to one vendor’s customers.
The cross-vendor platforms represent a threat to the multi-sided business model of the giant companies, who realise that when computers and operating systems become commoditised, their margins will shrink. Thus is invented the “look and feel” argument, which says that the important property of, say, a project planning application running on a Mac is whether it is like other Mac software, and not whether it is a good project planner. That the particular poor choices made by this vendor (putting the controls for “close tab” and “quit application” next to each other, for example) are less bad than the particular poor choices made by the other vendor (putting process control and UI commands on the same modifier key, for example).
The best place for a software business along the platform/vendor continuum is both highly subjective and context-dependent, but exploring the ideas behind “computing platforms” provides more options to consider.