Slashdot Mirror


Ask Slashdot: What Would Happen If All Software Ran On All Platforms?

Slashdot reader dryriver writes: We live in a computing world where the OS you use -- Windows, OS X, Linux, Android, iOS, others -- often determines what software can and cannot be run on a given electronic device. (Let us pretend for a moment that emulators and other options don't exist). What if -- magically -- such a thing as as Universally Compatible Software Application were possible. Software, in other words, that is magically capable of running on any electronic device equipped with enough CPU, GPU and memory capacity to run the software in a usable way.

Example: 3D CAD software that runs on Windows 14, Playstation 7, an Android Smartphone, Nintendo's latest handheld gaming device and an Ubuntu PC in exactly the same way with no compatibility problems whatsoever occurring. What would and would not change in such a computing world?

He also asks an even more important question: will this ever be possible or feasible from a technical standpoint? So leave your best answers in the comments. Will it ever be possible to run all software on all platforms -- and what would happen if we could?

3 of 383 comments (clear)

  1. Dependencies by Kjella · · Score: 4, Informative

    If you look at new versions of Windows/OS X/Linux, you get new APIs like UWP, DirectX 12, Xcode, Metal, systemd, Vulkan and so on. The only way "everything could run on everything" would be if every OS-level API was available on every platform. And that closed source software is compiled for every instruction set, but I'll assume they'd do that. In theory it's not hard, it's just making a free cross-platform standard like POSIX or Java or Vulkan. That however ignores the practical reality that these companies are competing. They don't want to comply with a standard if they can make more money if they don't by adding more features or being more flexible to change or simply to not be compatible.

    That the standard is there also doesn't mean the resources to implement it will be there. For example, for a long time Mesa's OpenGL implementation was ~5 years behind the latest official version. Now it has caught up but it didn't happen by itself, only through big resources from Intel and to a lesser degree AMD. The WINE project can read the programming API for DirectX, doesn't mean a compliant implementation will appear from nowhere. And sometimes there's plain old disagreement like when Google forked the Linux kernel to do wakelocks or the systemd vs non-systemd debacle. So in practice it's pretty hard.

    That said, to shine some light in an otherwise glum post it usually converges slowly once the API is sufficiently settled. For example take USB device classes, it standardized many common hardware devices to the OS. If you don't have lots of vendor-specific parameters to set the user API can be standard too. This is a keyboard, this is a mouse, this is a memory stick etc. and you don't need a specific driver for every piece of hardware. You have libraries like Qt too, write towards it and it should run on Windows/Mac/Linux. Containers and such might also make it easier, heck doing a web application is a common way to make it run everywhere... it's happening in many ways but it'll still take decades.

    --
    Live today, because you never know what tomorrow brings
  2. Web v3 by Anonymous Coward · · Score: 2, Informative

    The W3C and others have done a great job of providing solutions like WebCL, WebAL, WebGL, Canvas, WebAssembly, etc...

    We have a platform which is able to be used to make universal applications so long as the browsers support it. Web browsers are pretty close to being universal as well now that most browsers use the same core engines and only Apple seems to be dragging their feet.

    Many projects are getting better at offering development tools which suck less for HTML5 applications.

    Once we get a tool like Qt for web apps, it will become normal to program for web first.

    HTML, CSS and JavaScript are fantastic but they don't lend well to application development. More technology is introduced all the time to move away from coding directly for these systems and instead can compile from more structured systems. A good early attempt for example is PowerBasic which makes writing real applications that run everywhere easy. Sadly, the user experience is quite bad. But it's a great start.

  3. Re:What would happen? by Eravnrekaree · · Score: 3, Informative

    As far as source code goes, the mainframe era was sort of open source, they made their money on hardware and did not copyright the OS, that changed when OS/Hardware mandatory bundling was banned and third party OSs entered the fray. IBM stopped making copyright free MVS around 1980, you can still run the "open source" MVS version 3.8J, the last copyright free version, as Turnkey MVS (Tk3 or Tk4) today on Hercules. It was the shift that happened in the 70s and 80s to closed source that spawned GNU.