Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!


Forgot your password?
Emulation (Games)

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

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?
This discussion has been archived. No new comments can be posted.

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

Comments Filter:
  • Java (Score:5, Insightful)

    by Erik Hensema ( 12898 ) on Monday March 06, 2017 @04:47AM (#53983523) Homepage
    We've already got that. It's called Java.
    • Re: Java (Score:3, Interesting)

      by Anonymous Coward

      This is the answer I was going to post, and is our current best bet for achieving what OP wants. Now if the Java VM's were opened up and had heavy optimizations for each platform this would be good stuff. I don't see this happening though, Oracle and all..

      • Java? LOL! Good luck with that.

        I'm currently writing a 3D CAD platform that runs on all devices (Windows, Mac, Android, iOS) and it isn't using Java.

      • The Java VMs have been waiting for "Heavy optimizations" since 2001. Still on the platform, waiting for a train that will never come.

    • by fisted ( 2295862 )

      Java software runs on just one platform. That's far from a "Universally Compatible Software Application [...] 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".

    • Re:Java (Score:5, Interesting)

      by Wootery ( 1087023 ) on Monday March 06, 2017 @05:40AM (#53983691)

      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.

      • by cdrudge ( 68377 )

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

        But it's not. Gmail on Chrome allows you to drag and drop attachments to the desktop. FF and IE on Windows don't support that feature. I'm sure there are many other little things that aren't part of the core functionality that are different. It was just one example that disproved that they are all the same.

        Different browsers support different features, and that's not even before considering all the CSS styling that is just slightly differe

    • Re:Java (Score:5, Insightful)

      by TheRaven64 ( 641858 ) on Monday March 06, 2017 @05:48AM (#53983725) Journal
      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.
      • Re:Java (Score:5, Insightful)

        by 605dave ( 722736 ) on Monday March 06, 2017 @07:03AM (#53983983) Homepage

        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

        • Re:Java (Score:4, Interesting)

          by StormReaver ( 59959 ) on Monday March 06, 2017 @08:41AM (#53984265)

          I'm just going to address the Java aspect of your posting.

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

          I think this is just an attempt at humor, as it does not in any way, shape, or form reflect my experiences in my 18 years of Java programming. Native programming is: write once, debug forever, write again, debug forever again, ad-naseum. Switch platforms, and repeat. I've been doing this for 32 years, and the experience hasn't improved much over that time.

          Neither has made me want to give up native solutions.

          Java + Netbeans has been such a good experience for me that I cringe whenever I think about doing something natively. Whether it's Windows* (which is so especially cringe-worthy, there is no exaggeration in any language, human, computer, or alien that can adequately convey it) or Linux, programming in Java is several orders of magnitude more pleasant.

          My Java/Swing software runs on both Linux and Windows with no additional effort. By far, the largest pain in the ass in distributing my Java programs is dealing with the brain disease that is Java's minimum and maximum memory usage. This exists to reign in applet memory issues, and is completely and utterly retarded for desktop software. Aside from that, write once, run anywhere has been an apt description of my process.

          Native programming has exactly two benefits over Java:

          1) Raw speed. For speed critical apps, native programs usually win by significant margins. However, most programs are not bound by speed requirements. Most programs spend most of their time waiting. And Java can wait just as fast as a native program. And for *most* application needs, the speed difference is negligible.

          2) Special needs. Java supports the intersection of the capabilities of all the platforms it supports. Things like scanning, though, are not standardized across platforms to the point that Sun/Oracle want to support it. Most of these things, though, are addressable far more easily than Oracle would like to admit. So most of the time, it's not a significant issue.

          * KDE comes close, though, as the enormous number of hoops that must be jumped through to get even a simple KDE development environment in place is quite unpleasant.

        • The API approach taken by Qt gets this somewhat better than Java. Setting up Qt support in a new environment is quite a pain, but once it's done, you get executables that actually run just about the same in multiple environments. Java, I'm always having to tweak the JVM on the target machine - wrong version of this, missing that, outdated, no longer supported, blocked for security concerns, etc.

      • by l20502 ( 4813775 )

        it's also limited to respecting the human interface guidelines of at most one platform

        At least it can't be worse than Gnome3 or windows 8/10

      • Re: (Score:3, Interesting)

        by AmiMoJo ( 196126 )

        Sometimes less is better though. Take web apps, the refusal by other browsers to adopt batshit stuff like ActiveX, or one major vendor dropping support for some technology that is used to spy on users, benefits everyone.

        Even more interesting is that people will happily trade usability for convenience. A lot of web apps are shitty, they break if you use the back button, the UI is entirely custom and ignores all guidelines, but since the barrier to entry is low (no need to install anything or wait) people use

      • by zifn4b ( 1040588 )

        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.

        The question is more abstract than that. Why is it that when you contemplate the idea of ALL software running on ALL platforms you immediately think something like "Well, in order to do that, we have to have this platform where everything compiles down into CPU architecture agnostic byte code where at run-time it would JIT compile into the appropriate machine language code that can be run on the CPU by having different versions of that run-time for each CPU architecture." It's also interesting that you t

        • The grandparent brought up Java, not me. There are a lot of attempts at cross-platform UIs, including ones that only provide source compatibility and require that you recompile for each target. They all suck for the reasons that I highlighted. The only good cross-platform software has a shared core of code and then customises the UI for each target platform. In a lot of desktop software, the UI is a sufficiently large part of the total codebase that this amounts to an almost total rewrite.
    • by Pieroxy ( 222434 )

      Right. Try to run a Java program on iOS.

      While it's a step on the right direction, it's far from being universal.

      • by jblues ( 1703158 )

        If you want to run a Java program on iOS you need to jailbreak your phone first, because there is no supported and endorsed Java Virtual Machine for the platform. Early Apple terms and conditions prohibited running an interpreter, except for JavaScript in web views. Not sure where there terms and conditions are at now. Haven't tried for a while, so I'm not sure how stable these JVMs for iOS are. Even if they're rock solid, most folks don't jailbreak their iPhones, so there's not much of an audience to run t

      • Yeah, you can't and that ties with what I was going to say about this topic: Technical limitations are the least of your worries. With enough work they could be overcome but the problem is many of the mentioned OS are owned by companies and usually they're interested in having exclusive software that only runs on their OS. That's the case for Windows, OS X, iOS and Android and more so on the consoles where exclusive games are one of the most important features to get people to buy that console. Linux and ot
      • iOS intentionally poisons the well for "unblessed" development environments. It's one of the things I like the least about the whole ecosystem.

    • It is more software that runs on no platform, because the JRE is always fucked up :P

    • by gweihir ( 88907 )

      No, it is not. Java does not have a working file-system abstraction that eliminates differences. If you need performance, platforms also behave vastly different. There are other issues.

      Without a good implementation of the UNIX API on the other platforms this is not going to happen. Even Java would need that for good cross-platform capabilities. And of course, there are entirely brain-dead things on some platforms, like Windows filesystem being case-aware but not case-sensitive. These can probably not be fix

    • by zifn4b ( 1040588 )

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

      Java only represents a fraction of software. Microsoft .NET is essentially the Microsoft flavor of java and it only represents a fraction of software. Let's review the question again: what if ALL software ran on ALL platforms. I think the answer to that is Microsoft would go out of business or at the very least they would lose a large chunk of their stock value and revenue.

    • Qt + target compilers isn't far behind, and is pretty far ahead of Java in terms of the quality of products developed (when we're talking about bigger, more complex applications like CAD programs, etc.)

  • with all the virtualization stuff, remote desktop and more... well, I think it isn't a problem
    • There is not much freedom on mobile phones yet. What about a GNU/Linux phone that can run Android in a VM?

      Might we see a Windows phone that can run desktop software first, including an Android emulator? (perhaps too CPU hungry to use it for long)

    • Try running something that requires OpenGL 3 or better inside a VirtualBox guest and see how well that works out for you. VirtualBox Guest Addition's video drivers only support OpenGL 2.1 - even that is pretty damn spotty and is disabled by default on Windows guests.
  • by fisted ( 2295862 ) on Monday March 06, 2017 @04:47AM (#53983533)

    Of course it's technically feasible. It's called universally agreed upon standards and conventions.

    • Of course it's technically feasible. It's called universally agreed upon standards and conventions.

      And webapps are slowly exactly becoming this.

      • Dear god why? (Score:5, Insightful)

        by Anonymous Coward on Monday March 06, 2017 @05:57AM (#53983759)

        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.

      • by msauve ( 701917 )
        In most cases, web apps run on the server. Being agnostic to the browser doesn't mean they can run anywhere.
        • by tepples ( 727027 )

          The features of the web platform that allow offline use of a web application need heavyweight support from the browser.

    • by zifn4b ( 1040588 ) on Monday March 06, 2017 @08:48AM (#53984311)

      Of course it's technically feasible. It's called universally agreed upon standards and conventions.

      You can pry my Big Endian, EBCIDC out of my cold dead hands. :P

  • It's already possible. People have booted up Windows 95 on their Apple Watch. It's just not enormously practical. For one things, apps tend to work better together when they agree on things... things to do with the OS. Secondly, input devices. You can run Windows on your apple watch, but there is no mouse. Thirdly, performance.. the more different the platform the more emulation has to be done. Fourthly, intellectual property. Simulating the OS is a lot of work (Wine), and running it in an emulator hurts p

  • Are we emulating the hardware to match the differences in architecture (arm vs x86) or is it some goofy extraction layer (with apologies to WINE)?

    If it's the latter, than it would be a lot like the internet back in 2005 with IE6 breaking web standards against other browsers and having to test it against multiple browsers to see what works.

    Oh you said magic so I should disregard the nit picky things. Since we're assuming utopian technological advancements, then we'd probably only see two main platforms (la

    • by Z00L00K ( 682162 )

      Just a virtual machine on top of the real hardware, like Java or for that matter any interpreting script language like Python.

  • We are kind of sort of heading that way now with JavaScript. Ask anyone who has experienced the horrors of node.js and writting your own threading by using callbacks instead of the OS APIs?

    Before that there was Java. How great would it be if Java won and we all were stuck using it?

    Talk about a loss of freedom.

    It gets worse ....

    Guess which OS you would use at work? Windows. Which OS would grandma still use? Windows. Why?

    Active Directory, exchange, office 365, and other manageability means corporations would

    • by Z00L00K ( 682162 )

      Except that JavaScript is worse than Java when it comes to the ability to debug.

      All script languages are repeating the mistakes of classic Basic.

  • by Half-pint HAL ( 718102 ) on Monday March 06, 2017 @04:57AM (#53983561)
    If software was universally compatible and behaved the same way on all devices, it would be a security nightmare as it would have to implement all the security holes and other bugs of every platform to do so. So say Windows has a zero-day exploit in URL handling and Linux one for file handling. This universal code would have to reimplement the Windows bug in Linux and the Linux bug on Windows, or the two versions of the program would behave differently. If that isn't what you're talking about then you're talking about Java.
  • by Ambassador Kosh ( 18352 ) on Monday March 06, 2017 @04:59AM (#53983569)

    For highly cpu and memory intensive applications I don't see how this would work. The vast majority of software runs at only a few percent of what a CPU is capable of mostly waits on IO. However for HPC applications the memory and processing usage are often tuned down to the cache line level and that pretty much requires low level access to the system.

    Even more extreme are things like BLAS which is tuned to different cpu archs. Running an optimized BLAS vs unoptimized BLAS is usually 10x the performance or more and having a simulation go from a month to 10 months would not be acceptable.

  • Having all applications run on all platforms is a dream since the beginning of times, SW wise :-)

    Some people mention Java and that it is already happening, but I'd say that it isn't.
    Even applications on the same platform, say Windows, can't always run on all variations of Windows, and the same goes with Linux unless you are able to do some or a lot of tweaking.

    However, IF it could be made, then we would have a level playing field and the platform producers would have to improve their own platform to make it

  • by Ihlosi ( 895663 ) on Monday March 06, 2017 @05:06AM (#53983595)
    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.

    • 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.

      Agreed. And I bet in the majority of cases it would be option (a) (cheaper). Because not so well tested and/or documented.

  • by FaxeTheCat ( 1394763 ) on Monday March 06, 2017 @05:07AM (#53983597)
    One question is if this really is desireable...

    A lot of software require specific hardware to run in any usable way (3D, high end gaming), so what would be the benefit of running it on underpowered hardware?
  • What if we required that all computers be Turing complete?
  • What would happen? (Score:4, Interesting)

    by nospam007 ( 722110 ) * on Monday March 06, 2017 @05:14AM (#53983621)

    The same thing that happened during the mainframe days, when we could use all sorts of terminals and terminal emulators we wanted.
    We would bitch about the speed.

  • I would have woke up, thinking it'll be the best idea ever. Only to find out, it's called a web app.

  • The problem... (Score:5, Insightful)

    by Yaztromo ( 655250 ) on Monday March 06, 2017 @05:28AM (#53983659) Homepage Journal

    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???)


    • by Soft ( 266615 )

      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???)

      You probably know the legend of the Pea Sea [umd.edu]. I realized that it's been longer since the end of that story than the duration of the story itself...

  • by TuringTest ( 533084 ) on Monday March 06, 2017 @05:36AM (#53983685) Journal

    Ok, that was the words. What it would mean to have the exact same software in all platforms is that someone could build a truly universal syncronizing platform.

    This means that you could seamlessly move not just your files, but also the running sessions of your applications using a single protocol, instead of depending on individual per-app hacks or remote terminals. You could copy the content to your device, edit it with local apps and return it to the server. Just like git version control, but for all kind of content and work sessions, not just code.

  • Why? Because it would need to be able to run on all possible future hardware, regardless of whether that hardware is aware of needing to be backward compatible with anything. The code would need to somehow be able to look at its hardware environment and modify itself to be able to communicate and fulfill its purpose within that environment, even if that environment is some kind of mushroom from an exoplanet three galaxies away. NP-completeness would be this thing's first trick, and it's arguably a form of
    • Why? Because it would need to be able to run on all possible future hardware

      If the hardware is Turing-complete, it is fairly possible, no god-like powers required. It only would take to build an interpreter or compiler to the language specifications.

  • If software could run just as well on any OS, even though it's vastly different, it would mean that the magic is serious enough to negate any kernel and driver differences, which in turn would mean that algorithms and bugs don't matter, which will lead to the total collapse of the software industry as we know it. It will be replaced by something magical, with no need for software developers or researchers. In fact, the entire world will probably change as a result of such magical discovery, and send the ent

  • by gringer ( 252588 ) on Monday March 06, 2017 @05:48AM (#53983727)

    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?

    Confusing operating systems and devices is a problem here. The devices (desktop computer, Playstation 7, an Android Smartphone, Nintendo's latest handheld gaming device) should all be capable of running the GNU operating system, which you may know by another name (Linux, OSX, Ubuntu, but *not* Android, and probably not iOS).

    We already have a standardised set of software that runs on pretty much every platform, and it gives us the wonderful plasticity and variety in our technological world today. The problem is not that it doesn't exist; it's that people (and corporations) are apt to make their own solutions and encourage the use of software that doesn't work everywhere.

  • Sun Microsystems? It's you? AGAIN?

  • ... I have a pretty clean idea of what will happen in MY workplace. Different users will ask to have back their old software that were forced to dismiss for compatibility reasons. Why? Because changing a software every DECADE is seen as a trauma, users are so used to a specific piece of software (and version) that every change is seen as a setback. Management will reject every proposal from the IT guy (it's a small firm) because old software "is good enough", newer software "cost money" and ever free altern
  • Dependencies (Score:5, Informative)

    by Kjella ( 173770 ) on Monday March 06, 2017 @06:07AM (#53983807) Homepage

    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.

  • I doubt it will ever be possible because ISVs are not interested in that, in fact they actively oppose that. Every modern proprietary OS tries to become a walled garden for its own apps - even Microsoft has felt victim to that with their Store.

    Still it's quite possible nowadays if you are ready to sacrifice your CPU/Storage resources: in Windows/Linux/MacOS you can run pretty much every modern OS (except Mac OS X which requires certain hacks) by using a VM.

    Why don't software vendors create software whic

  • Think back to the chips in later Apple hardware that let older Apple software run.
    Other efforts like:
    BASICCODE https://en.wikipedia.org/wiki/... [wikipedia.org]
    "A BASICODE program stored on cassette could be loaded and run on any computer supporting the language."
  • by seanellis ( 302682 ) on Monday March 06, 2017 @06:20AM (#53983861) Homepage Journal

    The user interfaces for different platforms have to be different. Otherwise you end up with Skype 7.x, where we have a UI on the desktop which has been designed for a smartphone.

    Low pointing accuracy on smartphones means large targets and huge icons. Short conversations on smartphones means lots of space wasted on speech bubbles. Likely content on smartphones means emojis pop up when you're sharing code snippets, making them unreadable. Restricted input methods on smartphones means ignoring platform conventions like Ctrl+B for bold text.

    Conversely, try getting 3DS Max 2017 UI onto a smart watch. Regardless of compatibility, it's simply impossibe.

    • Yeah, it's hard to make UIs that work everywhere but you could work well on the vast majority of devices just by having 2 UIs: One designed for mouse and keyboard and another one for touch. Yeah, that wouldn't work for something like smartwatches but if you wanted to do some kind of complex work on such a tiny device you'd realistically had to connect it to a dock with a big monitor and keyboard and mouse anyway.
      What I do hate is things like what you said: Forcing a touch oriented UI on everyone since it's
  • by tonymercmobily ( 658708 ) on Monday March 06, 2017 @06:23AM (#53983871) Homepage Journal

    That WAS the case around 1998! Nokia phones had a Java virtual machine. Linux had one. Windows and Mac had one. It was universal. Granted, it was still limited (you couldn't run the same apps on phones and desktops), but that was more of a technological problem than anything else (phones were puny compared to desktops, whereas the gap today is much narrower).

    It was nearly 20 years ago... Desktop apps in Java barely exist today.

    Maybe Webassembly [wikipedia.org] will succeed?

  • The problem with the question is that there is not just 1 type of platform. There are innumerable platform definitions, whether it be a 2D or 3D gaming platform, a windowing environment, a massively parallel cluster computing platform, etc. At some point, someone decides to extend the platform definition to account for a new capability. Reaching consensus either takes time or results in forks.

  • Sure we can. (Score:4, Insightful)

    by geekmux ( 1040042 ) on Monday March 06, 2017 @06:39AM (#53983913)

    All we have to do is get rid of Greed and fix the USPTO system.

    Or you could stop trying to go back in time and pretend that virtualization and emulators somehow don't exist anymore, since their existence tends to be the entire point of this question. With the hardware race to keep Moore's law alive as long as possible, we've had "enough" GPU, CPU, and memory in hardware for quite a long time. We've had to artificially sustain hardware sales with premature obsolesce, forced by vendors who "no longer support" a given platform that is often still viable to run the latest software offerings. Again, Greed steps in.

    • All we have to do is get rid of Greed

      You say that as if greed over resources hasn't been an integral part of existence since life on Earth first started about 3.8 billion years ago.

      • All we have to do is get rid of Greed

        You say that as if greed over resources hasn't been an integral part of existence since life on Earth first started about 3.8 billion years ago.

        Greed has many levels, but anything that remains unchecked can and will eventually cause destruction. That massive chasm between the 1% and the 99% continues to grow, well beyond the realm of the elitists giving a shit about the impact of unchecked Greed.

        We have many challenges ahead as we embrace things like mass automation and AI, but the hardest mathematical equation will be to Solve for Greed.

  • MS would at least loose a large chunk of market share, because many people use their OSes simply because the tools they need for professional work do not work on other systems.
  • Dumb question (Score:4, Insightful)

    by mwvdlee ( 775178 ) on Monday March 06, 2017 @06:50AM (#53983947) Homepage

    If we had 3D CAD software that ran exactly the same on every device, I'd get a subdermal chip and run everything on that.
    Afteral, why would you need a screen, speakers, input or output if it runs exactly the same on computers that do have those?

    Software will not run exactly the same on every device, because the capabilities of the devices differ.
    If they didn't, we wouldn't have different devices in the first place.

  • We'd have all the Windows crapware running on Mac and Linux :-(
  • It's happening, and it's called WebAssembly [webassembly.org].
  • Web v3 (Score:2, Informative)

    by Anonymous Coward

    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 fo

  • Stupid idea (Score:4, Insightful)

    by treczoks ( 64329 ) on Monday March 06, 2017 @07:27AM (#53984071)

    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.

  • by Anonymous Coward

    What platform do you use to write the platform that can run all software?

    Will it be able to run on itself?

    Will it be able to run on the version of itself that checks to see if an arbitrary program will run to completion -- the unsolvable halting problem -- before running it?

    Will it be able to run on the version of itself that only runs programs that won't compile?

    And so it goes ...

  • We will be no longer forced to update software because of a platform or hardware upgrade. In the past users replaced applications for others because it won't run on a newer machine or update operating system. This is good for the user because it will save money, but bad for the software industry.

    I will be still running AfterDark Screen saver on my PC.
  • There are already some great answers here - but I think the question is not exactly right.
    There's a difference between a hardware platform and the OS that rests upon it.

    Imagine a free, universally available, top notch OS that works on all hardware platforms. Okay - not all platforms. There's a (ever-reducing) point where an OS is more than is necessary - such as the code required to drive an electric toothbrush. However, as we continue to develop hardware implementations, it is becoming increasingly cheape

  • Well, for one thing we'd be able to fight off any alien invasion by uploading a virus to their ship!
  • Death of mac os being only on apple hardware as they will need to do something to market there os as being the best Linux based os for home / small business users.

    Smartphone and Consoles really don't have the ram / cpu to do really pro cad / Photoshop work and phones would need like an usb keyboard + mouse + big screens to pull it off as well. Also any system with a locked in app store may have a hard time getting pro priced software in them unless they cut there cut of the cost down to like 10-15% and remo

  • by Eravnrekaree ( 467752 ) on Monday March 06, 2017 @09:34AM (#53984491)

    Of course its possible. Several options exist. It involves using a cross platform library that provides the same API on all OSs and hides the OS level variances. To make this really work well of course a complete and powerful API is needed to account for the unpredictable needs of a wide variety of programs. Preferably, APIs for audio, graphics, 3D, video, access to audio and video input output devices, and so on is needed. One such library that has done this is Qt. As far as languages, C/C++ were designed to be cross platform but I do not recommend these in applications due to how difficult it is to write software without security problems with them. I am quite fond of Python and Qt used together.

    There is also Java which is another good option.

    It would save time in the long run for an application developer, if they found that a cross platform library needs a new feature for their app, to add this to a cross platform library, rather than code OS specific code directly into their application. This avoids having to port applications to a changing list of target platforms, and it tends to easier to add a compatability layer once to a library and then call that hundreds of thousands of times from app code, than it would be to change possibly hundreds or thousands of lines of app code. If you have a function that accesses OS level feature, and is called a thousands of times from applications, and you need to port that app to a new OS, its easier to make a single change by adding a new compatability binding for the function for a new target OS, rather than change the many thousands of invocations of the function.

  • What would also be interesting is similarity of user interface and functions between software, especially for 3D CAD software. The goal being easier transference of skills between platforms. This type of software tends to be complicated with a steep learning curve, making it difficult for people skilled in software A to be considered for work being done with software B.

    Employer: "You're perfect for the job, your skills, experience and knowledge are *just* what we're looking for! One final question: What t
  • by apraetor ( 248989 ) on Monday March 06, 2017 @10:40AM (#53984833)
    Diversity decreases the threat profile, you don't want every device having an identical attack surface. Think of humanity; a virus which is potentially lethal to one person may not even give another person a cold, even in the absence of immunity due to previous exposure -- this is thanks to genetic diversity. If every human was genetically identical then we could easily be wiped out by a single well-evolved virus (maybe not too well-evolved if it exterminates the host..).

The unfacts, did we have them, are too imprecisely few to warrant our certitude.