Mastodon WWDC – Josh Hrach

Future App Development on iPad

With less than 24 hours until Apple unveils iOS 14 and a slew of software updates at WWDC 2020, I wanted to briefly get my thoughts down regarding something that has been in my head.

Many feel that, with the iPad positioned as a computing platform, the iPad itself needs to do more things like a Mac can. One of those is app development. While it’s not a totally useless platform for development, there are limitations. But I think there will be some lingering limitations for a while, and in a way, those limitations might help us see the direction Apple is taking their platforms.

Current State

Right now, the iPad has a limited availability for development. This is in the form of the Swift Playgrounds app, which is a great way to learn Swift within a playground environment. Since last year, it has supported SwiftUI, Apple’s new declarative UI framework.

Swift Playgrounds is useful but comes with some obvious limitations:

  • No actual app creation
  • IDE only – No Interface Builder/SwiftUI Preview canvas
  • Missing some SwiftUI functionality when running your code

It’s not totally useless. If you’re a fan of playgrounds like me, then you may already be used to building a lot of Xcode playgrounds to test various ideas and concepts. Doing the same on the iPad is no different.

iPad as ARM Mac?

With Apple’s rumored transition to ARM processors for their Mac line, some were speculating that the iPad Pro would be a good test device until actual ARM Macs ship later this year. However, this was shot down as the iPad Pro has only 6 GB of RAM, while the typical Mac starts with 8 GB.

From John Gruber at Daring Fireball:

iPad Pros only have 6 GB of RAM — no Mac has shipped with less than 8 GB in many years, and developers aren’t buying machines with 8 GB of RAM. Honestly, I think the RAM is a deal-breaker on the iPad Pro-as-ARM-Mac-dev-kit idea.

I also agree with this point. I don’t think the iPad Pro is itself a good candidate for testing macOS on ARM hardware. However, if we take the above limitation into account, let’s reason on some possibilities.

The Future of iPadOS

Why did Apple break out iPadOS from iOS? Sure, there are differences at the UI/UX level. For instance, you can drag and drop items between apps on the iPad, but on the iPhone this is limited to within the scope of a single app.

Even during the iOS 13 timeframe, the builds for iOS and iPadOS were similar in terms of foundation. There’s no surprise there. But this begs the question: is iPadOS just a marketing term?

With the recent release of the Magic Keyboard for the iPad Pro, I wonder if we’ll truly see the iPad move into more of a Mac-like direction. It will never become the Mac. It will never replace the Mac. But we might see some additions to the iPad that make it more compelling to use with something like the Magic Keyboard.

For one, let’s consider the initial transition in bringing iOS apps to the Mac. This was done by bringing UIKit from iOS to macOS. Last year, Apple announced Mac Catalyst as a way for iPad apps to easily come to the Mac, and improvements were made throughout iPadOS 13 to support mouse cursors and keyboard input.

The next stage in that transition is supposedly bringing support for iPhone apps to the Mac.

But that sounds so trivial. Why is that a separate stage in the release? If someone can easily make an app that supports iPhone and iPad now, what does this bring for developers?

iPadOS Windows

Last year, Apple added support for multiple windows (called “Scenes”) of the same app to exist at the same time. What this means is you can have two windows from the same app side by side in multitasking. Or have multiple windows from an app paired with multiple other apps. Example: You can have two Notes windows side by side, or two Messages windows, or two Safari windows.

However, there are still limitations on how windows can be arranged. Right now, you can have an app (or two, paired) take up the full display, and have an app visible via Slide-Over on the side.

What if the idea of iPhone apps coming to Mac is really intended for iPhone apps to come to the iPad? Imagine Slide-Over but refined and expanded, allowing iPhone-sized apps to live on your iPad screen, perhaps even when you’re on the home screen. With cursor and keyboard support, this would bring some added capabilities to iPadOS, bringing it closer to the Mac without actually running macOS.

I have no knowledge of future roadmaps, but I wouldn’t be surprised if that’s the direction iPadOS takes.

Now, what does this have to do with developing apps on the iPad?

The Future of App Development on iPad

Right now, app development is done on the Mac. Xcode lets you build apps for iOS, watchOS, iPadOS, tvOS, and macOS. And the Mac can simulate all of those environments.

If we were to expand iPad to be able to develop apps, we have to ask the question: What platforms can we simulate on an iPad?

If iPhone apps will soon be able to run on an iPad, I’d argue that being able to develop iPhone apps on an iPad version of Xcode is a possibility. And much like the Xcode for Mac is capable of building Mac apps, Xcode for iPad will be able to build iPad apps. In fact, I can see Watch and tvOS apps just as easily.

But what about Mac apps? While it could be possible, how would you test it? Mac apps have the most access to their platform than any other Apple OS, by far. Would you simulate a Mac environment to test a Mac app?

While not impossible, I find it highly improbable that you would be able to simulate a Mac environment on an iPad to test a Mac app.

Then you have the question of UI development. While you can programmatically build UI, Apple wouldn’t want to leave that as the only way to do so. And while many apps are still built with UIKit/AppKit and Interface Builder, Apple has showed us a new way to build UIs: SwiftUI.

With SwiftUI, we’re able to build apps for all of Apple’s platforms (including the Mac). With SwiftUI, I also think Apple is slowly laying the foundation for eventually supporting a version of Xcode for iPad.

While the iPad won’t be able to build everything Xcode for Mac can, it’ll eventually be able to build apps for the iPad, iPhone, Apple Watch, and possibly tvOS. But you would have limitations: SwiftUI would be your only route for UI.

If this ends up being true, it also shows Apple’s priorities: Enable developers to build apps for their more popular platforms with limited, more specialized tools, and leave the larger development picture to the Mac.

So will Xcode come to the iPad? I think so. Will it replace Xcode for Mac? No. Will the iPad replace the Mac? No.

But what we will definitely see is a separation of iOS and iPadOS. Last year was just marketing. This year and beyond, we’ll see it in practice.

WWDC 2020 Expectations

Everyone has their own expectations when WWDC comes around. Here is what I’d like to see come from Apple and their various platforms.

SwiftUI improvements

Whether they call it SwiftUI 2, or just say they’ve made it better, I fully expect to see a “What’s New in SwiftUI” session this year, including some much needed additions. Of those, I’m hoping to see:

  • First party support for two-dimensional data grids. If List is to UITableView, then I want whatever is the equivalent of UICollectionView. There are a few interesting third-party solutions out there, and I’m not against using them, but I feel something like this would benefit from being provided by Apple themselves.
  • Fixed TabView. Right now, while you can easily create tabbed navigation, the SwiftUI TabView doesn’t behave like a normal UITabViewController. Specifically, if you navigate to another tab and come back, it’s up to the developer to maintain the hierarchy. So if I’m 3 views deep in tab 1, go to tab 2, then go back to tab 1, I’m back at the root by default.
  • Fixed NavigationView. This is more-so when it comes to master/detail on iPad. If I navigate a layer deep in a detail, then rotate the iPad, it resets the detail view while retaining the navigation stack. So I can push a view, rotate, push again, rotate, push again, and end up with what seems to be a navigation stack three or four views deep when in reality my hierarchy is just one or two.

What I do not expect to see is a complete replacement of everything available in UIKit or AppKit. What I mean: I don’t think we’ll see SwiftUI versions of WKWebView, MKMapView, or similar views. The current SwiftUI<->UIKit/AppKit functionality seems to cover situations like this.

“Swifty” Core Data

In Swift 3, Swift gained a huge improvement when it came to JSON Serialization: Codable. Codable is really two protocols: Encodable and Decodable. But together, they take the concept of serializing data, such as to/from JSON, and made is super easy to support.

I would love to see something similar done with Swift classes and Core Data. Could we make a data model conform for Core Data storage by just adding a protocol conformance? If that were possible, I know I’d love to use it.

I’d also hope that any such improvements would allow us to make a Core Data managed object that automatically conformed to Codable without requiring a custom init/decoder.

A Gamer’s GameCenter

I think GameCenter was one of Apple’s squandered opportunities. They offer a powerful Apple TV box that, if powered by newer iOS chipsets, can rival console performance. Yet they have nothing on their platform that resembles the social interactions and networking like you’d see on Xbox or Playstation. I keep hoping they’ll wisen up, revive that platform, and provide a better way for people to find their friends and game together.

An Improved Development Experience on iPad

Swift Playgrounds shows that it’s possible to do coding on the iPad. I’d like to see this turned up a notch, even if it isn’t a full-blown Xcode for iPad. With SwiftUI, perhaps we’ll see some middle-ground. Use your iPad to develop a SwiftUI app? Great. Want to integrate legacy components? Take your project to your Mac.

Even if that doesn’t happen, I’m curious to see what new features and enhancements come to the Swift Playgrounds app this year.

I’m sure that, with whatever Apple announces, I’ll be eager to install the latest betas and try things out. Even if none of my expectations are meant, I’m going to enjoy WWDC 2020.

Looking back: Highlights of WWDCs gone by

This post originally appeared on NotedTech on 12 June 2016.

With just one day until WWDC 2016 begins, I wanted to do something different. While everyone is making guesses and wishlists for this year, I wanted to look back at recent WWDC keynotes, their announcements, and what stood out for me.

2010, THE BIRTH OF RETINA

Steve Jobs introduces the iPhone 4

While much has happened since 2010, there is a lot that still stands out to me. While not the last WWDC keynote by Steve Jobs, I think his performance here was better than the following year. Personally, I see this being related to his health, as he seems more frail in 2011. Overall, Steve here was well composed and was able to throw in his fair share of jokes among various announcements. He was a natural on stage. While no replacement, I think Craig Federighi is the best Apple currently has when it comes to bringing back Steve’s flare.

Among other things this keynote is known for, the first is the introduction of the iPhone 4. It was the last time a new iPhone would grace the WWDC keynote. The iPhone 4 was a first in a few areas for Apple: An LED flash, a front facing camera, and the Retina display. We take all of that for granted now, but none of that existed on previous iPhones at the time.

Of course, one thing we’re quite used to now are leaks and rumors. Unfortunately for Apple, a test iPhone 4 was also leaked before the announcement, leading to the press having clear shots of the final device. But Steve handled it well on stage: “Stop me if you’ve already seen this.”

Alongside the iPhone 4 came something else that a lot of Apple users are likely quite familiar with: FaceTime. While not the first video communication system, it became the easiest way to start a video conversation with another Apple user. Since the initial introduction, we’ve seen FaceTime come to all of Apple’s mobile devices, and FaceTime Audio makes for a clear alternative to a standard phone call, especially in a WiFi-only environment.

Overall, this keynote stands out to me as one of Steve’s best. Between dealing with the announcement of a leaked product, jokes about whether or not Apple would approve their own apps, and handling WiFi problems in the middle of a demo, Steve still gave an entertaining, informative, and captivating presentation. (Well, all but the iAd demo. RIP iAds.)

2011, THE YEAR OF ICLOUD

The iPhone was 4 years old; the iPad was just over 1. Despite the relatively short lives of those devices, there were plenty of technologies to bring back to their parent platform. The 2011 keynote saw a 4th preview of OS X Lion, something Apple had been beta testing for months. This brought a few technologies and improvements from iOS, including more iOS-styled interfaces and FaceTime. It also was the first OS X update distributed exclusively through the new Mac App Store.

It also was the year we saw the Mac demoted. Initially, the Mac was the hub of your digital life. Now, with the introduction of iCloud, the Mac was to be a device in the same manner as an iPhone or iPad. While some would say Apple has a ways to go on delivering that vision, it all began with 2011.

The iCloud of five years ago was missing a few of the features we’ve come to love recently. But while not having features like iCloud Drive, iCloud Photo Library, or iCloud Music Library, it did introduce a few useful features to Apple users. Calendar, Contact, and Note syncing quickly made those apps much more useful. iCloud Backup made iTunes a little less necessary for device owners. And iTunes Match, while not necessarily an iCloud feature, provided an option to access your music on devices without syncing with your Mac or PC.

But as great as that all is, iOS 5’s big feature to me, besides iCloud support and Notification Center, was iMessages. Looking back, it’s hard for me to imagine now having iMessages. Yet, five years ago, it was just being announced. This feature would lead to the iPhone, iPad, and iPod Touch being more useful as social devices. Suddenly, someone could message a friend with just an Apple ID and WiFi. Gone were the requirements of needing a cellular connection or a phone number to message others.

As this was Steve’s last WWDC keynote, it also is the last time we saw Apple’s CEO delivering the majority of the event.

2012, FORSTALL’S LAST

From the beginning, iOS development was lead by Scott Forstall. If WWDC 2011 was Steve Jobs’ last, 2012 was the last for Forstall, though no one could have known that at the time.

Ultimately, Tim Cook’s Apple was to be one based on cooperation and collaboration. While we don’t know all of the inner workings at Apple, some anonymous reports made out Forstall to be a polarizing force. Steve Jobs was able to hold onto his reins, but after Jobs’ death, he just couldn’t fit into the culture Cook was putting together.

One item in particular that Forstall presented on stage was Apple’s new Maps app in iOS 6. From the start, some users had issues with it. Google Maps, which had been on iOS up until that point, had been around longer than Apple’s service, leaving Apple trying to catch up. But even though it was inferior to some, the new service also brought turn-by-turn navigation natively to the iPhone. That, along with Flyover, made Apple Maps a shiny new application. Forstall’s pride is clearly seen as he demos it.

iOS 6 also brought Passbook, one of the initial steps ultimately leading to Apple Pay with iOS 8. Looking back, it’s possible to see Apple working on new ideas one piece at a time. Here, Passbook provided a way to put cards and codes into a single app. Next year, with the iPhone 5s, Apple would introduce a required piece of hardware side in the form of Touch ID.

On the Mac, OS X Mountain Lion brought Notification Center, iMessages, Game Center, and Notes. It was pretty clear that iOS was starting to lead when it came to new features. The Mac would eventually get iOS apps and features once they were created to fit the Mac’s interface mechanism.

And speaking of the Mac, WWDC 2012 was the birth of Retina on the Mac. The MacBook Pro with Retina started with only a 15-inch configuration and started at a price higher than the existing MacBook Pro models. But it also showed something very clear: Retina was the only way to go with a display. The new model also took some pointers from the MacBook Air in terms of removing older technologies and moving parts. Gone were the SuperDrive and spinning hard drive. Everything was flash, solid state, and ultimately made for a sleeker, more powerful MacBook Pro. In the end, it was the first of many transitions for Apple’s Mac line. And after having moved to solid state and Retina, I’ll never go back.

As iCloud began to mature, it also was starting to become clear that the iOS and OS X platforms could start doing more together. Things weren’t perfect yet (and still aren’t), but it was beginning to seem like there were more and more benefits to working across all of Apple’s devices.

2013, THE FIRST REDESIGN

Many months before WWDC 2013, rumors were flying around the various Apple blogs: iOS 7 was going to be a major redesign. Gone were the shadows, gradients, and textures of iOS 6. Everything was going to be flat.

While somewhat true, there was more to the story. Sure, plenty of textures disappeared with iOS 7, but they also disappeared from many of the apps found in OS X. The first non-cat release, Mavericks, boasted simpler UI, though it still reflected the window chrome found since Snow Leopard. Instead of seeing a calendar that might as well have been ripped up from someone’s desk, it was a clean looking Mac app.

OS X Mavericks also brought efficiency and performance improvements. While a focus of many OS updates, the particular focus showed that Apple wanted users to get the most out of their Mac, even if it was worth upgrading.

Mavericks also brought a price change: free. While Microsoft has offered free Windows 10 updates for now, they will eventually go back to a paid model. But Apple’s approach, likely offset by them making money on hardware and not software, means they can provide these updates to as many users as possible.

The biggest news of the keynote, of course, was iOS 7. While things seemed flatter, a lot of it ultimately seemed to be shaping up future UI for Apple. Of course, this wasn’t clear at the time. But looking back, the changes in iOS 7 ultimately lead to Apple changing OS X’s appearance in 2014, allowed for the dark but familiar UI for the Apple Watch, and brought similar changes to the Apple TV with tvOS.

I believe iOS 7 was more than just a quick redesign of the OS. I think it was purposeful planning for the future. Apple knew they wanted to go into a new direction with the Apple Watch and likely had some plans for the new Apple TV. They also were planning larger iPhones for the following year. All of that would benefit from ‘simplifying’ the operating system’s appearance.

And speaking of bringing things together…

2014, EVERYTHING COMES TOGETHER

The first iPhone was famous for ‘running OS X’. While true in a certain fashion, ultimately iOS (initially “iPhone OS”) was an offshoot of OS X running on a different processor architecture. Thus, while having similar roots, for several years both were developing their own features. In 2014, both were brought up to a level that let them work almost seamlessly with each other.

To me, the 2014 WWDC keynote is the best with regards to useful user and developer features and announcements. There are just so many wonderful things that were announced that year:

  • OS X Yosemite and iOS 8 both included features like Handoff and Continuity, making it easy to pick up a task from one device to another, send SMS from any device, or take a call from any device.
  • iCloud Drive enhanced iCloud into something similar to Dropbox, making it easy to store documents between multiple devices.
  • Extensions to iOS, letting developers create third-party keyboards, share extensions, notification widgets, and more. In a way, this was a precursor to WatchKit with the initial launch of the Apple Watch, as communicating with a Watch app was no different than sharing data with a widget or extension.
  • iCloud Photo Library, and Photo enhancements in iOS 8, made it very easy to store all of your photos in one place while still keeping them accessible to all of your devices.
  • HealthKit, providing a single store for applications to share health data.
  • HomeKit, making it easy to control multiple smart devices in the home through Siri.

Even after announcing all of those great features, Apple still had more to give to developers with the introduction of Swift, their new programming language.

As an Apple user, this was my favorite keynote. OS X Yosemite and iOS 8 truly made it worth living entirely in the Apple ecosystem. It always gives me a good feeling when I can show off features like AirDrop, Handoff, and Continuity to owners of Apple products.

As a developer, both iOS extensions and Swift were exciting. And given that WWDC is a developer conference, it makes sense that Apple would focus on software and things directly pertaining to developers and their apps. Apple would never make us sit through an awkward half hour of a non-developer related service at WWDC…

2015, MULTITASKING (OH, AND APPLE MUSIC)

Okay, maybe Apple would make a rather long intro for something not related to developers and software at WWDC.

The big item in 2015, and the one that I use often, is iPad multitasking in iOS 9. Split View, Slide Over, and Picture-in-Picture made the iPad a more useful device. So long as an iPad has a 64-bit processor (A7 chip or newer), some form of multitasking is available.

While not as notable of a feature for some, OS X El Capitan also included split screen support for full screen apps. As someone that uses full screen apps constantly across multiple displays, this was a great feature.

Thankfully, the 2015 keynote ended after all of the software talk.

Okay, it didn’t.

Seriously, though, Apple Music seemed out of place for a developer conference. Still, Apple will make the most of their public events. And for a lot of people that I talk to, Apple Music is a great service. Me? I like my local music library, consisting of songs and albums I’ve accumulated since I was a teen. I’m not ready to trust my music needs to the cloud just yet.

2016, THE YEAR OF…

So how will I remember 2016? As this isn’t a post about my wishlist or thoughts on rumors, I’ll leave this blank. Once WWDC 2016 is behind us, then I’ll go back and say exactly what my highlights are.

If there is anything on my “wishlist”, though, it is that this year’s event is as good as 2014. That’s my current favorite. Between new user features and developer enhancements, I thoroughly enjoyed it. I only hope I’ll feel the same after Monday morning.