I’m a big fan of Ulysses. Its mix of minimal writing environment and powerful features suits the way I like to write. I have, however, seen users of its main competitor, Scrivener say that they could never leave that software because of two main features: Snapshots and its Outliner. The purpose of this post is to show how Snapshots can be replicated in Ulysses.
Ulysses’ ‘alternative’ to the Outliner will be the subject of a future post. So make sure to check that one out. You’re not going to want to miss it. Trust me.
What are Scrivener Snapshots?
In reality, Scrivener’s Snapshots are macOS’ built in version control system on steroids. Users take a Snapshot of a document and then they continue to make edits to that document in the main editor. Where it gets really clever is when users want to see earlier versions and make comparisons. This is all handled in the inspector under the Snapshots tab.
So, how to do something similar in Ulysses?
Ulysses versions and ‘Snapshots’
On macOS, Ulysses saves versions of your work automatically. These can be opened and restored from within the File menu by choosing Browse All Versions. You can also copy and paste from them.
The difficulty here though is that these versions have no naming system. Which makes it difficult to locate which of the potentially hundreds of versions you want to review, restore, or copy from. Even saving a version in Ulysses, using Save Version, doesn’t distinguish it from those created automatically. So, what is the solution?
Take a ‘Snapshot’ of your sheet
The above screenshot shows a test sheet duplicated and then made into a Material Sheet so its contents don’t count towards your manuscript word count total. This duplicate is then opened alongside the original sheet in the Second Editor view in Ulysses. I have also created a link, using Alt+Right Click to get the sheet’s x-callback-url. This is then pasted into the notes section of the original sheet. This way I can keep track of all of the different ‘versions’ I have ‘saved’ using this method. You could also glue the ‘snapshot’ version sheets to the current version so they are always together in Ulysses’ library.
Comparing versions in Ulysses using Markdown tags
Ulysses is a Markdown based editor. It is also a Markdown editor that employs stylised syntax. Meaning that each Markdown tag that is applied to text is presented to the user in a user defined, formatted way. Both in terms of how the document looks when it is exported, and the way it appears to the user as they are writing.
The above shows deletions struck through and in red, using the Deletion tag. Words surrounded by double pipe signs marks it for deletion — || delete these words ||.
Then I have used the Marked or highlight tags to show the additions I have made to the original, Version 1, sheet. Words flanked by double colons trigger the Marked tag — ::marked text:: in Ulysses.
When version sheets are opened up next to each other it can be difficult to track what changes have been made. But the use of these tags helps see what has been marked as added and what has been marked for deletion. In fact, with the tags, it becomes less important to have both versions open alongside each other.
You will notice that in the Dashboard on the right of the screen the Annotations section shows each of the adjustments I have made to the text. So over the course of a long piece of writing it is easy enough to track down where these changes have been made by clicking on them in turn. Also, when the text is exported, all additions are marked as yellow highlights and all deletions show as struck through text. Meaning they easily stand out when reviewing your documents.
When you want to commit a change, simply highlight the Deletions and delete the section you want to remove. For Marked text sections, hit Cmd-L or select View Menu> Clear Markup from the menu bar and the double colons will disappear, leaving just the text you have added.
I liken this system to Microsoft Word’s Track Changes feature and in some ways it is more powerful than Scrivener’s Snapshot feature, which only allows for rolling back to earlier versions en masse or copying and pasting between versions.
Other Ulysses Markdown tags for marking additions in versions
It is also possible to use Code tags (a single ` either side of the text being added) and Raw Source tags (a single ~ either side of the text being added). This gives the following:
It may be that you use the Marked tag for First Draft, the Code tag for Second Draft and Raw Source for Third Draft. However, unlike the Marked tag, the Code and Raw Source tags are not counted as annotations and as such do not show up in the Dashboard. Which isn’t ideal as you need to do a search for the tags to find them. For that reason, I tend not to use them.
How can this be improved?
I wrote to the developers of Ulysses in December 2020 asking them for an improved version control system. My ideal being saved, named versions attachable to sheets. I also asked them about implementing a Markdown tagging system known as Critic Markup. This is an enhancement to Markdown which facilitates tracking changes using specific markdown tags. Check it out. Various Markdown editors have implemented it and it seems to work well. It should also fit in nicely with Ulysses’ Markdown system.
For the time being though I find the above system to work well and it really showcases how flexible Markdown is when coupled with Ulysses’ other, carefully thought out features.