Designing the Ulysses Library
A couple of weeks ago I chatted with Max about the concept of the Ulysses editor. Likewise, a lot of thought went into the Ulysses library. Marcus Fehn, the other Soulmen from day one, answered my questions.
One of Ulysses’ most prominent features is the library. It’s where all texts are held, and where all organization takes place. Could you please explain the idea behind it? Why did you choose it over single, stand-alone projects?
The library is based on two ideas. The first one is that all of your writing should happen in Ulysses. This is our ideal conception. Writing is ubiquitous, we jot down notes, we draft, we rhyme, we do whole novels – and chances are that we’re not doing one of these exclusively. So we wanted our users to do all of this in one place, without having to worry about where they put, say, their notes. It’s just all there, in this very app. There are no file names, no Finder management, no “Project A new v2 no really new NEW.whatever” to worry about. And if Ulysses was the only writing app on the planet, we would have done a simple library, enabled iCloud sync, and shipped.
The second idea is more of an acknowledgment. People have different needs, fears, options. Some outright hate iCloud, others only have a single Mac anyway, and yet others have to work across different apps, for whatever reason. And if we want our users to do all of their writing in Ulysses, then we need to enable all these different users to do so. Let’s call it pragmatism.
That’s why the library has different sections, with slightly different functionality in each. This may add a bit of complexity, but it’s the only way to reach our ideal of Ulysses as your one-stop writing app.
What are these library sections about, and how do they differ from each other?
There are three types of content to be aware of. One: Ulysses’ own files. We call them sheets, and they allow you to do all this fancy stuff, like adding images and links, annotations, attachments, they can be glued etc. Sheets either reside in iCloud (synced) or On My Mac (not synced). These are the main parts of Ulysses, and for most users, they are the only parts they’ll ever see and use.
Everything, literally everything, is in this one place, right there in the app.
The second type of content is “stacks” and “sheets” from our iOS app Daedalus Touch. Again, since we want our users to do all their writing in Ulysses, we figured it would be cool to allow Daedalus’ users to continue their work at home, on their Macs.
So if you’re using Daedalus on iPad, and if iCloud is enabled, all of your content will just show up in Ulysses, and every edit you make will sync back and forth.
The third type of content is what we call “External” content. This is stuff that resides somewhere on your disk, probably on Dropbox. Ulysses can read and write simple text and Markdown files, but since we need to ensure compatibility with pretty much every writing app out there (we don’t know in which app you will open the files), features in this section are limited to a common denominator. For text files, this denominator is just text, nothing else, and for Markdown it is the original Markdown syntax, at least more or less. So no attachments, no annotations etc. External files are also truly external, i.e. they do not only live outside of Ulysses’ main library sections, but they live outside Ulysses’ content on disk. They are also handled by the system itself, not by the app. As an example, deleting a file from one of your External Sources will move it to the trash of your Mac, instead of the trash in Ulysses’ library.
How does the user benefit from a single library in comparison to storing texts in Finder as usual?
One of the main advantages, which may not be instantly obvious, is that only the single library allows us to sync all your writing via iCloud. There are no user interactions involved, no checkboxes to select, nothing must be explicitly saved – everything will just get synced. So if you’re using iCloud, and you hit command-N (⌘N) in Ulysses to start your Great American Novel, it will show up on all your Macs.
The second big advantage is one I touched on earlier: Everything, literally everything, is in this one place, right there in the app. There is no need to go outside the app to search for a note or that one snippet you created last night. If it happens in Ulysses, it stays in Ulysses.
Only the single library allows us to sync all your writing via iCloud.
Then there’s the topic of file names. Or rather, the absence of file names. This may seem minor, but it allows Ulysses to scale from note pad to novel writing power horse, and even to combine both and everything in-between. You can probably compare it to the photo library on your phone. Imagine you would have to name every single photo, probably before you’ve even shot it. Then imagine the photos were listed in alphabetical order, and you could only search by name. This would be crazy, right? But that’s how most apps still present your content, and that’s what we wanted to get rid of in Ulysses.
Sheets in the library are organized with the help of groups and filters. Could you explain what I can do with these exactly?
Groups are a somewhat beefed up variant of classic folders. The main difference is that sub-groups – groups which live inside another group – always get fully exposed to the user. So if you select a group, you will have access to its content and the content of all of its sub-groups within a flat list.
The system of groups and filters allows for some extremely flexible workflows. It is simple to do, but very powerful.
Filters are best compared to classic Smart Folders – they are essentially live searches, based on criteria like “text contains Hero” or “keyword is Draft” or such. The main difference between Smart Folders and Ulysses’ filters is that filters will always just look inside their parent group. So you can move filters around, and they will always work, without the need to manually update their scope.
This system of groups and filters allows for some extremely flexible workflows. If you’re looking for inspiration on this topic, I recommend checking out David Hewson’s book, where he describes using groups, keywords and filters to structure a novel, and still edit pieces in a non-linear way. It’s great stuff, simple to do, but very powerful.
The idea of “everything in one place” sounds intriguing, but at the same time quite messy. How do I find a particular sheet, if I can’t remember in which group I put it? Is there search?
Yes, you can activate a search bar at the bottom of the sheet list, and this lets you search inside the current group. It’s more or less classic content search, with results and occurrences listed etc.
The fastest way to get to a “lost” sheet is to use Quick Open. This actually takes longer to explain than to understand and use.
The fastest way to get to a “lost” sheet, however, is to use Quick Open. Quick Open is invoked by command-O (⌘O). This will put a nice overlay on your screen, showing all of the sheets in your current range (iCloud, On My Mac). By typing into the text field, you can then narrow down the list, scroll around with the arrow keys, and open the selection by hitting Return. This actually takes longer to explain than to understand and use. Again, it’s a rather small, but very powerful feature. For example, Quick Open always remembers the last text entry, scroll position and selection, so subsequent calls let you continue looking where you left off.
Another way to keep track of a messy library is to use filters, of course.
When working in Word or Pages, some people save revised versions as new files in order not to lose changes that were made in the past. This can get a little messy, especially with more complex projects. Does Ulysses offer a solution for that too?
Ulysses uses the system’s built-in versioning system called Versions. This automatically saves a new state after a couple of edits, and these states can then be accessed via the menu command File › Browse All Versions. You can then select a previous version, and even just copy parts of previous versions and paste them into your current version.
You can also force a save state at any time by pressing command-S (⌘S).
Are there any “hidden” library features you’d like to talk about?
You can access some really powerful features via the library’s context menus.
As an example, you can attach writing goals to groups and filters. You can show statistics for all of your iCloud content combined. You can export groups (and even filters), and via that create live PDF previews of your book while writing, editing, revising and shuffling its chapters around.
Double-clicking a group or filter allows you to change their icon, so you can have a star or heart or such for letters to your loved ones.
Last not least you can not only collapse groups, to cut down on clutter, but you can also make whole library sections collapse by hovering over their title and clicking “hide”. So if you need to focus on your Daedalus stacks, just hide everything else and get some work done.
If you had to put Ulysses’ library into a single sentence, which one would it be?
Pretty much the same one I would use for all parts of Ulysses and the app as a whole: A complex, rich and powerful tool, hiding inside an elegant, understated package.