Tuesday, March 31, 2020

The Future of the Native App (in my uneducated opinion)

As the world of software progresses, all of us have probably noticed a shift in how we interact with our computers. We find ourselves interacting with our phones more than our computers, the internet more than our software, and we've increasingly demanded access to everything always. As such, important concepts like "Web 2.0", "The Cloud", and "Convergence" have been developed to facilitate such a transition. But, with the advent of all of these concepts, is the art of the native application on its last legs?

For the sake of simplicity and making this argument easier to write, I'm going to focus on native applications (applications compiled for a specific hardware/software stack) and web applications (applications that you would access and use in a browser).

The gap is closing between what a native application and a web application can do. For example, we're seeing people compile native application components to JavaScript using tools like Emscripten so they can be used in web apps. And, some of the time, they perform at near native speeds. It's actually quite impressive. I think the project that displays this best is the X86 Emulator that runs operating systems in your browser by copy.sh. Some OSs are slower than others. But I believe with the proper optimization and advances in browser technology, it will one day be possible to run Virtual Machines inside of a browser. That's wild to me.

This migration to web applications has allowed for more device convergence to take place. Because all you need to do is port a web browser and suddenly a bunch of applications now work - and most devices capable of it already have fully functioning web browsers - web apps are becoming popular so you only have to write your app once. Windows and Ubuntu tried to do convergence the other way: putting native software first. Remember the Canonical Superphone: the Ubuntu Edge? When docked, it was a full Ubuntu desktop. That's crazy. But it was doomed to fail, just like the Universal Windows Platform (which haven't failed yet, but I have yet to see them truly catch on).

There are obviously some things that a Web Application will never be able to do, however. You can't write firmware as a web application. You can't write an operating system as a web app.

As of right now, browsers are still language interpreters, so they're not faster than native applications. Video editing software, drivers, browsers, and many other time-critical applications are still better native. But everything I've just listed here comes with a "for now" footnote. It's possible that some day, I'll be wrong about some of these.

Is the native application dying? Yes. But it's not going away anytime soon. And, the closer to the metal you get, the less likely a web app will replace a native app. But, in terms of usability, convergence, time to develop, and web innovation, this is all for the best. And I'm always impressed with what I see webpages doing.

I'll leave you with this Internet Archive page that allows you to play the PlayStation version of Need for Speed III - Hot Pursuit. It's amazing that you can do this, and it'll only get better from here.

No comments:

Post a Comment