Just as there is no car or tomato sause that appeals to all people equally, people equally want different things from their software and technology. If every single piece of software ever made, was made cross platform and behaved the same on every platform, what point would there ever be in having different operating systems? That would just be an uncessesary complication.
Software for different operating systems tend to be designed in different ways because the users of those systems tend to have different preferences for how their software should behave.
Android and Linux users e.g. tend to want lots of customization and flexibility. Mac and iOS users want effective and easy to use interfaces. You can’t satisfy all needs of all users at the same time. Tend there are platform specific differences people don’t like if you break. I absolutely hate the Windows ribbon UI. I want a simple Mac toolbar with a sidebar. How are you going to create a cross platform application which satisfies a Window user who wants a ribbon and a Mac users who absolutel doesn’t want it? The organization of UI elements are not remotely the same. The way you organize UI elements in the sidebar on Pages, Numbers and Keynote is fundamentally different from how they are placed in the ribbons on MS Word, Excel and Powerpoint.
As a Mac user I expect a different placement of menu items compared to a windows user. I expect to find “Preferences…” under the application menu. Windows has no similar convention. The application menu doesn’t exist there.
Windows users tend to move whole toolbars around. Mac users don’t move toolbars, they move individual toolbar icons. Why should I suffer a non-standard subpar Mac experience because a developer doesn’t want to duplicate his/her efforts.
Pages, Number and Keynote on macOS and iOS share 70% of the code base. I’d say that is as good as it gets. The non-gui layers are very similar. However iOS and macOS have fundamentally different UI paradigms and hence you should write different code for each UI layer. I think a key reason why iPad had more success than Android tablets is that Apple realized from the beginning that devices with different form factors need different UI, and so they required developers to write iPad specific UI code. Of course it also run iOS so there is a lot of code sharing. Android tried a once size fits all approach and that did not go down well with consumers.
Apple always understood this. That is why when they released macOS for the first time they deliberately removed the arrow keys on the keyboard. They knew that developers are lazy and would have just ported their CLI applications over to the mac without any change. But when deprived of arrow keys, there was no simply way to do that. Developers were forced to learn and use the new mouse, windows and icons paradigm.
Natural Cross Platform Applications
It is easy to assume from my argument that I believe no applications should ever be created with cross platform toolkits, and that everything needs to be designed specifically for the platform it runs. However I am not an extremist. Many applications simply derive little value from being platform specific.
I am not objecting to cross platform application or web applications. I am objecting to what I perceive as an extremist view, which is that ALL application development should be cross platform. Multiplatform applications and platform specific applications have existed at all times and will continue to do so in the future.
I’ve been a Mac user now for 16 years, ever since OS X came out, so I’ve seen this debate over and over again. And I’ve seen the cross plaform attempts dozens of times. It always ends up the same way. Whenever developers have ignored their users and made applications which don’t fit the platform to save on development costs, frequently competitors have arrived and offered competing software better taylored to the Mac platform thus stealing customers. And perhaps more often than that, Mac users have simply made a big stink about it and complained.
Nobody stays a Mac user, while being indifferent to design and user experience. Macs are simply too expensive to buy if you don’t value those properties.
The Future of Web Applications
They had also bought into the hype about the web as a platform. Yet now they are abandoning this effort and using a traditional C++ GUI toolkit such as Qt. Their conclusion was that the sort of complicated professional applications traditionally developed on the desktop simply don’t work very well on a web stack.
I think there is a similarity there with monolith kernels vs microkernels. The microkernel crowd thought they had all but won, and then Linus came with is old fahsion kernel design and knocked them down. The layered architecture of the microkernel simply proved too difficult to debug and reason about. This is similar to Insomniacs experience. The layering of web apps proved proved to be too burdensome. It works when the communication between the layers is not too chatty IMHO.