Highlights of new technologies introduced at WWDC 2021
developer.apple.com
developer.apple.com
Xcode Cloud requires you to push your repository to their servers, and you have to configure the "Workflows" via their desktop application. No configuration as code, no shell scripts you can run from your existing CI/CD, no ability to trigger a build remotely or push code to them on demand. You can't even synchronously wait on a build to finish - you have to set up a web server and listen for a webhook! You can't integrate it with your existing CI/CD - whether that's GitHub Actions, GitLab pipelines, etc.
In other words, their build tooling does not integrate with any devops infrastructure that exists in the world.
It's like they asked devops engineers what the state of the art is (declarative configuration, scriptable builds) and said, "we'll not be doing that, thank you very much."
Why oh why couldn't they have taken a page out of Google Cloud Build or Azure build and allowed me to "build" a Dockerfile using a local CLI command in their cloud? Or AWS CodeBuild and let me push code or a tarfile to a storage bucket (or pipe it to a CLI command)?
It's interesting how the outcomes of Apple's engineering decisions are coincidentally indistinguishable from an attack on general-purpose computing itself. I wonder how many more years it will be until they stop shipping me a compiler entirely (never worry about confusing Xcode updates again!!) and make Xcode Cloud the only way to write software for iOS devices and M1 Macs. LLVM's licensing means I'm not even entitled to the changes necessary to support their custom hardware. https://boingboing.net/2012/08/23/civilwar.html
Probably never, especially with respect to Macs. I am beginning to feel like the cranky contrarian around here for continuing to argue that macOS will never be locked down to the degree iOS is, but I'm going to continue to argue it. You will always be able to develop locally on your Mac, always be able to get to a shell, always be able to install third-party apps without going through the App Store.[1]
But, Xcode Cloud (I nearly typed "Xcloud," hmm) might eventually become what they use as a solution to allow Xcode on the iPad. That would allow them to stick with their "iPads are app consoles" philosophy, even if it might be bending it a little.
[1] With the asterisk that I firmly believe there's a new OS that will replace both iOS and macOS down the road, and I'm not willing to make any strongly-worded predictions about its security model. Yet.
The infrastructure to grant/deny use of specific applications to individual users has existed in macOS for years if they wanted to use it that way. Their server just currently gives the same answer to all requests for the same signature.
https://eclecticlight.co/2020/11/25/macos-has-checked-app-si...
How about launching those applications totally privately — no network requests at all?
Spoiler: `sudo spctl --master-disable`. Luckily we're still allowed root on ARM Macs for now :)
In the future, though, we run into the footnote in my original comment that I said I'm not willing to make any strongly-worded predictions about yet. I'm still not. :)
The other, and maybe more likely, answer, though is consumer applications that could use it. On HN we tend to think about development tools when we think of "software that needs lots of power," but there's image, video and audio editing, real time effects processing, animation, all of that.
It's an interesting approach - turning an educational/prototyping environment into something that you can theoretically do real work with.
Not sure why we don't have Final Cut and Logic on the iPad though - it's certainly powerful enough.
Isn't that the point? It _is_ your new CI/CD. If you don't want it, don't use it. I don't really see why any team would go all in on Xcode Cloud and keep their old CI infrastructure around - why split responsibilities between platforms?
The code still lives with your preferred Git hosting provider. Xcode Cloud copies/clones the code just like any conventional CI. Once the build is done, Apple claims to remote/delete any copy of it.
> No configuration as code, no shell scripts you can run from your existing CI/CD, no ability to trigger a build remotely or push code to them on demand. You can't even synchronously wait on a build to finish - you have to set up a web server and listen for a webhook! You can't integrate it with your existing CI/CD - whether that's GitHub Actions, GitLab pipelines, etc.
I will reserve my comments about inter-op till they release their API and I get to play with it.
Xcode Cloud seems to be a blessing for iOS developers who don't have exposure to CI/CD systems. And that includes most iOS developers. And also it will be a blessing for companies since hiring good CI/CD engineers for iOS is really hard.
My personal view is, Xcode cloud does a lot of things what fastlane was doing using Apples Cloud infrastructure.
What do you mean? It says it supports BitBucket, GitHub and GitLab.
https://developer.apple.com/documentation/xcode/configuring-...
> This step is necessary because Xcode Cloud uses your personal SCM account to monitor the Git repository for changes.
From that point on, Xcode Cloud polls/monitors the repo for changes, but it does so in a way that doesn't integrate with CI/CD.
They had a chance to try and help close that gap and even charge for it, I’d rather not have to setup macstadium, configure Anka controller and pull 20gb+ images.. just solve my problem for me..
The incredible amount of work that has to go into https://github.com/fastlane/fastlane/releases always impresses me.
APIs and authentication is ever changing all because Apple refuse to embrace modern devops. They have this idea that apps are produced by lone devs in their bedrooms and the process is designed for them.
Not everyone needs 100 team members for a messaging app.
The majority of the top 100 native iOS apps are developed by teams of people working together. Apple unnecessarily makes it difficult for that group, which creates a barrier to entry for more sophisticated app development which is bad for the ecosystem.
https://uk.pcmag.com/gallery/130620/the-best-iphone-apps-for...
Shopify detailed the hoops they had to jump through a few years back (https://shopify.engineering/scaling-ios-ci-with-anka) where they specifically say that CI for iOS has to be done entirely differently to the rest of their infrastructure:
It’s the only piece of infrastructure at Shopify that doesn’t run on top of Linux. We can leverage the same Google Cloud infrastructure we already use in production for our Android build nodes. Unfortunately, Cloud providers such as Amazon Web Services (AWS) and Google Cloud Platform (GCP) don’t provide infrastructure that can run macOS.
You benefit from using these tools almost immediately when you're >1 developer and that's where XCode Cloud may be helpful, the 1-5 developer team size. But you're still in trouble if you are using something like React Native/Flutter/Kotlin to build iOS and Android apps and don't want to maintain separate CI processes.Apple is coming from the IDE as main tool, as they always have done since Mac Classic.
My experience interacting with teams and devs targeting Swift is that when Apple says “jump” you jump.
What do people already using Swift in production think?
The problem with Swift (as of like 1.5 years ago when I stopped using the language daily) was its ecosystem. Swift package manager wasn't really used (at least for iOS apps), there was no real decent ecosystem outside the xcode world (no langserver, some server-side swift abstractions).
I think Swift would really thrive if Apple were to give it some room to breathe in the open source community, but until Swift decouples itself more from Apple's own needs, I couldn't imagine using it for anything other than iOS development.
Swift has the benefit of actual value types, no GC, and IME it's much faster. But it only runs on Apple's OS (technically there's support for Linux but people say it isn't good). Kotlin has access to all Java packages and runs on the JVM, and with Kotlin multiplatform JetBrains is trying to make it run on almost anything.
Besides which I don't want to have to keep track of weak references, at that point I would rather just have a full ownership model: https://github.com/apple/swift/blob/main/docs/OwnershipManif...
There is a Herb Sutter talk at CppCon about the downsides of reference counting.
Basically the solution to those problems is to make use of hazardous pointers or deferred destructions on background threads, which are a kind of lightweight tracing GC.
Outside Android, Kotlin will always be playing catch-up with platform features, having two ways of doing the same thing for features introduced before the platform went their own way, FFI that only goes one way, the native variant is being redone due to the clever idea of being originally incompatible with JVM memory model, it is officially a way to sell InteliJ licenses.
Anything Rx beyond the simplest of examples? Nope.
I'm not trying to argue about that though - I just want to know under what set of circumstances I should prefer async/await over Rx and vice versa.
From what I'm gathering I should stick to Rx (Combine) when I have multiple related tasks or want to fire off changes in response to events, whereas async/await is useful for one-off asynchronous tasks like most web requests? I'm really not sure.
Maybe I just haven't learned proper EventLoopFuture-style development style, but you really seem to get stuck callback hell, similar to the early days of NodeJS. It's a bear on code readability.
Re: the sibling comment about Combine -- I've heard great things about Combine but AFAIK it's still part of Apple's platform-specific layer atop Swift so the small group of us using Swift atop Linux can't use it (yet?).
> when Apple says “jump” you jump.
just not with the betas
With Swift, I have a hard time getting a feel for what the unifying gestalt of the language is supposed to be. It's a better C! It's objects! It's functional! It's typesafe! It's protocols! It's async! It's closures! It's a better C++! It's modern! It's a systems language! It's a scripting language! It's for UIs! It's actors! It's declarative! It infers things!
I get stuff done with it (obviously) and it's capable, but the effect has not been "it's a bird, it's a plane, it's Superman." It feels like some sort of anime shapeshifter caught in a cycle sometimes. Or a bogart.
I keep hoping these are growing pains, intermediate steps, with a "long game" characteristic of Apple, but I'm not seeing it yet.
Kotlin seems to be following a similar path, just a few steps behind in some places, and a few steps ahead in other.
In fact, you could state the same complaints against Turbo Pascal on the MS-DOS days.
I'll still count this as "called it" since 2020 disrupted every timeline :) https://news.ycombinator.com/item?id=21942520
I think the next typical time of year they do hardware announcements is fall, like around August, though that doesn't happen every year. And then iPhones are almost always in September.
I read on one of the rumor sites that 65% of WWDC keynotes also introduce hardware. I don't know if that's true, but it could indicate why so many people thought new computers were coming today.
For example, it would make sense to announce new CPU architectures like Intel and M1 since the transition heavily affects developers.
But incremental improvements to existing hardware, not so much.
2013: The "trashcan" Mac Pro, AirPort TimeCapsule/Etreme
2017: iMac Pro, HomePod
2020: M1 MacBook Air and 2-port 13" MacBook Pro
Hardware announcements do happen at WWDC, but there's no real pattern to it besides, perhaps, having a Mac available that developers would be interested in.
Post-M1 MacBook Pros (and bigger iMacs) are almost certainly around the corner, but presumably they're just not ready now.
(Extra embarrassing because I own an M1 Air…)
2021: nothing
2020: M1 Macs
2019: Mac Pro
2018: nothing
2017: iMac Pro, HomePod
2016: nothing
2015: nothing
2014: nothing
2013: Trashcan Mac Pro
2012: MacBook Pro 15" (first retina Mac)
2011: nothing
2010: iPhone 4
That being said, the iPhone 4, Retina MacBook Pro, and M1 were transformative - nothing was the same afterward.
(Probably not coincidentally, they also all required major software revisions!)
And as a developer who has used 2 monitors for almost 20 years, actual multidisplay support, and not a DisplayLink hack, is a reasonable demand. Even at a developer conference.
I expect the new MBP will have the M2, which should be available in quantity soon. Besides the (presumed) hardware improvements, the M2 will be a marketing-friendly way of differentiating the MBP from the MB and MBA, and persuading people to pay a premium for it.
If you do go in for rumours, Mark Gurman and Ming Chi Kuo are pretty much the only two reliable ones. Neither called for macs this wwdc.
Based on the lack of an M1x (just an M1 with more cores) showing up by today, I suspect that it doesn't be exist and probably never existed. At this point Apple will go straight to the M2 (next gen cpu/gpu archtecture).
Because Apple has a very regular release cadence for their A-series SoCs of about 1 year, I don't think we will see the M2 launched until closer to the A15's expected release date of September/October.
They shouldn't need to stockpile the M2 as much as they need to stockpile the A15, so I'm hoping for an August launch.
That’s before we mention how overpowered they are and not introducing even the future possibility of actually pro apps at the developer conference.
I was expecting a SwiftUI replacement for NSTextView/UITextView that allowed using NSAttributedString(s) (or better yet the new AttributedString), but I can't find anything. Am I missing it?
Most of us will embrace these changes but it will leave a bunch of point-solution vendors in the dust eventually. Or they will adapt.
They fired a lot of shots at a lot of people tonight. I, for one, am very excited.
I just watched the 24m Verge edit, and I didn't notice any instances of this.* Are there, say, 3 examples of single-feature companies who will be "Sherlocked"?
(*If I had to stretch, iCloud+ Private Relay could take the place of a VPN for some people.)
- 3rd party AirPlay receiver apps (you can stream to Macs with new macOS)
- Universal Control looks very Synergy-like (I don't know of an iOS alternative, but surely nobody is going to try compete with Apple now)
- Xcode Cloud - arguably competition to rent-a-mac services like MacStadium
- SharePlay probably will replace SyncTube for a lot of folks
More like Corellium since Apple tried to buy them, failed, then tried to lawyer them to death, with the DMCA claim afaik still undecided:
https://twitter.com/mdowd/status/1193299900408090624
https://arstechnica.com/tech-policy/2019/08/apple-sues-virtu...
It will require some major effort from apple to overtake it, it's not just being cross platform
And there's more! Dial-in, guest access, persistent rooms with/without password, organization-level restrictions, automatic recording, cloud upload of videos etc..
It's not a technical problem for Apple to do everything Zoom does, but it'd be a massive product shift to try to it.
Definitely! You can't come up with something like that in the office, literally impossible.
Getting pencilkit and a webview to work properly together has been an impossible task.
I haven't been able to find a way to draw on a WKWebView, while synchronizing both scrolling and zooming of the pencilkit and WkWebView.
:( there's so much potential there that I just can't extract.
I have it working even without swizzling using custom drawing engines. The issue lies within the dynamic and changing nature of the web and cross-device/size display unless you imagined it as one-off raster drawing.
I could potentially see Swift becoming a competitor to Scala/Akka if they can advance their Actor implementation into more of a distributed system. Apple did hire one of the core Akka maintainers, so the skills are there.
It is as useful as Objective-C with clang on non Apple platforms.
But so many of them are minor (background blur and noise reduction in Facetime, really?), a catch up to competition (almost anything related to photo and text), or features for features sake (new Safari design).
How many of these will be badly designed, break HIGs and accessibility, (re-)implemented in Catalyst and abandoned a year later?
Would rather wait a year for the Apple Silicon ecosystem to mature than to jump all in now and wait for the software bugs to be fixed for a year so I can do my work.
https://developer.apple.com/documentation/healthkit/
Not that anyone is officially planning to operate economies, travel, or society on them or anything, as that would be a conspiracy theory. ShazamKit appears to be the foundation for general search for sound. Searching for someones voice can't be far off.
Imagine predicting that we would need to develop countermeasure technologies to retain our privacy.
Impressively versatile wording
Also, if I was a business owner, I would 100% want some sort of vaccine verification system if I decided to lift the mask mandate. Why would I want my employees or other customers to get sick when the cure is available for free?
I don’t get the Covid-19 anti-vax stuff either (if you go far enough left you end up on the right), but I also don’t get the hysteria around people all of a sudden trying to require vaccines or masks when you didn’t care whatsoever less than two years ago with many other virulent diseases ranging from the flu to streptococcus and others.
I always feel like I’m caught between two groups of crazies. On one hand you have people who didn’t know they were anti-vax until Donald Trump said so (good god…) but then on the other hand you have people who are hell-bent on wearing a mask in conditions far less or at worst just as dangerous as two years ago. Like can everybody chill out?