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?

9 of 383 comments (clear)

  1. Java by Erik+Hensema · · Score: 5, Insightful

    We've already got that. It's called Java.

    --

    This is your sig. There are thousands more, but this one is yours.

    1. Re:Java by Wootery · · Score: 4, Interesting

      I was thinking the web. Gmail is the same on every browser, every OS.

      In my opinion though Java, and multi-platform frameworks like Qt, do a better job than the cynics are willing to admit.

    2. Re:Java by TheRaven64 · · Score: 4, Insightful

      And Java is also a good example of why it's a terrible idea. If your software runs on all platforms then it's limited to supporting the intersection of all of the features that those platforms support. For GUI software (if you want to be running exactly the same software on all platforms) it's also limited to respecting the human interface guidelines of at most one platform. This makes it particularly jarring to use on others. It's easy to fix the superficial things (dialog box buttons in the native order, menu in the correct location, and so on), but a lot of more subtle things (modal vs non-modal dialog boxes, apply settings as they're changed vs okay / cancel buttons and so on) are much harder to automatically translate.

      --
      I am TheRaven on Soylent News
    3. Re:Java by 605dave · · Score: 4, Insightful

      That's why it's called Write Once, Debug Everywhere!

      I was involved in a major open source project using a cross platform solution, XULrunner. I have also worked with Java apps for many years. Neither has made me want to give up native solutions. All the little details you mention are why these things don't work. Well, up until now. You need a cross platform language and a universal API as well. And although you may get the languages, I've never seen the API

      --
      Be kind, for everyone you meet is fighting a difficult battle. - Plato
  2. The following would happen: by Ihlosi · · Score: 5, Insightful
    Some manufacturer makes an device that is incompatible to the universal software ecosystem, but cheaper/faster/better/better marketed.

    And the situation is back to the current state.

  3. The problem... by Yaztromo · · Score: 5, Insightful

    The problem with something like this always comes down to the fact that applications have to be coded to the lowest-common denominator of functionality of all platforms. That's the situation both Java and Web apps tend to find themselves in.

    Does your OS have some cool notifications subsystem that other platforms don't have? The universal app can't use it (or if it does only for those platforms that support it, it's hardly running identically on every platform anymore). Or how about if your hardware has something fancy like Apple's new Touch Bar? Can't use that either.

    This is the problem we always see with desktop Java applications. They can typically do well with the basics, but if you want to tie-in to some stand-out feature that isn't available on every platform, you're generally SOL (unless you want to rely on JNI, and perhaps filling in missing functionality on other platforms with custom native libraries I suppose -- but again, that's not exactly cross-platform code, and requires a ton more work.). With web apps we see a similar issue; you're constrained by what the various standards allow, and can only escape that with plug-ins.

    We also see this in the video game console world. Sony did some really cool things with the PlayStation 4, like adding the touchpad to the controller, the programmable-colour LED array on the back of each controller, and the second screen functionality that allows you to use a tablet or phone as a wireless secondary information display. Unfortunately, most cross-platform games tend to ignore these features (to varying degrees), as they're simply not available on the PC or Xbox One.

    In the world you describe, there really wouldn't be any ability for anyone to stand above the crowd with new special OS or even hardware features (beyond maybe some low-level performance tweaks), because as soon as you did so, you would be incompatible, and either nobody would use it, or you'd have to permit all of your competitors to also implement your new feature.

    This reminds me somewhat of the following example: OS/2 ran Windows 3.x programs better than Windows 3.x did. It could pre-emptively multitask Windows 3.1 applications at a time when Windows itself couldn't, and a single errant Windows application could bring down the whole system, or fail to yield() and simply take up all the processing time for itself. Because of this, too many big development companies simply targeted the lowest-common denominator and wrote Windows 3.1 code for use on OS/2 (WordPerfect is a great example -- they went out of their way to tout OS/2 compatibility, but in reality their OS/2 version was the Windows 3.1 version with some OS/2 templates and WPS integration tools slapped on top of it). And we all know what happened to OS/2 (or I suppose I presume we all know -- I guess you could be 16 or 17 years old and not know what happened back then. When did I start getting so damned old???)

    Yaz

  4. Dear god why? by Anonymous Coward · · Score: 5, Insightful

    I've been doing web stuff for a decade, pretty much since the whole Web 2.0 thing was a fad. It pays the bills, but I always ask myself: why are we doing this to ourselves? HTML was originally a document format, not an application framework, and dear god does it show. From the kludges that we tacked on to maintain state to the horrifically bad data serialization/transfer methods. All of this stuff was solved decades ago with simple network aware applications. Yet here we are in a world where PHP, of all things, is one of the best programming languages for networked applications for the simple fact that its built-in comparison operators map so well to the (equally crappy) HTTP variables.

    I don't know how to get out of this trap, but dear lord I wish somebody would figure it out.

  5. 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
  6. Stupid idea by treczoks · · Score: 4, Insightful

    Sorry, it may sound a bit harsh, but this *is* a stupid idea. Different platforms have different abilities and are built and designed for different purposes.

    To accomplish a "works everywhere" approach, every platform would have to have all abilities. To use the phone app on your desktop PC, it would need the proper hardware. How much sense would that make? Or a GPS in the same desktop system? Likewise, how do you put a quad-output video card into a mobile phone?

    This is a pipe dream of people who only work with software, and totally forget that it needs hardware to run on.