WWDC 20 – Day 1 – Platform State of the Unions


The one thing that you don’t see when you are at home following WWDC, is the “Platform State of the Unions”. This year it is streaming via the Developer App and everyone can watch it. This will be interesting to see how the non-developers react to the more detailed technology discussions.

One of the cool things that happen at WWDC, is the streaming video that is playing on the large screens when you come into each session. We are now having that with the streams… I’m digging it.

Lots of demos coming up: iOS, iPadOS, WatchOS, tvOS, and macOS. From a developer perspective I am really excited to learn more about Xcode 12, SwiftUI, and App Extensions. So now people can change their email and web browser defaults. Allowing others to use the FindMy network meal that the challenges to Apple Tags must have been real. Go to developer.appl.com/find-my.

Demo of Big Sur on a new Apple Silicon Mac. Showing the details from the keynote video. The key thing of this demo is that it shows things working, but as anyone who does demos, you know there’s the “Happy Path”. So hopefully my code will run on the test hardware. Speaking of which, I am thinking about applying for this.

Key idea behind building the chips is to customize the chip to the task at hand. The architecture of the design was done to give them the ability to do this, and this same architecture will be used to build Apple Silicon for the Mac. This will be a family of SoCs unique for the Mac. This should drive improved performance.

Balancing energy efficiency and performance is a key challenge. Years ago one of mentors showed me a heat sync for a leading edge performance chip from the late 90’s – it was almost the size of a cinderblock. So getting that balance right is always a challenge. Personally, I think Apple has done a great job with this over the years.

The new Mac will have a dedicated inference chip – meaning that AI will get much better. Additionally, dedicated caching for cloud content, improved image processing, and other improvements to GPU performance will change workflows on the Mac. If Apple lives up to the potential, things will certainly accelerate based on the architecture.

The Quick Start Program – is used to get started on the transition. The DTK will have the OS and Xcode. See software features will not be supported, register under Universal App Quick Start program. The new universal apps will have 2 versions of the code in the same bundle. This will allow the end user to not notice any differences regardless of which platform it is on.

Testing of Open Source projects has already begun after Apple ported many of them to Apple Silicon. This include Python 3, and many others. Apple has also been working with Unity, and demonstrated a version that can target both Intel and Apple Silicon at the same time. Next month Unity will release a preview version of this system, and later this year they will release for production.

Rosetta 2 will be released with new macOS Big Sur which include the ability to run intel apps. Most apps will be converted during the installation. During the example of how to do this, they went to pains to show that things would be “the same” for developers.

They showed Affinity Photo as the image editor app to show that the Rosetta2 app didn’t add any overhead. The overall approach here reminds me a lot of Wine apps, which swap out windows calls to Mac calls. I wonder if the Apple development teams looked at this model.

A key message was that if developers switched to DriverKit and ExtensionKit then your device drivers would be supported on Apple Silicon. If not, sounds like these are going to be critical for the future.

Another demo of Debian running under a ported version of Parallels running on Apple Silicon. This allowed for a version of an Apache server running to demo cross platform development environments. Apple is working with Docker to make sure they can get it running on the Apple Silicon environments.

Catalyst is the underlying process to allow for iPhone and iPad apps to run on the new Apple Silicon devices. As developer, you can choose to allow if you want your apps to run on the Mac. iOS apps will allow for some default menu options, etc. There are a couple of tricks that Apple plays. 1) They add a new wrapper for app package, so that the user can rename the app, etc. 2) The App runs in another wrapper the sanitizes the path information. iOS app extensions work “where appropriate”, for example an iOS photos extension will show up in the Mac Photos app.

macOS Big Sur – this is a huge software release.

The new design language will be provided as templates for developers. If you provide an image and text, you get new documents icon template. Apple will provide this for you automatically. I think I am liking the new layouts and design language, but I am sure that my mother in law and parents may have trouble with the auto hiding information. There are some new enhancements for SF Symbols, that I am planning on watching later this week. Apple is putting color back into many of the menus, etc.

Mac Catalyst – Apple is updating it for their own apps, so we should see new features in catalyst.

The new Mac Idiom will allow Catalyst apps to address screen views and sizes that are more like Mac Apps. A great example of this is the new version of Messages.

It is such a change that Apple is giving Big Sur a new number.

Mail showing off the new Sidebar API

Now that the iPadOS has keyboard and trackpad support. So there are new APIs with side bars, so you can slide over additional content. This allows for simplified navigation in your app. New pickers have been exposed, calendar, color, emojis, and more.

Action sheets have been moved over to new menus, this will allow for more commonality between the iPad and the Mac.

Hardware extensions on the iPad allow for more experiences for users. We then learned more about LiDAR. Scene geometry allows for building a 3D mesh of the room. The Depth Map uses the LiDAR to get much more detailed room measurements. And the positioning of virtual objects will better address people walking in front of or behind things. Apple pencil is really expanding capabilities with Scribble. Your apps should get it these features by default. Text fields automatically convert scribble to text. If you want to add additional features in your app, you will need to enable PencilKit. Drawing with Pencil is using a new CanvasKit. You can now get stoke data as the pencil is going across the screen. You can tell when the pen is on the screen verses the finger is on the screen.

iOS 14 – Widgets and App Clips are the key areas of focus.

There are only three sizes of the new Widgets. They are available in the “Today” view, but you can also add them to the home screen. They are written in SwiftUI, which makes it easier to share them across iOS, iPadOS, WatchOS, and macOS. You can archive the view of the widget which allows for better efficiency in drawing. Users can stack widgets so that you don’t lose screen space, similar to the Siri face on the Watch, stacks will put the “most important” widget on top of each stack at the right time. This is based on a timeline view that you define in your Widget archive. Sounds like Emoji Rangers may be the sample code for understanding widgets. WidgetKit is using the Intents framework. (I’ve been working on adding Siri Intents in my app, so it certainly seems like a good thing that I should get working).

App Clips – is all about getting access to things quickly. The pop-up is autogenerated by Apple based on your metadata. If the user sees the popup Apple will download the app in the background. You can also setup “offers” to encourage users to upgrade to the full version of your app. For App Clips, you can setup 8 hour notification permission, this means users don’t get the prompt and after 8 hours of the App Clip being on the device, it will automatically lose notification permission.

In App Store connect you update your privacy information. Very simple.

Apple Watch now allows for SwiftUI based complications. By setting up different identifiers for you complication you can provide a user with multiple complications from your app. Xcode 12 now supports complications previews in SwiftUI previews. Very cool! When you share a watch face it comes across as a text, and if you don’t have all the apps on your watch, it will automatically download those, and set it as the watch face on the watch.

And finally – Xcode 12 review. Document Tabs is the new way to organize your work space. Double clicking on a document and ti will show as a new tab. You can also show things like you Git Commit log. New SwiftUI templates allows you to automatically setup things easily. test coverage can also include UI responsiveness, so that you can work on performance improvements. Also added in StoreKit as a testing environment that does not require deployment fo the app.

Swift Packages now include the ability to have assets, control and previews. This should increase the ability to share code and features with others.

SwiftUI updates, prioritizing source stability, so all the new features are additive so that exiting code does not break. (YAY!!). They key is things like adding LazyVStack and LazyGrid mode so that you an reduce memory usage. There is now switch and if-then-let logic into SwiftUI. Apple added a bunch of new SwiftUI version of existing kits, like Maps, etc.

You can now define your App’s structure via SwiftUI. This is example like the new TextEditor App. So by defining the app structure in you @main section you get appropriate platform specific behavior. This should allow for native experiences across platforms.

So much to learn!