5 ms·
I should’ve known that it’s turtles all the way down. Considering how many years I’ve sunk into programming for other platforms, this shouldn’t have come as a s
by maxaf 7y ago
I should’ve known that it’s turtles all the way down. Considering how many years I’ve sunk into programming for other platforms, this shouldn’t have come as a surprise, but I got suckered into believing that mobile computing platforms represented a significant enough paradigm shift to allow for starting with a cleaner slate.
Not true! Having gotten into iOS development over the past couple of years, I’ve come to realize that seemingly no attempt has been made to actually clear the cobwebs on this shiny, relatively new platform.
For example, SwiftUI is just an abstraction layer for UIKit, which itself is (keep me honest, HN) an abstraction for some mishmash of Cocoa, Display PostScript and Metal. Bits of NeXTSTEP are everywhere still, even when using Apple’s latest and greatest programming paradigms.
Don’t get me wrong, iOS is great, and I love it to death. However, the baggage signals to me that a massive opportunity to start anew has been missed.
- ken 7y agoSwiftUI isn’t UIKit-specific. Display Postscript hasn’t existed since the OS was called NeXT, 20+ years ago, and was never on any iDevice. Cocoa is an alias for AppKit + CoreData, and iOS uses CocoaTouch instead.
- dahart 7y agoYou’re right, yet this doesn’t directly address what parent said, in fact it’s somewhat agreeing with the point, that there’s a ton of influence left behind by these things, even though they are not there anymore.
- mattl 7y agoDisplay PostScript is in Apple Mac OS X Server 1.0 and then abandoned in favor of Quartz and PDF.
- erokar 7y ago> Don’t get me wrong, iOS is great, and I love it to death. However, the baggage signals to me that a massive opportunity to start anew has been missed. I guess that's what Flutter is doing (for both iOS and Android).
- chooseaname 7y ago> I guess that's what Flutter is doing (for both iOS and Android). How does it do this as opposed to adding yet one more layer? Does it somehow get beneath all the cruft mentioned?
- Signez 7y agoFlutter took the approach of treating the screen as a blank canvas. Everything is drawn using Skia primitives, exposed as Dart libraries. It has some downsides – they had to expose a lot of accessibility features on top of that using platform APIs – but it's quite nice when you are a developer, as you can Cmd-click on anything to learn how it is drawn, and use the same tools to build your own widgets if you need.
- lhoff 7y agoAfaik Flutter is basically a Game Engine. Its not using the build in UI Toolkit instead rendering everything itself and just mimics the look of the native UI. I'm not completely sure about it, i just now it from listening to some talks.
- wolf550e 7y agoYes. It's not using any native UI widgets or UI code, but drawing everything itself using the lowest level API it can get, which I guess on iOS is Metal (and something for input). This means that the look and feel and the behavior and accessibility features will not match those of other apps (which do use the native toolkits), or the Flutter team will have to do a lot of reverse engineering and re-implementation to match that on each platform.
- kitsunesoba 7y agoCurrently, Flutter targets OpenGL ES on iOS which is less than ideal. https://github.com/flutter/flutter/issues/18208 https://github.com/flutter/flutter/issues/18208
- stevewodil 7y ago
- gumby 7y agoI consider this a feature: the older code has known behaviour, while a from-scratch implementation would have been a minefield of unknown bugs
- maxaf 7y agoI’m not buying your reasoning. Try putting a WKWebView into a SwiftUI view. This kind of thing is all sorts of messed up when multiple rendering systems - two of them declarative (SwiftUI and HTML) - collide in a single view. I’m sure someone’s going to call this a corner case, but useful and interesting apps that push the boundaries of the feasible are all composed of such “corner cases”. And hey, I’m not even doing anything outlandish: just trying to show some HTML.
- gumby 7y agoI sympathize with your position and have had similar problems in the past. There’s no magic option. But typically the combination of a completely new API and implementation is very difficult for both implementors and users.
- jayd16 7y agoI think certain paradigms were completely shifted compared to the PC space. -Revamped permissions -App packaging/name spacing/consistent installation -IPC was redesigned as asynchronous Intent blobs on Android -Urls becoming first class citizens at the OS level -More consistent background app apis (and eventually better ways to track them) I could come up with more but I think there's actually a very big difference. But yes, its all built on top of older Java and obj-c libs.
- simonh 7y ago> Don’t get me wrong, iOS is great, and I love it to death. However, the baggage signals to me that a massive opportunity to start anew has been missed. Starting anew is over rated. It’s sometimes the right answer, sure, but it’s just one possible answer. iOS benefited enormously from being immediately familiar and approachable to existing OSX devs, and would have taken another 5+ years to develop from scratch without leveraging its OSX heritage. Meanwhile Android was in a crash emergency race to relevance for the first 5 years of its existence. If they’d taken the time to do everything right the first time, they could have ceded Microsoft enough time to get their Windows Mobile act in gear. So legacy is a thing for a reason, taking one opportunity very often means giving up another.
- deleted 7y ago[deleted]