WWDC 2017 Wishlist
It's the night before WWDC and so while this post is pretty late, its technically not too late to be appropriate. But not having much time to type this up means that I'm not able to go into as much detail as I normally do for these wishes and they are all going into a single post.
Some interesting context going into WWDC this year: the rumor mill and leaks have been the quietest I can remember, which I think means one of two things:
There's nothing particularly major being announced, but Tim Cook has successfully (years after saying he would) and suddenly screwed a lid onto the various leaks and hints that typically drip out of Apple, particularly before big events.
MOST of what is being announced is major, and has been being developed by isolated teams under extra secrecy like the Apple Watch, the original iPhone, etc. This is of course the possibility I'm hoping for, and an optimistic mind could look at the minor surface updates to iOS announced last year and speculate that they were a sign that most of Apple's significant talent and resources were focused elsewhere, on things yet to be announced.
Of course, the reality could also be some combination of 1 and 2 above, which would be a perfect fit for my wishlist this year, since I consider these items to be a combination of major leaps forward, and incremental improvements. And so here are my wishes, in order of want-ness for WWDC 2017:
1. Zero-Installation, Context-Linked Apps
The short explanation of this wish is "like Google's new 'instant apps' but better". The long explanation starts with an observation: the App Store and experience of finding, getting and launching apps has changed almost not at all since the launch of the App Store in 2008 (nine years ago!) A number of studies have concluded that iPhone (and other smartphone) users have reached saturation for the number of apps they will install (around 80) and use daily (around 6 to 8). Searching the App Store to find a relevant app is still as bad as it has always been, and the process of needing to sign in, enter a password to download (even free apps) and the long installation process add up to significant friction for users to even look for an app, much less try it out on a whim in a brief moment of need.
Let me give you a more concrete example: I was at a parking lot the other day and the sign posted there said I could either walk over to the kiosk, enter the space number and pay by credit card, or I could download the app and pay where I stood. And my thought process went like this: "There's no fast way to jump to this app in the App Store quickly from here, so I would need to use the App Store's terrible and slow search tab. Then once I found the app, I would tap "Get", wait a few seconds, then have to type in my password. Then I would see the installing process, which would probably be a couple minutes of standing and waiting. After that, I would need to swipe through my numerous screens of apps to find where it was just installed so I could actually open it. Finally, after using the app to pay, I'd probably forget to delete it from whatever home screen it ended up on, and because I won't be parking here again soon it will just hang around as useless noise and clutter until some day I finally get around to deleting it."
That thought process occurred in less than a second, and that's how long it took for me to decide that I would much rather walk to the kiosk and pay there, because it would be faster, less friction, and less annoying. I strongly believe (and numbers from these studies on smartphone app downloads support the theory) that this resistance to downloading apps is widespread, and the bar for a user to get and try an app — even one that is relevant (briefly) to what they are doing — is getting higher and higher. The result is that fewer and fewer apps are being downloaded per user every month (one study reports that the average smartphone user now downloads, on average, ZERO apps per month).
This bothers me as both a user, and as an app developer. And Apple is the only one who can solve this for the iPhone ecosystem. The ideal solution would include the following components:
- No need to go to the App Store app at all to find an app that is relevant to the place you are, the devices you are near, or the website you are visiting.
- A way to immediately download and launch small, size-limited native apps or native app extensions that the user selects, without requiring an iTunes password.
- These zero-installation apps should not be added to the home screen at all. They live only in the multitasking view until they are manually dismissed by the user or the operating system determines that they need to be cleared out because of lack of further use, or the need for resources.
Let's look at that first bullet point in detail. All the pieces for this already exist in the form of a centralized repository and directory of apps (the App Store), iBeacon functionality in all version of iOS since 7 (which means that the system is continuously scanning for and can react to specific bluetooth identifiers nearby), and the "Siri App Suggestions" panel on the today screen in iOS. What Apple needs to to is allow developers to associate their small, mini apps or extensions with specific GPS coordinates and / or iBeacon identifiers in iTunes Connect. Then, when a user is either near a certain location, or within bluetooth range of a beacon or a smart device (like a parking meter, a door lock, etc.), iOS will add the icon for the associated apps to the "Siri App Suggestions" panel automatically, even though they have not yet been downloaded an installed.
Now on the the second bullet point: the user taps one of these suggested app icons, and within several seconds, the OS downloads the mini app or extension and launches it in place. No password or log in needed. No trip to the App Store app, no icon on any home screen. Just an immediate download and launch of a native app experience that is relative to where the user is and what they want to do. The user can now use the app for as long as they like, they can switch between it and other apps in the multitasking view, and they can then forget about it when they are done. In the event that the user does want to download the full app and install it permanently, they would have an option in the multitasking view to jump right to it in the App Store and install as usual. The developer could also include that sort of link right in the mini-app.
And finally, bullet point three: after a week, two weeks, or whatever, iOS will purge the zero-installation app from the multitasking list. Or, if the device is low on memory, it will be purged even sooner. But the user never has to manually uninstall anything. As far as the user is concerned, the lifecycle of the app was only exactly as long as they needed it or were interested in using it.
Revisiting my parking lot scenario from earlier, if this wish were to come true, the next time I park in that lot my experience would instead look like this:
I park my car, see the sign about the app, and look at the widgets on my lock screen. I see the parking app suggested right there as relevant to this location. I tap it, and after a couple seconds it has downloaded and launched an simple mini-app experience. I enter my spot number, tap the Apple Pay button and use my thumb to pay in a fraction of a second and I move on. I don't worry about downloading, installing, uninstalling, entering passwords, etc. I just use the app when I need it and there is no additional friction or hassle.
Google's instant apps are only a small step towards this experience and are launched via web URLs in the browser. But at least it's a step and launching zero-installation apps from links should also be part of this overall solution as well. If Apple supported automatically downloading and launching small apps from URL links, beacons, locations, nearby devices, etc. it would provide a seamless ability to take contextual and immediate action that the web and browsers simply cannot compete with. And it would open up a whole new territory of functionality and relevance for app developers. I'd be surprised if Apple hasn't been working on something like this, but I truly hope they release this or something like this sooner than later.
As a note, I believe that these zero-installation app experiences would also finally make the Apple Watch a relevant and killer platform for native app experiences. Instead of having an "installed app grid", the Watch should use the side button to bring up a menu of zero-installation app experiences relevant to this location or nearby devices, allow the user to tap and immediately launch them, and then pay for parking, take a number for the line they are standing in, adjust the temperature on a thermostat, open a smart lock with a code, tip a waiter or waitress, leave feedback, etc. etc. all with a quick, ten-second-or-less interaction with their watch.
All of which adds up to a real game changing leap for users and developers for the next 9 years!
2. A Complete Reboot of iOS UI / UX
As much as I admire Jony Ive for his industrial design talents and leadership, his influence has been a disaster when it comes to software and UI for iOS. The release of iOS 7 did provide a needed modernization and redesign of the aging iOS 6, but it also killed much of what made the system delightful and fun to look at and use. While I don't wish for a return to iOS 6 and earlier, I find that post iOS 7 apps (including Apple's own) lack personality and delight. Minimalism has been applied so heavily that it becomes confusing (remember the multiple changes to the keyboard because it was impossible to tell when shift was on or off?) and things like borderless text-only buttons and segmented controls which I still can't tell at a glance which are selected or not have made the whole thing feel like a statement of how extreme the lack of visual adornment can be. As if the ultimate virtue of a user interface is the utter lack of any pixels beyond the bare minimum needed to form a text character or a primitively minimal icon symbol.
In fact, I'll argue that the opposite is far more true: if your user interface doesn't do more than the bare minimum required of it and actually go even further to delight and entertain the user, then it is failing as software. With the vast amount of stimulus coming at us from all angles, the constant competition for our attention, and the multiple apps in every category that do very similar things, it is more important than ever for software, in addition to doing the function it is intended for, to also be enjoyable to use, to surprise and delight its users in the process of getting its function done. Unfortunately, the dogma of post-iOS 7 design seems to be: do as little as possible, don't distract from the bare minimum of your functionality, make the experience stay out of the way of the task. In fact, this is practically a restatement of Apple's own design guidelines for iOS 7 and later. This has resulted in the blandest, most boring, sterile and commoditized era of user interface I can remember since command line interfaces in the pre-Mac era of personal computers. What a shame for the company that mainstreamed and popularized the GUI and rode to success on its own mastery of whimsical and entertaining user experience that didn't just allow users to get their tasks done, but made those tasks a little more fun to do and looked great while doing them.
Beyond the travesty of boring and bland UI / UX, iOS 7 did nothing to adapt to a future of larger screened devices and the limits of reaching with our thumbs. We need new UI to make navigating and selecting contextual actions more immediate and more in reach. So nav bars at the bottom of the screen instead of the tap, possibly new gestures or visualizations of hierarchy. The upcoming iPhone sounds like a perfect opportunity to showcase a thorough re-evaluation of the iOS interface for ease-of-use and a return to a more lively, appealing, and delightful experience. I sure hope Apple has something planned in this regard.
3. Drastically Better Tooling and Support for Swift in Xcode
This one is easy: three years after the release of Swift we still having the following limitations in Xcode:
- No refactoring
- Incomplete and inaccurate results for things like finding the callers of a certain method
- Incredibly inconsistent autocompletion. Sometimes it shuts down completely, often it just presents recent variable names which have absolutely no relevance to what is being typed. It doesn't even try to aspire to something like AppCode's smart autocompletion which only suggests methods, variables, properties, etc. that match a type that is appropriate for the context where the cursor is placed in code. In short, Xcode's autocompletion for Swift code, 3 years later, is aiming for the bare minimum, and only occasionally reaches that.
- Outlets in storyboards can only be connected to classes that inherit from Objective-C NSObject (this is an issue beyond just Xcode, and the new encoding / decoding in Swift 4 means we may see this fixed NEXT year, but it is very much a tooling issue). So you can't have delegates, data sources, or other participants in Storyboards that are simple Swift classes or structs. They can only be subclasses of NSObject.
- "Automatically fix this issue" shortcuts generate invalid and nonsensical Swift code about a third of the time for me
- No Swift Package Manager integration at all
- All the built-in code snippets in Xcode (like for GCD dispatch after, etc.) are in Objective-C only, even if I'm using them in a project specified as being a Swift project!
- Many more
As much as I love Swift and writing Swift code, I still feel like I'm fighting Apple's own Xcode IDE to do so. AppCode is a third party IDE that has already surpassed Apple's support for autocompletion, refactoring, fixits, etc. in Swift. It's time for Xcode to be the best example of Swift tooling and to feel like it was actually intended for use writing Swift code rather than its Swift support feeling like a bolted-on half-baked afterthought.
4. Relevant, Useful and Serious Updates for the iPad as a Productivity Platform
I do most of my coding and related work on a desktop Mac. When I do have to use a laptop, it's almost always connected to an external monitor, trackpad and keyboard. One of my least favorite computing form factors is the laptop itself — I've never liked using laptops, and probably never will. Ironically though, I love using the iPad, and the large iPad Pro in particular. A lot of this has to do with the thin and light form factor and portability, the bright high-dpi touchscreen, and the long battery life. The rest of it has to do with the software: iOS and apps made for the iPad are better suited to quick and portable interactions than macOS and desktop apps (in my opinion).
Despite my long-standing appreciation for the iPad however, I've been disappointed at how little Apple has done to evolve iOS specifically for the iPad form factor, and towards making the iPad a more capable productivity device. I'm hardly the first to talk about this subject, and there are some notable bloggers who specialize in iPad productivity discussions. However, I'm bringing it up here and now as the fourth and final wish on my WWDC 2017 wishlist. I wish for some significant updates to iOS on iPads to make them better computing and productivity platforms. A partial list of possible features include:
Fix and improve the half-baked split screen multitasking interface. 2 years after it was introduced, there is still no easy way to switch the second app in split screen mode. There is no search, filtering or apparent rhyme or reason to the ordering of apps that appear. They appear as tiny icons inside giant blank boxes. That makes for terrible use of space. Clearly, the idea was the those boxes would contain recent screenshots of those apps, but I almost never see that actually happen (usually only the current app has a screen shot in the box and the rest are blank - see what I meant about half-baked?). Also, the method for switching the left app is completely different than the method of switching the right app. For the left app, I must double push the home button and use the normal multitasking view. For the right app, I have to swipe down from the top of the right pane and scroll vertically through these icons in blank boxes. I think it's pretty obvious that changing the app in either or both sides should be done in a consistent way and from the same screen. And swapping the left and right apps should be a single action rather than the multi-step trial and error required today.
Drag and drop text, images, links, files, and more between the the app on the left and the app on the right.
A home screen that is more useful: like a combination of the today screen plus the app grid. I'd love to see a list of appointments, news, and other real-time widget date on half of each home screen while the grid of app icons occupies the other half. And since my 12.9 inch iPad Pro has a huge amount of wasted space between app icons, it could easily show the same amount of apps per page in only half the space. Fun fact: did you know that the iPhone 7 Plus shows 24 app icons on its 5.5 inch screen, while the iPad Pro, with a 12.9 inch screen (several times larger than the phone) only shows up to 20? So 4 times the screen real estate, and less app icons on it. Bizarre.
A better iCloud Drive interface. iCloud Drive is sort of like the master file system for iOS: it is accessibility from any app, and has the familiar hierarchy or folders and documents. It just happens to have the worst and most minimal interface of any file system. No shortcuts, no filtering, no tags, it's slow as can be and you can't really change the order of anything. To be the file system for a real productivity platform, iCloud Drive needs to be much faster, more powerful and easy to use.
Multiple user accounts. Macs have had this forever. Android phones and tablets have had it for years. It's time for iOS and iPads to have it.
Pencil support everywhere. The various native controls and UI elements for iOS should have built-in support for annotations, comments, and handwritten cues for deleting or changing text, etc. The Pencil feels great and works great, but is limited to apps that make use of it, and all those apps use it in different ways. Apple should be providing UI controls: text fields, image views, etc. that natively provide markup support with the pencil and easy ways to save Pencil markup as a separate layer.
These are a few of the changes that could go a long way towards making the iPad a more productive platform. Even more important changes would be on the business and App Store side with Apple really working with software developers to make it possible, sustainable and profitable to create and sell great productivity software on the iPad. But the technical changes to the iOS platform would be a great start!
Wrap-Up
So those are my wishes going into WWDC 2017. They are ambitious wishes, but I think that this could shape up to be a big year for Apple software. I'm really looking forward to seeing which wishes are granted and what new surprises I never even imagine are unveiled tomorrow!