A few years back I wrote an article for O`Reilly covering the advantages of cross platform over native OS code. Almost 3 years have passed and a lot has changed in our industry so I wanted to re-examine how this impacts my perspective on cross platform vs. native.
I can sum up the sentiment in a single sentence: "Cross platform is both more essential & more practical than ever before!".
Flat Design Simplified Portability
Both iOS and Android applications are far more similar. Google releases material design applications for iOS without major backlash as they don’t look out of place. Yes there are still platform sensibilities to take into account but they are far fewer than they were three years ago.
Flat design removed the clutter from applications making the functionality & clean design front and center. This is wonderful for WORA tools. The focus on functionality allows WORA tools to reuse code and gain on native developers.
Users would often complain about sub-par performance of WORA tools. This has been mitigated on two fronts.
The tools themselves have improved by leaps and bounds, Codename One is far better than it was in 2013 and other tools in the field have also improved tremendously.
But the bigger change is in user sentiment, for every user who complains about "nativeness" you have another user complaining vigorously about their platform not getting the same treatment. E.g. dropbox who has pretty good native iOS/Android apps recently released an iOS app update that included a great feature: "Scan to PDF".
This feature would be very useful for me on Android but a quick search revealed that it isn’t available yet and that the community is pretty mad about this. This is about an Android port from a unicorn company that doesn’t lack for resources!
Some people will always complain about an app that doesn’t look good or isn’t responsive but a lot of users who don’t understand the technical details associate the word native with "fast, good looking & responsive" which you can achieve without recoding the app 2-4 times…
Rise of Windows 10
Windows Phone is dead but Windows 10 is rising. In fact Microsofts surface is leading in the detachable keyboard tablet space. This specific segment is hugely important in the corporate world where access to legacy Windows software is crucial.
This means we now need to deal with 3 prominent platforms and stores instead of 2 (ignoring the Kindle or similar Android stores for simplicity).
Coding your app twice might have been reasonable but doing it three times and requiring two separate machines (Mac and Windows) isn’t as practical.
Stability/Stagnation in Mobile OS’s
Mobile changed very quickly in the past but over the past few years it didn’t innovate as much. Google & Apple spent resources on watches, cars & glasses all of which didn’t take off. Mobile phone apps refined but didn’t change in a fundamental way, this is good as a stable platform is much easier to track for cross platform developers.
As I mentioned above platforms converged a lot. This is obvious in the UI level where iOS, Android & Windows look more alike every day. But it’s also important in the underlying behavior.
Android was remarkably flexible when it launched allowing background services to do just about anything. iOS was far more restrictive, disallowing multitasking altogether in its initial launch.
Both yielded to a common middle ground. Android placed restrictions on background processes to prevent wasted battery with project doze. iOS added support for many use cases which are still not as flexible as activities and services but provide almost all of the commonly needed use cases.
Permissions and security also saw a similar convergence where Android shifted it’s over complicated and misunderstood permissions system to one that is more similar to the one iOS has.
These convergences make WORA (Write Once Run Anywhere) far easier as they allow developers to run get a similar experience (e.g. permission prompts) across various devices.
Let’s be clear, if you pick a WORA solution. Any WORA solution. Some purists will notice and complain.
If you miss a feature or even an entire platform people will complain.
In the past a customer asked me "lets assume I have all the money in the world and no restrictions, should I use native or Codename One?".
A manager went to the master programmer and showed him the requirements document for a new application. The manager asked the master: “How long will it take to design this system if I assign five programmers to it?”
“It will take one year,” said the master promptly.
“But we need this system immediately or even sooner! How long will it take if I assign ten programmers to it?”
The master programmer frowned. “In that case, it will take two years.”
“And what if I assign a hundred programmers to it?”
The master programmer shrugged. “Then the design will never be completed,” he said.
— Tao of programming - 3.14
The more resources we have the more time things take and the bigger the disaster (e.g. JavaFX). WORA tools allow us to focus our attention on the product and the user not on the politics of Apple, Google or Microsoft.