I take it this isn't that?
[1] https://medium.com/incerto/the-most-intolerant-wins-the-dict...
Or perhaps they like the hardware or OS and have no intention to work on apps?
Guys, I hate to say this, just use Java. Its fully cross-platform with a complete UI toolkit that looks native and isn't slow. You're not going to find anything else thats as complete or performant. Java has been focused on this niche forever.
I bet you use Java GUI's all the time without even knowing it. Most of you every day. Tons of IDE's, database visualizers, and other dev tools are made with Java GUI's.
Every Jetbrains tool, DBeaver, DB Visualizer, MySQL Workbench, other stuff I'm too lazy to look up. If you have a tool thats not web with a big UI, its Electron or Java 90% of the time.
No.
> You're not going to find anything else thats as complete [...]
Qt. WxWidgets. Soon, React Native for Windows and macOS.
> [...] or performant
No.
> I bet you use Java GUI's all the time without even knowing it.
Oh, people know it. Even users of Windows and Linux, platforms where a consistent native look and feel for applications is now a veritable pipe dream, can tell.
Plenty of people specifically avoid apps written with a Java UI because they feel so non-native and slow.
(Disclaimer: I'm not saying Qt, WxWidgets, necessarily feel any more native than Swing or JavaFX; I only mentioned them as examples of complete cross-platform UI kits, not necessarily as ones with the best integration — although well-designed Qt and WxWidgets apps will still feel miles more integrated with both Windows and macOS, notoriously difficult to emulate, than Swing)
> Every Jetbrains tool, DBeaver, DB Visualizer, MySQL Workbench, other stuff I'm too lazy to look up. If you have a tool thats not web with a big UI, its Electron or Java 90% of the time
If you use apps from that specific set you listed, sure.
Everybody would jump to Swift [for new projects] if it meant a cross-platform GUI framework.
Creating a good cross-platform
GUI framework is probably harder
than creating a good cross-platform
language.
Way way way way way harder, I'd think. It's basically never been done in the modern era. All the successful ones from the past look (and work) like garbage on a modern desktop computer (I use gnucash for my dad's business, ha ha).SwiftUI is an interesting re-think, though, and as a Windows 10 user, I can tell you that the current "native" experience sucks green potatoes. There are like 9 or 12 different UI technologies I must interact with each month. All with different text sizes and massively inconsistent UI paradigms.
So I think there is an opportunity here.
But, I bet SwiftUI → Web will come first. And if that happens, SwiftUI on Windows, and desktop Linux, will be a no-brainer and will happen.
And if it doesn't happen, then probably SwiftUI won't matter outside of the Apple ecosystem, and that will mean Swift won't matter much in the end, either. (EDIT: I don't mean Apple need do this and I don't expect they will. But SwiftUI is just an API; anybody could port it to whatever environment they want, and there are already some nascent third-party efforts to implement it for HTML/web.)
Full disclosure disclaimer: former NewtonScript programmer
It looks like the bear is in keeping up with all the platform updates all the time though.
Unlike things like react native you wouldn't be actually using the native components necessarily unless you can implement the UI frameworks components in terms of them. Otherwise they would need to be written from scratch.
That being said, my experience with SwiftUI users is that they don't like it because it is so different from the standard Mac experience (props and re-renders and state...). And the documentation is poor (IMO has been Apple standard from MapkitJS to iOS Swift documentation to SwiftUI) which leads to a negative dev experience. Try finding what causes a component to re-render in SwiftUI vs React. If you find it great and please post it, but it's not easy to find in my simple research.
When flutter for desktop lands into beta I think it will pick up even more pace and would be very hard to ignore for a lot of companies.
But Swift doesn't run on Android, does it?
Not really. I'm sure there are plenty who will just stick with Qt based options or even Electron.
I've seen a lot of stuff built in PyQt by people who aren't strictly developers and who learned Python only because it fits with some other aspect of their job. There isn't a lot to incentivise them in learning a new language.
Maybe befause React native uses OS UI components while Flutter creates everything from scratch. https://microsoft.github.io/react-native-windows/
I don’t remember which video it was exactly, but one of the higher ups talked about future technologies within Microsoft and how they were doing more and more GUI-based thing with react. And if you look at it, they’ve done pretty amazing things within the JavaScript eco-system in general. Office 365 is amazing, Visual Studio Code is amazing and it just wouldn’t make sense for them to go from typescript to dart.
Especially when you consider how unfinished flutter is. We’re a C#/power shell with a little Python shop with a lot of Enterprise Microsoft techs. We still considered Flutter because Xamarin wasn’t working out for us and we’re not big on JS or big enough to do native, but flutter just doesn’t fill our needs either. That’s anecdotal, but the difference is that react and react native are proven techs and flutter still isn’t.
Like, isn’t VSCode all JavaScript? Surprisingly, this is probably what allowed Microsoft to build software that runs on both Window, Mac, and Linux! The JavaScript platform, ultimately became what Java dreamed of becoming back in the 1990s. And without the need to install a separate virtual machine layer, but at the expense of more inefficient code.
But VSCode is painfully slow, if you run it on an older PC.
And you’re not going to be running Windows 10 on a 15 year old PC anymore.
So could this mean, that software companies are going to force people to buy newer hardware, to run their programs? Most likely. Apple has programmed the consumer into spending unnecessarily for new hardware every year.
I wouldn't. I don't like Swift's syntax. The ecosystem would likely not be mature enough either.
But when I did use it, I loved it. I've written in quite a few languages, and it is my favorite, but not my go-to because of its limited environment.
Not to mention that developing C# in Visual Studio or Rider feels years ahead of what's considered good enough IDE assistance in other languages. Comparable with Java even.
And of course Electron, which is somehow even worse than Java.
wtf.
However for the desktop, a good real table, with columns, would be nice.
Where this isn't the case would be if performance mattered, some of Foundation system api implementations (at least, the Windows ones) can be a little inefficient since the Foundation api model and the Windows way of doing things doesn't always match and the Windows implementation has to do extra work to match the semantics.
Another would be UI wise, I haven't heard of plans for Apple to open source SwiftUI. Though since Swift can call into the native platform apis, it's quite possible to write a (perhaps not as slick) alternative.
As for the rest, it depends on what you consider "basic functionality". AppKit/UIKit is probably never going to be ported.
All this really means is you don’t get the iOS UI tools for your Windows and Linux projects.
Fun fact: Graydon Hoare, the original inventor of Rust, now works at Apple on Swift.
Disclaimer: I work at Google but not on TensorFlow.
Fortran, C++, Python and Julia drive the show and work with full tooling across UNIX flavours, Windows, macOS today.
Sure, there are people who want to tinker with it for fun, but outside of that what is the point in having Swift on Linux and Windows?
You can't use it to build mac or iOS apps on Linux because the important libraries aren't there. There is no cross platform UI and Apple isn't likely to port and support theirs from macOS. If you are into servers then you have plenty of better languages options with established ecosystems. Maybe there are some command line apps on macOS which can now be ported to Linux/Window, but beyond that, what is the point? Where is Apple trying to go with this?
It seems pretty clear they have 0 plans on doing that. They could've open sourced it in the first place, along with Combine.
Not open sourcing Combine seems like a pretty short sighted decision to me.
There's nothing stoping anyone from implementing such a thing, just as someone wrote a SwiftUI for HTML. All the pieces are there, but it would be a huge amount of work unrelated to SwiftUI on Mac and iOS.
1. Create and introduce it as proprietary
2. Iterate fast, changing a lot of things to improve it quickly.
3. Stablize
4. Open source it (and continue iterating with an open process)
The advantage to starting proprietary is the initial iteration phase can move move quickly and stay focused on the goals of the people in the controlling group.
That would also means you would be able to deal with WinUI XAML and all.
while GetMessageW(&msg, nil, 0, 0) {
TranslateMessage(&msg)
DispatchMessageW(&msg)
}
but lib looks really good, i guess there goes my weekendIf by some stretch that means Swift can then make complete Windows programs, that could be good for consumers but particularly good for enterprise developers.
It's not hard for me to think that. I've never been interested in .Net languages, and I write stuff for both Linux and Windows. If it was just Swift the language and compiler, and I had to wrap Win32 API calls by hand, I'd happily use it.
And just a minor nitpick, Apple’s development environment is called Xcode, where just the X is written uppercase.
I'm on a Mac already (Macbook with 10.14) - am I really going to have to run a VM because of a point release? (That goes for both the OS and Xcode so that's even more absurd)
The standard of their laptops is not good enough any more for me to justify the continued and continuous upgrades. Maybe access to their market would be but I'd need an existing set of customers to justify it, else Visual Studio et al look just as juicy.
So, direct ports are unlikely to be made that much easier, but it definitely opens the door to more code sharing.
Plus, Swift is a really nice language — great to see it getting more adoption.
When I started working at my current client, there was a huge existing Objective-C code base to talk to an internal HTTP API. I just started coding. When I needed to add functions, I subclassed Objective-C classes in Swift.
For non-Apple platforms, you have to use a different implementation of Foundation — which has pretty good but not identical coverage to Apple's one.
As a side note, it's always seemed clear to me that when Apple provides a new technology, they provide a stop-gap solution, like Carbon, for developers who, for a variety of possible reasons, may not be able or willing to use the new tech, like Cocoa.
The bridge between Objective-C and Swift has always seemed like Carbon to me.
Fortunately, unlike when Carbon was canned and rewriting for Cocoa seemed like a real chore, I don't think Apple will can the Objective-C bridge any time soon — but for Swift code now targeting or intending to target non-Apple platforms, it may be best to start thinking about migrating away from relying on the bridge now — decarbonify your Swift code.
I could be wrong but I seriously doubt we will cross platform SwiftUI, UIKit, etc.
The documentation and error messages are a complete disaster though (https://nooverviewavailable.com/)
This project has a good list of SDL Swift libraries at the end of the page: https://github.com/ctreffs/SwiftSDL2 - but I don't know which one is the best one..
Then, we need to get Swift to compile for Android..
Out of interest I spend some evenings in swift (server-side) and it felt some kind of fresh air. Python feels so 'slugish' all the time. But I am worried, if swift will ever be 'useful' server-side.
As I've understood it, Foundation support is pretty good these days? But it would be cool if Apple ported even more frameworks that could be useful for server side applications. Recently I would have loved to have had AVFoundation available when doing some HLS parsing server side, for example.
Arguably people are already used to creating desktop apps using JS/Typescript using the Electron framework. React Native builds upon that.
2021 is going to be interesting
It’s pretty easy to take Apple’s HTTP implementation, add a router, integrate a template engine and have something working, but then the real issues start, because the ecosystem and community just aren’t there.
They would need to support customers who need that compatibility. So either they start being major contributors to WINE or something like it ... But then what about people who need a propriatary driver? Maybe a VM with hardware passthrough....
But they already have WSL for compatibility in the other direction. Not good enough?
WSL is there to sell Windows laptops to those that would rather buy Macs without any interest in Apple's eco-system, rather using them as pretty UNIX for GNU/Linux work.
They realised the mistake of not giving first class support to the POSIX subsystem and nowadays Linux compatibility is more relevant than POSIX.
That opens the door to seamless and full supported AWS Lambda functions in Swift.
Xcode Playgrounds (different from the iPad/macOS Playgrounds app) are really helpful for learning the language or testing things out.
For a complete course, see http://web.stanford.edu/class/cs193p/cgi-bin/drupal/.
Apple also has a series on creating iOS apps. It may be too beginner focused though. https://books.apple.com/book/id1118575552
Not a macOS or iOS app creation DSL.
It's also quite pleasant to use, and has already seen a few uses beyond macOS and iOS apps, including some backend development (Vapor, Kitura, SwiftNIO, probably others).
So you could use it to write command line tools. To write Linux or Windows apps. Or to write servers. Just like any other programming language.
I find it nice to work with, because it has a lot of the nice features Rust does, like affine types, 1st class optional handling, decent single-threaded safety guarantees, and it has a very nice, ergonomic interface. Generally the performance characteristics are not what you would get with Rust, but I am generally more productive in Swift because I don't have to worry about the low level details.
There's definitely some downsides - cross platform support being one of them - but if I'm just working on a tool for me myself to use, I will generally reach for Swift because it's pleasant to work with. I would be happy if I could use it for projects which need to be deployed across different platforms.
This is basic foundation building. It's true there aren't too many good use-cases for Swift on Windows or Linux now. But that can't really start to change until Swift has decent support for Windows and Linux.
Of course, it will take a lot more than this for Swift to catch on outside of its home territory. This is just one necessary step.
More broadly, I think we're still in the middle of the language wars, where the limitations of the historically dominant languages (like C, C++, Java, Javascript) have created openings for one or more newer languages. I think Apple and other Swift proponents would like Swift to become one of those newer established languages and take steps like these to at least keep it in the running.
And this is the Swift Open Source team, not Apple specifically. It’s not an Apple business decision (aside from lowering the learning hurdle for new iOS projects)
Not to mention there’s Swift for TensorFlow, would be nice if you could handle your code locally on a Windows machine: https://github.com/tensorflow/swift/blob/master/docs/WhySwif...
Apple's behavior with open source is kind of "throw it over the wall" which isn't really good leadership.
The good stuff at apple is frameworks and apps, none of it released.
For examples of this, look at Darwin on https://opensource.apple.com
They provide some sources, but they are not complete and are more to look at than to use.
I figure this got through the approval process because it could plausibly get developers to pay attention to apple without letting others exit the apple ecosystem.
Simple example.... the MacBook trackpad
Apple’s trackpads are even better now. How has nobody figured out Apple’s 2010s trackpad technology?
I was talking to someone also in lockdown and she's in the market for a new laptop or iPad/keyboard.
She also wants to play games with family and friends and that's when she realized multiplayer and games in general on iOS and Mac were not a strength at all.
IMO, Apple's above-average hardware (at times, not all keyboards) is severely hurt by the lack of real gaming options on Mac or iOS.
I think that is even more glaring now in our present circumstances.
RSI inducing tap to click barely works and you have to enable a horribly implemented accessibility options just to drag with a gesture to each their own though
the reflective screens they put on those things also cause eye damage
It looks like they are making progress, Chris Sells, a Flutter PM, tweeted
"While things have been delayed on the desktop side for Flutter due to the current crisis, the team has been working hard to bring both Windows and Linux support to alpha. I think you're going to be happy about what you see." https://twitter.com/csells/status/1261036199294062592
Dr. Dobb's had an article in 2014 [2] which said "Swift is proprietary and closed: It is entirely controlled by Apple and there is no open source implementation."
EDIT: I found a HN post from 2015, just over a year after Swift was released, titled "Swift will be open source later this year" [3]. Not immediate at all.
[1]: https://asciiwwdc.com/2014/sessions/101 [2]: http://www.drdobbs.com/architecture-and-design/swift-objecti... [3]: https://news.ycombinator.com/item?id=9680982
The old Windows kernel will run in a hypervisor as needed. Windows already takes advantage of virtualization for everyday programs for security purposes. It wouldn't be that much of a shift to virtualize the kernel too.
More and more of the MS stack is being ported to Linux, seemingly in preparation for this. As of recently you can run PowerShell on Linux and run .NET "Core" on Linux. Since Visual Studio and Office are all .NET, if the Windows graphics/GDI layer is also ported to Linux, then it should be possible soon to build Microsoft Word for Linux.
Swift is a programming language created by Apple, it's been cross-platform for a while but is now going to be officially supported on Windows. Swift is Apache licensed.
SwiftUI is a UI framework created by Apple for the Swift language, it's only available on Apple platforms, and it's proprietary.
Swift looks to be Apache licensed. I'm fairly confident SwiftUI wouldn't have a commercial license, which is a major topic with using Qt.
C# isn't really missing features vs swift but it might have a less modern syntax
How does tap to click induce RSI? Surely it's easier on your wrist and hand than having to press a button with force.
> [...] tap to click barely works
That experience doesn't seem to square with most peoples' experience.
> [...] and you have to enable a horribly implemented accessibility options just to drag with a gesture
I'm guessing you mean that it's annoying that dragging with three fingers is hidden inside the Accessibility preference pane rather than more sensibly placed in Trackpad preferences.
It's true, that's a dumb place to put it — but that doesn't impact whether or not the MacBook trackpad itself is good, which is what you were asserting.
> the reflective screens they put on those things also cause eye damage
Okay, now you're just ranting.
But if you want to go to actual cross-platform-beyond-desktop, Qt is still massive on other devices. From cars to TVs to smart fridges.
For what it is worth I can't see anyone mentioning mobile and however weird this sounds, for me at least cross platform always implicitly meant across desktop platforms.
Cross platform on mobile never really happened, thanks to Steve Jobs, and I am kind of happy for it so far.
In what concerns work, we use a mix of mobile Web, Xamarin, Cordova/PhoneGap, C++ with native views, depending on the customer requirements.
Just out of curiosity, what was your colleague doing?
Its super common to misconfigure Java to use all of your ram. You could have a terabyte and tell it to use everything and it will
Kotlin + TornadoFX + native-image (if it is supported) sounds like a pretty comfortable to use UI stack.
We’ve had several folks go between the two teams, and they’re generally very friendly with each other!
He seems to be back working on Stellar [1].
[1] https://github.com/stellar/stellar-core/commits?author=grayd...
Personally I have some significant experience with maybe 5 different languages, which is already more diverse than the average software dev as far as I know. But I still wouldn't be comfortable to judge something like this.
For instance, I haven't worked with Swift, but I find it hard to believe it's much better than, say, C#, Scala, or Typescript, regarding those metrics. Do you have experience in those languages?
My main languages are Python and C++. I've also used Java, C#, Javascript but not Typescript, among others.
In my opinion Swift does a pretty good job at striking a balance between expressiveness/usability, safety and performance. If it gets more traction under Linux (including a larger ecosystem and better tooling around it) I'd definitely consider it for projects where Python could become a bottleneck but C++-level performance is not absolutely required.
On the other hand, other languages in a similar niche - Rust, Go, even D or Nim? are already more established outside of iOS/MacOS, so I don't know. My experience with Swift has definitely made me more interested in learning Rust, which seems quite similar in some respects.
Depends on your audience.
The more flexible memory management model added recently, native binaries, (as the default option) and even identifier: Type over type identifier is also a nice plus for me, I agree that the IDE situation is heavily in C#'s favor.
If C# is a nicer Java and Kotlin is a nicer C#, then Swift is a nicer Kotlin.
What would you argue C# has going for it over Swift?
What would you argue C# has going for it over Swift? feature wise I don't know but it clearly has a far bigger lib ecosystem which is the most important criterion
Swift was designed to seamlessly blend functional and OO styles from the get go.
Fundamentally, there's still classes and inheritance everywhere in C#, which is also what I hated about Cocoa and using it from Swift before they came out with SwiftUI.
Now don't get me wrong, I am not saying C# is a bad language, just that when you compare it with Swift, Kotlin, Rust etc, it's clearly playing catchup.
> far bigger lib ecosystem which is the most important criterion
Going by that metric, you could argue there's no point to C#, because Java likely still wins handsomely on that front and maybe Java should just give it up to JavaScript anyway.
Clearly we don't just evaluate languages solely by the size of their ecosystem. There's a critical mass that needs to be achieved, but at some point there's 2-3 libs for everything you may want to do and simly having 5 more is not magically better, the same way having "millions of apps" on the App Store doesn't mean much if most of them are not that great and people stick to just a few.
As an example, the GUI situation on Windows clearly offers more choice for C# devs as to how they want to go about their GUI, but I'd argue the Windows GUI situation is a bit of a hot mess right now and SwiftUI seems like a breath of fresh air compared to that.
https://en.wikipedia.org/wiki/List_of_language_bindings_for_...
Here is a Qt C++ example:
QString str = "/a/b/c/";
auto parts = str.split('/');The second set of digits represents major releases. The third set represents point releases.
macOS has been out, using this versioning scheme for a little over 20 years. Don't belittle the work between major releases just because the first set of digits hasn't changed.
Windows Vista through Windows 8.1 are all 6.x, but nobody would claim that Vista and its service packs, 7 and its service pack, and the 8 family are minor upgrades — there were some colossal technical changes under the hood between each, especially regarding security and device drivers.
Same thing for major releases of macOS, even if the user-facing stuff doesn't appear to be all that different.
Also, if your machine supports 10.14, it supports 10.15. The last MacBook Pro that dropped support for anything more recent came out in 2011. Nobody's asking you to buy a new laptop.
It's called being facetious. Regardless, Xcode definitely does not use the 2nd digit for major releases[1], which does require 10.15.
> Windows Vista…
Completely irrelevant.
> Also, if your machine supports 10.14, it supports 10.15. The last MacBook Pro that dropped support for anything more recent came out in 2011.
Yeah, the reality for my machine is that the upgrade did not take, which is funny considering I only tried to upgrade because of the Xcode requirements.
> Nobody's asking you to buy a new laptop.
They sell hardware. If you think they introduce breaking changes to the operating system tied to the hardware because of necessity then I have a bridge to sell you.
[1] https://en.wikipedia.org/wiki/Xcode#Xcode_11.x_(since_SwiftU...
Then stop being facetious. It wasn't clear you were being facetious, anyway.
> Completely irrelevant
No, it isn't, not to the point I was making. You also don't get to decide what's relevant to a point someone else is making.
The point is that Vista's version number is 6.0, 7's was 6.1, 8's was 6.2, and 8.1's was 6.3. All seemingly minor version number bumps, all major releases.
> Yeah, the reality for my machine is that the upgrade did not take
That's unfortunate — but nobody else's problem. If you have a capable machine, harping on about ...
> They sell hardware
... doesn't really stand. They may be selling hardware — but you don't have to buy any.
I'm with you on this. When I upgraded my 2015 MBP (or was it 2013?), I was still able to manually install new memory and SSD. Since then, newer MacBooks are not user-extensible, from what I hear, with sealed parts. They have a touchbar instead of function keys or escape (!), the keyboard quality is questionable, and there's no standard headphone jack. macOS has seen unstable releases with poor QA, with one bug bricking the machine.
In addition to those issues, I've been disappointed with Apple's stance and decisions about their proprietary operating system. I guess I've known all along, but it's become glaring. In newer versions I've noticed dark patterns, like being unable to set a different browser than Safari as the default application to open certain file extensions.
> the privilege of writing apps for Apple
This summarizes my feeling. Especially compared to what Microsoft has been pouring efforts into open-source, the way Apple is treating their long-time fans is luke warm at best, hostile at worst.
That's why, as excited I am about the potential of Swift as a cross-platform language, unless companies other than Apple are behind it, I won't be comfortable investing time into it.
I've never tried Swift, but it seems it could have all the required features. I guess it's just lacking a lot of libraries that work on Linux.
But those have been out there in a more or less mature form for decades, with no major uptake in sight. I guess they're just too esoteric for them to reach critical mass. So here I am, stuck with bash/python/C, and dabbling a bit with Rust..
Windows, Android, and the web, constantly changing so that there's never really been any sense of stability, blind a lot of developers to the fact that good design is both functionality AND looks.
When people complain about designs of controls being out of date, they don't only refer to looks. They refer to how they feel, behave — or more succinctly, don't correspond to the expectations set up by the rest of the system.
To reduce the debate down to looks vs. functionality is reducing things down to the wrong level, missing the forest for the trees, and ignoring the user — a person who often isn't able to express what they need but knows what they want, not often realising that they're the same thing.
There are tons of existing cross-platform UI frameworks (Qt, wx, libui, JavaFX, TornadoFX, ...). The comment above says "Everybody would jump to Swift [for new projects] if it meant a cross-platform GUI framework."
And yet people are still wondering why Electron ends up being the technology of choice for so many desktop apps.
probably because of the large number of JS only developers.
Yet, they don't.
JavaScript is popular for pragmatic reasons (a.k.a. "it delivers results"), so is PHP. They aren't the best languages, but developers who choose them aren't simpletons who can't code in other languages.
I have spent far too much time on HN recently in related discussions.
Having access to libraries like React and its huge ecosystem is a big plus for productivity (example vs. Qt at https://news.ycombinator.com/item?id=23154315).
Building custom UIs is also very easy with the flexibility that HTML provides (https://news.ycombinator.com/item?id=23164595), even though it can be done with other technologies (and there are some examples of that).
Qt is pretty good but QtQuick can be fairly barren in some areas i.e. if you want a embedded spreadsheet you're out of luck unless you make your own.
Hey, have you checked out https://github.com/ec1oud/spreadsheet.qml?
I think because the focus is so much on the trackpad technology itself, which may be a misplaced focus. My fear is that the solution may involve rearchitecting the entire application-GUI stack to get it working on Linux. Why? Because Apple's trackpad is not a mouse emulator, it's a first class input device all the way up to the application. Trying to make the driver really smart is fruitless if you throw out all of that rich information and try to reduce the inputs down to what a mouse is capable of.
Luckily Linux is closer to figuring it out than Windows and I'm watching several issues on libinput and wayland which are trying to address it.
[1]: https://support.apple.com/guide/chinese-input-method/use-tra...
There are also various 3-finger swipe gestures, and force touch lets you click on things with different levels of force to do different things.
The only Linux application I've seen that uses smooth scrolling with acceleration is Firefox, and that isn't nearly as smooth as macOS scrolling (which is available in every application).
It seems that this is in fact the chief complaint of the folks who commented above you. It seems like they're saying that they choose to purchase alternative goods because of that behavior. That seems critical to me, no?
Edit: I knew this would get downvotes, but it's true in my experience. The closest exception is Microsoft themselves, and even then their hardware focus is limited and mostly intended as a demonstration for their OS customers.
Now, to versioning. There is no one standard for versioning. Again, we're mainly techies here, we know this (I hope). I like semver[1] (though I'm having doubts[2]), some prefer calver[3], others use versions as branding[4] (which extends beyond computing). Hence, the choice of version scheme chosen by another organisation or project has no relevance to any other project, their being in the same category or field or competing or whatever simply have no more relevance to this subject than Ford Escort MkII moving to MkIII.
If you're into recursion you might also try applying you "who gets to choose the relevance" logic beyond your own comments, it'll be enlightening.
Finally, if you're going to suggest that all X are capable of something but ignore exceptions to that to me smacks of dogmatism, and more importantly, of no help whatsoever to the person you're responding to.
If you have something helpful or insightful for me then please respond with that, else you can comment further up the thread with your thoughts about versioning and how a hardware company that has been fined for planned obsolescence via software updates[5] isn't angling for more purchases when it stops its dev environment being backwards compatible so it can support a half finished UI library.
[2] https://www.youtube.com/watch?v=oyLBGkS5ICk A fascinating talk by Rich Hickey where he questions semver and the way we handle change as developers.
[4] https://hbr.org/2011/05/the-best-way-to-name-your-product-20 It's interesting, they did lab tests:
> In laboratory and field studies involving hundreds of subjects, we found that when consumers see a brand-name continuation, they expect improvements to existing features. When they see a brand-name change, they expect fundamentally new features, and they perceive the product as riskier (likelier to fail or more prone to compatibility problems with previous products) but potentially more rewarding (higher in quality, more satisfying to use).
If OS X to macOS isn't a brand name change then what's the point (pun intended) of the 10?
[5] https://www.itworld.com/article/3316958/apple-and-samsung-fi... I got a free battery out of this one, perhaps I shouldn't complain? (wry humour alert;)
Edit: I managed to muck up the numbering. Is Markdown capable of off-by-one errors? I can make it happen.
btw. it's the other way round. most modern stuff was in c# while the others played catchup and some still do. no language has async/await implemented as good as c# has, no language has nullable value types as good as c# no languages has a reflection api that is really easy to use and if that isn't enough there are also expressions which are more like macros and due to the way how generics are implemented no internal api sucks. btw. c# even has channels.
swift has nothing over c# and all features swift has were more likely be in c# before they were in swift.
If the SwiftUI code were opensource it would be much more pleasant - I could paw through the code if I needed to, file issues, and so on. But the whole experience compared to writing typescript with VS Code is shockingly bad. With the preview open Xcode sometimes stutters so much that it misses key presses - so I’ll type a function name and it’ll come out missing letters, because apparently I wasn’t typing slowly enough for my $3000 computer from 2016 to keep up.
That Xcode gets trounced in developer experience by vs code - an IDE running on electron - is really a testament to the work Microsoft has put into performance. And it should be hugely embarrassing for Apple.
They used to release things where you see they put a lot of thoughts into it. Now they are half baked. This isn't so much a problem on Apps ( The Product ) where it is constantly being updated and tweaked. But with code you have the hassle to try and keep up. And the pace of improvement is very very slow. To put things into perspective, Swift UI has been development for 4 years. Not exactly the state of things I would like it to be.
Apple also isn't dogfooding much with Swift. And I think that is great. In many ways I starting to feel Swift is like Dylan [1], it is new, it is exciting, and it is fun. But somehow after nearly 6 years Objective-C stills feels better. The syntax may still be god damn awful, but it is small enough to be called elegant. While Swift felt like C++ with better Syntax.
[1] https://en.wikipedia.org/wiki/Dylan_(programming_language)
That's because it didn't have a stable ABI until Swift 5, released last year. Now that it does, a lot of their iOS/iPadOS apps have been rewritten, at least partially but sometimes fully, in Swift; this includes some of their Catalyst apps on Mojave and Catalina.
The only app I know for sure to be fully written in Swift, thus far, is the Apple Developer app (previously called WWDC), but I know there are others (they were mentioned in last year's WWDC sessions).
> Swift UI has been in development for 4 years
I must have missed this. Where did you hear this? I'd love to see more info about that.
This experience is shared by basically nobody? I used to love Objective-C, which was unusual even before Swift, but I would not in a million years switch back to using it. Swift is so much better in every single way.
You can change state without all the annoying purely functional programming stuff ([... previousState, newValue]). Just change it.
You can change a prop passed in and even pass a new value up to the parent. So you know the pass a function down so the child can change a value in the parent? Just pass the variable you want changed down with @binding.
In fact, most of the time I found myself staring at a “type too complex, add annotation” error. That one doesn’t actually mean your type is too complex, it just means you’re passing the wrong thing somewhere and instead of a useful error message the compiler just gave up and broke.
Isn't that handled by the swift runtime?
By without any changes I meant, without platform-specific recompilation. Very similar to what java runtime provides for JAR.
btw, they are even deprecating opengl! i have no idea what that means for the tons of games written with an opengl backend. probably not an issue for the iOS ecosystem though.
so that's what is going on...
Instead of providing the same UI that works badly on every device, SwiftUI interprets each concept differently according to the platform.
For example, a Toggle in an iOS and iPadOS app looks like a on/off switch, while on macOS it's rendered as a checkbox. A Picker has is scrolling wheel on iOS but it's shown as radio boxes or a drop-down menu on macOS.
Navigation is also the same. On iOS, a NavigationView offers the drill-down navigation common to iPhone apps, while on macOS it creates a split master-detail interface.
Each implementation does so by using the native UI framework of each platform under the hood, UIKit on iOS, and AppKit on macOS. I don't know how UI development works on Windows, but my speculation is that a SwiftUI implementation would work the same way.
1. Native feeling, but sufficiently inflexible that only very simple, common UI patterns can be implemented
2. An “uncanny valley” native ui, where things are almost native but often feel wrong in subtle ways
I think that’s why Electron has succeeded where so many cross platform UI frameworks failed: it’s so obviously not native that it doesn’t fall into that “uncanny valley” anymore
The way they have implemented it for even their own "cross-platform" needs (where the "platforms" are really basically different versions of the same OS) works very well — the sickening, jaw-droppingly awful apps from Twitter, JIRA, etc that use the "Catalyst" system of porting iPad apps to Mac shows why the approach is really necessary.
(Those apps bring iPad metaphors to the Mac, so what should be a single interaction, picking something from a menu, is a jarring series of taps, swipes, and animated fuckery.)
If that "render the concept using the OS's native widgets" approach was necessary even for cross iOS-macOS apps, it will be even more necessary across Mac and Windows, where a lot of the UI conventions are wildly different, and sometimes literally the opposite (e.g. the standard placement of buttons).
And it's obviously the only way it could work for web apps.
Also never been really tried, except by second tier companies with small recourses like Trolltech/QT, or even smaller open source attempts like Wx.
Then when RIA was a buzzword Sun/Oracle tried to modernise Swing without success. Today the only big Swing apps that I know are Netbeans and maybe IntelliJ (but I think that IntelliJ has tons of customisations on top of it).
So is even hard for a big company too. I guess the problem is that the framework will be always behind the OS, and you need to recreate all the styles or to create a thin layer with the common denominator between platforms.
Is interesting that different approaches to cross-platform UI (draw all vs thin layer) goes back to Smalltalk. AFAIK the idea of Swing drawing all the UI came from VisualWorks, while the thin layer of SWT came from IBM VisualAge
Swing was ill thought from the beginning. Over-engineered, too complex, slow (as if there were 2-3 layers between the code and the drawing engine), and looking bad in every platform...
>So is even hard for a big company too. I guess the problem is that the framework will be always behind the OS, and you need to recreate all the styles or to create a thin layer with the common denominator between platforms.
I'm not so sure that's a problem. You can always look different than the OS, and do a good job at it. Millions use the Adobe Creative Suite, Cubase, Pro Tools, StudioPro, etc, and their non-native UI is the last thing they complain about...
Heck, even Electron apps do that. Why wouldn't users like apps that look different from the OS, the way Electron apps do, but with far less memory usage, much speedier drawing, and better integration options with native widgets when needed?
I think a reasonable compromise is to have "char" be a 32 bit type, whereas a "string" would be UTF8.
Guess what, what in most of them I never had any issues to center elements, or create fake UI elements out of list items.
Also layout managers were already a thing back in 2000.
Main difference is that HTML has affordances to size elements "upwards" whereas in other toolkits you need to do this manually (e.g.: estimating text size is a thing, in html you don't need to care about this)
Now, this also encourages original layouts which are untrue to platforms which is not a good thing imo.
The velocity and bounce effects on scrolling are implemented at the application layer. They don't depend on any unique features of the trackpad hardware or driver stack.
Zoom and swipe gestures are nice to have, but I don't think they're critical in the same kind of way that pointing and acceleration are.
Force Touch is more of a gimmick than anything. It's a relatively recent feature, and was only added to the Macbook Air in 2018; very few applications do anything interesting with it. Personally, I leave it turned off.
I didn’t say they did. Oh macOS they’re not implemented by the application though, they’re implemented by the UI APIs and thus available to all applications for free. This is not the case on Linux.
https://developer.gnome.org/gtk3/stable/GtkScrolledWindow.ht...
https://doc.qt.io/qt-5/qscroller.html
Why it's not working on your applications is a different question.
ArtIsts are one of apples most important cohorts. People here so condescending but why pretend like people don’t care about art or gaming?
Folks care far more about using their computer to make art than hating on Swift or Electron
Chris Lattner said in one of the pod cast, I think it was Accidental Tech, where Swift UI started before he left Apple. Since that was 3.5 years ago, Swift must have been close to 4 years of work.
oh nice, i had no idea SDL had metal support!
no one in the SDL developer community tells you how to support metal or how to use it. instructions for MacOSX redirects you to another library, which has since removed their instructions.
who exactly are we kidding here?
Here,
https://wiki.libsdl.org/SDL_SetHint?highlight=%28%5CbCategor...
https://wiki.libsdl.org/SDL_HINT_RENDER_DRIVER
And after a 5 minute search,
https://gist.github.com/gcatlin/b89e0efed78dd91364609ca4095d...
Swift really is much more readable than Objective-C, too.
Swift is absolutely less readable than Objective-C. Objective-C is known for its verboseness, which makes it easy to read. Swift has all kinds of easy ways to make it less readable, like the question mark. There is no way one can objectively argue Swift is more readable than Objective-C.
I work primarily in JS and PHP.
They are both deeply, deeply flawed (though I have learned to love JS's good parts, while I still hate PHP).
I have programmed in many languages - Java, Python, Scheme, and Bash are all ones I've worked in professionally, and I've spent plenty of time in Emacs Lisp. This doesn't touch on the ones I've tinkered with for fun.
JS and PHP are not the best languages, but they work, they're everywhere, and they're usually what your client already has in place.
Changing languages rarely delivers any actual business or end user value.
So, I work in what the client has.
JS will long outlast PHP, because it's such a massively deployed language and browsers can effectively never remove support for it.
PHP may slowly die out, since it's strictly on the backend, where you can choose your language.
JS is eternal.