← Back to context

Comment by pkaler

20 hours ago

I'm sitting here at my desk overlooking Cordova Street. The street that Apache Cordova is named after. I've seen this debate for almost two decades now.

Teams jump on the latest cross-platform framework assuming that it will reduce headcount cost at the expense of having a lowest-common denominator app on each platform.

The latter is true but the former is false.

What ends up happening is that teams start as 20 iOS engineers & 20 Android engineers. They adopt something like React Native. Then you end up with a team of 20 product engineers and 20 tooling and framework engineers.

I've seen that countless times in the last two decades.

> I'm sitting here at my desk overlooking Cordova Street. The street that Apache Cordova is named after. I've seen this debate for almost two decades now.

The debate has been taking place on the actual street?

That wasn't the starting point for the webview app DX.

Companies (or their consulting agencies) had tons of webdevs - working on their company public and internal websites, but not many native smartphone devs. Those were the days when people who completed the Stanford iPhone programming course were snapped up lickety-split.

But everyone was clamouring to have their own smartphone app for all the smartphone platforms (well, iPhone, Android, maybe Blackberry)

Hiring enough smartphone devs to fill multiple smartphone-specific dev teams would be like trying to build multiple AI development workstation on the cheap these days.

In the late 2000s, people realized they could write an HTML/JS/CSS website and compile to an app for each J2ME/Blackberry/iPhone/Android platform that would "serve" the website. So their webdevs could be converted to smartphone app developers.

Hey, if you planned your website well, you could use the same business logic for your website AND your smartphone apps.

That was the elevator pitch.

You'd need an actual (maybe two) native smartphone devs for each platform to handle any areas where the marketing didn't meet reality 100%.

But that was doable versus hiring multiple native smartphone devs for each platform.

And in the late 2000s, there seemed to be a lot of potentially viable smartphone platforms - iPhone, Android, Blackberry, J2ME, Windows Phone, Palm's webOS. But we know now that in a few years, all but two would wither away.

Even with native APIs exposed via JavaScript, there were obvious problems with these webview apps. The apps were passable if the app didn't require much user interaction or computation.

Projects like React Native and others tried to reduce the amount of webview usage and increase the amount of native UI controls used.

The mobile platforms themselves aren't going to improve their platform-specific webview to make it easier for webdevs to mimic the "native" experience. Why would they?

I've dumped all cross-platform frameworks as well. I tried many of them but they just weren't good enough, even for simple stuff. There were always glitches and teething problems that marred the overall quality compared to the native version.

I'm currently maintaining versions for both iOS and Android.

  • How do you stay motivated to do this?! I've tried to start my app in React Native multiple times, but it always sucks, so I finally started learning Swift. I'm already not sure how I'll stay motivated to learn Kotlin too, and rebuild the whole app again.

I can see the case for shared core libraries and then platform native views. This is best done in one programming language. Can Swift, Rust or .NET work here?

Yes, though its worth noting the goal of Cordova was to not exist. In the eyes of the project the web itself is the cross-platform solution but at the time Browser progress was stagnant and Cordova helped move things forward by offering device functionality using open web standards. Cordova was never intended to be a "cross-platform productivity multiplier". The north star of the Cordova project was for browsers to get the device functionality that native platforms offered, such as geo-location, accelerometer, contacts, camera, etc.

I just want to correct this, because I agree with you but the framing is a misinterpretation of the goals of the Cordova project - goals which were ultimately met.

This is probably the end now. People don't debate anymore whether they should write only in assembly vs. in C. Sometimes new abstractions emerge and they replace something completely. This time the abstraction was LLM.