In Depth

Bringing forScore to the Mac

| In Depth

This week forScore made its Mac debut, so it seems like the perfect time to explore how the Mac version came to be, what it took to get here, and what its current state represents.

Origins

Back in 2018, Apple announced the beginning of a major initiative (called “Project Catalyst”) to help iOS and iPadOS developers bring their apps to the Mac. In fact, towards the end of the WWDC 2018 keynote when this initiative was unveiled, Craig Federighi said “there are millions of iOS apps out there, and we think some of them would be absolutely great on the Mac, and Mac users would love to have them there.” He said this against a backdrop of app icons, and we were thrilled to see forScore up on stage amongst many other apps—but that certainly wasn’t news to us.

A Mac version of forScore was always possible and something we’d considered a lot, but until that point it would’ve required maintaining two completely separate apps with very little shared code—something our company of two people just couldn’t do without significant compromise. Once it became clear that Apple was creating an impressive new way of getting there, we were all in.

Preparations & Struggle

First, we had to go through some tough transitions. We merged forScore and forScore mini, combining them into a single universal app instead of selling and maintaining them separately. We partnered with digital sheet music providers and ended our limited publisher program. We began working on significantly overhauled page rendering and layout systems. We introduced an optional, auto-renewing subscription to give us more flexibility with our business model depending on how Apple’s own priorities continued to shift.

We reduced our dependency on third-party code by doing things like rewriting support for Dropbox and Box APIs without needing to include their entire SDKs just to enable basic file operations. Other decisions were out of our hands: Google and Microsoft shut down the APIs we had been relying on to provide built-in support for their cloud storage services, forcing us to migrate to Apple’s Files app and infrastructure instead.

With most of those significant transitions complete, all we had to do was wait until June 2019 when Apple gave us the first beta versions of their developer tools and operating systems. As soon as we had those, we worked harder than we ever have before to create Mac versions of forScore, our Music Box apps, and Nocturne. As things progressed, it became increasingly clear that forScore wasn’t going to make the cut. There were too many things missing or broken, and at that point Mac apps had to be sold separately—they couldn’t be offered as a Universal Purchase (something which later caused another painful migration for our other Mac apps). We built what we could, then shelved it.

Round Two

This year Apple did a lot of work to make these tools better, but they also dramatically overhauled macOS’ user interface to make iOS and iPadOS apps feel much more at home on the big screen. They didn’t make macOS look like exactly like iOS, but they unified their design language to make the two platforms seem more closely related.

That alone pushed things forward quite a lot, but there were still some significant issues we needed to address. Most importantly, popovers—the presentation style forScore uses heavily to display menus like the main score menu—are more cumbersome to use on the Mac. They animate in instead of appearing instantly, and in general they’re just slower to work with. So we moved to a split view on the Mac to provide a faster and more flexible experience. For the first time, this structure allows a user to view and work with their music without closing the menu. It also enables us to do things like display the Layers, Shapes, or Stamps panels next to the page in annotation mode.

When iPadOS 13.4 introduced cursor support, the changes we made to take advantage of those new interactions automatically carried over to the Mac just as they already had with contextual menus and drag and drop. Things really started to come together, and we did a lot of work to reach feature parity while also finding opportunities to improve the Mac experience on its own.

Pitfalls

There were some things we couldn’t overcome. Apple’s Media Player framework, the source of major ongoing issues with forScore on iOS and iPadOS, is unworkable on macOS for our purposes. Our list of unresolved bugs is long and Apple is, in most cases, completely unreachable regarding any of them. We spend a lot of time writing bug reports, collecting analytics data, and creating sample apps that unmistakably reproduce issues and yet Apple virtually never acknowledges or fixes them. We worked around what we could, but the Media Player issues left us completely stuck (see this FAQ article for more information). In spite of this, we pushed through and finally made forScore for Mac a reality.

Design & Direction

It’s hard to design for a brand new operating system without having lived with it for a while, so in the end forScore on the Mac looks and behaves a lot like it does on an iPad—and that’s the point. What appears to be “basically the same” took far more work behind the scenes than you might imagine; we spent months getting it to this point and it clearly has a lot of room to grow, but we’re very proud of it and how much it enables musicians to do from day one. It’s a ten year old app, after all, and that means our first Mac version is very mature even if a few features are limited or some interface quirks sneak through.

The big question that remains, though is: what is a Mac app? Until recently it was defined in large part by its ergonomics and input devices, but now that the iPad supports both keyboards and pointing devices that’s a distinction that has lost some of its weight. The Mac has a very long history with well-established conventions, but Mac apps (forScore now included) aren’t just consumers of these conventions—they also help establish or reinforce them. By participating in Project Catalyst we’re joining the conversation. Even though many of forScore’s interface elements are managed by Apple’s user interface framework and our ability to manipulate them is limited, our decisions have an impact and it’s our responsibility to be thoughtful about them.

The design choices we’ve made clearly aren’t the same ones we’d make if forScore was designed from the start to be a Mac app, but we never intended to make the very best Mac app we could—instead, we aimed to make the best forScore we could, and keeping things familiar between platforms is how we start. Now that it’s available, that journey is sure to continue for years to come (just in time for Apple to reinvent it all again).