On Scrivener, Storymill and the value of Timelines

matt,

You are getting me all excited!

I would like to offer a few things for you to look at. You mentioned squishing uninteresting parts of the timeline: have you seen Simile Timeline? It has a slick display interface, although its event entry interface is nonexistent (it just reads XML files). Play around with the demo that they have on their main page; it has compacted and stretched segments, an overview timeline, special event markers, and all sorts of things. I was playing with it myself for a while with vague thoughts of adding it to my website, and you can get some pretty impressive dynamic displays. The code is available (javascript/AJAX)

Some things it doesn’t have are things that have been discussed here; drag and drop re-aging of characters, referential integrity, and so on.

I would love to have a timeliner with arbitrary timescale, stretch & shrink, multiple threads, referential integrity, age calculation, events fixed in time to either the character’s relative timeline or another timeline where it doesn’t display (30th birthday party debacle vs. watching the moon landing on TV), click on event dot for more details, events with spot times as well as time spans…

Yeah, I want a lot.

Also, I would be much more interested in a dynamic display than in a pretty PDF export. :smiley:

The PDF export suggestion was just for exporting to Scriv. We all want a dynamic display within the app itself :wink:

janra,
Thanks for the tip - I will take a look at that site.

I quite like the split display thing, and already have a few ideas for something like that, but I got my idea from TortoiseSVN’s “diff” (where they show the difference between two files), and was thinking of doing something similar.

Anyway, I think my best way forward will be to get the back-end data right, and have functional save/open etc, which means it will be usable from the start. Then I will play around with different layouts/interfaces, getting feedback along the way, until we find an approach that feels good to use. This stage I think will take the most time.

All of which is, of course, dependent on me finding time to do it, learning cocoa (I am 80% now, I think… it is all just class libraries from here), and Adam not beating me to it (see Bee Doc’s thread).

How do you see “referential integrity” fitting in?

Matt

The “referential integrity” comment was based on something said earlier, about events that multiple characters attended, and making sure the characters stayed there when you re-aged a character, or notified you if a character is in two places at once, or attending an event outside his lifespan. Unless the character in question is a time traveller, but I wouldn’t ask you to handle that :open_mouth:

I’m not sure that referential integrity is quite the right term, but it seemed to fit in terms of keeping the data sane, sans time travellers at least.

Hi,
Just an update on this.

I am working on this application now. Have done a lot of stuff to handle the backend, and am now building the interface. Which obviously for end users is probably the most important bit.

If anyone has any input they would like to add to this, now would be a good time to do it, while I am kicking ideas around in my head. I will obviously look at some existing timeline apps, but given the “grid-like” nature of this particular application (linking events with characters), I will have to do things a little differently.

If anyone wants to do a mock-up in some graphics program of how they would like to see the application working, I would be interested to see all ideas. Unfortunately, graphic design stuff isn’t my thing (I can program it, but making stuff look good may prove difficult).

Matt

Matt,

I feel terrible that I haven’t had time to do any mockups, since it was me who originally suggested making some, sorry. Just too much on my plate at the moment.

At this stage I don’t think you need worry too much about making it ‘pretty’. Just concentrate on the functionality, and ease of use, so that people can try it out and test it. The UI is important in a Mac app, obviously, but only insofar as how it behaves. You can always make it look prettier later.

I can’t speak with any authority on UI issues, but as a general rule I’d suggest keeping in mind two things that all the best apps have: redundancy (several different ways to do the same thing) and pre-empting expected behaviour (“What will a user expect to happen here?”).

Hi Matt,

I write mystery and thrillers in the adult and juvenile field and many plots are heavily dependent on timelines and storytime being accurate. So I would definitely see a need for timeline software that allows for the following:

  • capacity to handle concurrent and/or overlapping time elements, and to view multiple timelines in a single window
  • identification of timeline by character
  • identification of timeline by subplot
  • at minimum, time shown in increments of 15 minutes along with 1/2 hour, hour, days, etc. I don’t think I’ve ever had a need to use minute increment extensively unless it had to to with phones, computer access, etc., and those elements aren’t so numerous as to be problematic.
  • capacity to rearrange timelines on the fly, i.e., drag and drop vs. editing/re-inputing in an entry window.
  • multiple event occurrences within a single time entry, i.e. someone’s moving a body and I need to plot transit time, spots where the perp might be seen, arrival at a particular physical scene, without having to initiate several distinct events for each. This might be possible through a mechanism similar to how one applies a tab in a ruler, i.e., click on a point in the timeline and a note window opens vs a full entry window, etc.

Anyway, just some initial thoughts. All the best to you in this effort.

JP

G’day,
Thanks for the feedback.

Definitely will handle overlapping elements, although I am not sure how I will display them at this stage. There won’t be multiple timelines as such, but one big time line with all events, and then characters and story arcs intersecting them like a grid.

Haven’t worked out all the details, but will definitely have some sort of filtering system (kind of like a search, I guess) where you can specify you only want to show events for a particular character or story-arc, etc.

Already implemented the ‘zoom’ bit. You can zoom in close enough that a single screen is just a 15 minute increment, and out far enough that a screen shows 100 years (and will go to 500 and 1000 years once I work around the maximum size of an integer… 32-bits can store the number of seconds in 136 years, but by then, who cares about seconds!).

Obviously, it is zoom in a timescale sense, not in the sense that all the text becomes very small.

Will definitely have drag and drop for shifting events to new dates (and double-click a time to create a new event), probably with some sort of “snap to grid” option so your click automatically goes to a particular time (eg. 11:00:00 as opposed to 11:13:27; or 1/1/2007 instead of 2/5/2007, depending on the zoom level at the time).

Changing the actual text etc. and associated meta data will be some kind of inspection panel or popup window though.

Have to think a lot more about this one. I was thinking about having events allocated to particular groups (separate to a character or story arc), which would sort of cater for this situation, and also having certain events tied to other events (i.e. event B occurs 15 minutes after event A), so that they move as a group and keep their spacing. That would still require separate creation of each event though. Perhaps I can find an interface way to make tied events easy to create though, which I guess is your main concern.

Anyway, thanks for the input.

Matt

I am coming late to this discussion, so 1) I have too much to say all at once, and 2) my comment is not a suggestion for matt’s work-in-progress (more power to him) – and cleaves to a rather different course anyway.

The thing that has struck me about the timeline apps I have looked at is not just that they expect real dates, but that they expect complete dates to be attached to events when you make them. I just can’t think of a single story idea of mine where events happen in a particular year in either world or galactic history. And even if events do eventually get pinned down in this way as things get worked out, this is information I would rarely have at the time that I wanted to be starting to work with a timeline app. (Most of that info will never get pinned down–Pick an arbitrary piece of fiction and try to tot up its events in your favorite timeline app without having to make up a lot of fake date/times!)

I think that the problem is that timelines apps are all modeled on “real” timelines which map out a preexisting set of events that happened in real time. This gets things backwards if you are making up the story. Creating a timeline as a fiction development tool is more like creating a timeline with variously (and perhaps wildly) partial information.

When you are creating the “reality”, the placement of events on the timeline should not, in the first instance, be thought of as pegging it to a particular, fixed underlying temporal line–at least that is not how the writer should have to think about it–it is, first and foremost, placing that event in a before/after sequence among other events. Some of these events will also have precise date-times associated with them. Others one only knows/cares that they have to happen between some other extant events. For some, what you know/care about is nothing more specific than that they happen 2 weeks (of 3 tweens or whatever) after some other event (which does not necessarily calculate to any fixed date, since the event it is two weeks after may have no designated date itself).

Is it just me, or what?

So, in my dream timeline app, placing an event on a timeline only implies that it stands in certain before/after relations to the other events on the line. For those events for which it was pertinent, I would be able to specify that this event occurred at a certain interval of time before/after some other event on the line. For those events where it was pertinent, I would be able to specify that event’s relation to an underlying (actual or fantasy) calendar–this might take the form of specifying a complete date, but might not be so specific–my calendar might divide years into seasons and those into months, say, and so pegging an event to a calendar might simply consist in saying that it happens in the spring or the spring of a certain year, etc. For those events with significant duration, I would be able to specify a fixed duration, or just min/max duration range, or to give it wholly unspecified duration. My dream timeline app also has multiple timelines that stand in no pre-arranged temporal relation to each other until I specify some temporal relation between them --by specifying a relation between one event on the one timeline and an event on the other, or until I pin events in both down to a common underlying calendar (of which, likewise, there would be the possibility of having more than one–since the Ajvar and the Hummus have been at war with each other for eons and do not have a common calendar despite the fact that they cohabit the same place in the back of the refrigerator (so much for freshness-dating)).

One of the jobs of my dream timeline app–besides enabling me to see all these relations visually–would be to take all these events and interpolate what their partial temporal specifications imply about when they actually happen or how long they can take. As the things you have temporal specifications for impinge on the ones you didn’t, its narrows down the range of options about when and how things can happen and and also enables you to identify time sequence problems. Yeah, okay, and it might also tell you how old your hero was at the time of the crucial backstory events–so you will see that she couldn’t have been drinking at the party, at least not legally.

This would be my going-in idea of the apex–that is the Scrivener–of timeline apps. Re-conceived somehow from the ground up for writers–for people who are making up the story, not just mapping an extant history.

“The fire’s cold, my story’s told.”

–Greg

P.S. Hey, I just realized it’s the 25th of Lacuna. Happy Elfskraang and love to all!

P.P.S. Surely, “character age” is an unnecessarily specific idea to work into any timeline app. It isn’t just life events, all events with duration have an age. Wars, thunderstorms, dictatorial reigns, your marriage, etc.

Interesting thoughts, and certainly something to think about.

I certainly do like the idea of having what I guess you would term “fuzzy dates”: must be in March, but don’t care when; must be a Monday, but anywhere in Spring; belongs some time between two events, but the exact period doesn’t matter; needs to be done in the afternoon, but time is less important etc.

How exactly to convert that idea into the program, I am not too sure at this point.

Regarding character’s ages: yes everything does have an age, but I think for authors, the age of a character at a particular event is usually very important. But the model I am using, while currently using the word “character”, does not mean that you couldn’t create a character-type timeline for a marriage, or a building, or a reign, etc. either.

I would just need to think of a suitable label to replace “character” :slight_smile:

Matt

Not at all, but if the actual year/era/galactiklaarg of your events doesn’t matter, then surely you could just set your calendar to start at year zero, and work it out from there? Then, if later you decide that actually you do have a specific year in mind, you just reconfigure the calendar.

(Easy from the user’s POV, of course - possibly not so easy from the programmer’s POV, I don’t know)

I imagine that would be very tricky indeed, but I agree it would be very very useful. F/SF in particular often has these issues, where what one group calls Year 200, another group calls Year 5780 or something.

One of the original criteria was for “duration events”, such as wars, etc. I agree it would be nice to be able to see the “age” of a duration event without having to get the calculator out :wink: But how would you present it? As a constant running tally in the event marker? That could get very visually confusing.

I was wondering that myself. Perhaps an editable title field, similar to Scriv’s Labels?

You mean let other people figure out what the bloody noun is… I like it!

I guess the hardest part with all of this is how best to visualize things like events with durations, “fuzzy” dates etc.

Most timeline apps seem to show events with durations by marking them at the start, and just having the dates listed.
eg. World War II (1939-1945)

But I don’t think that really accurately represents what you want to know. If something stretches 6 years, you want to see it shown across those 6 years, so it is instantly noticeable that Joe Bloggs is already committed to be somewhere for those 6 years, and so can’t possibly be somewhere else as well.

I just feel that marking the starting position, but not the end, doesn’t really work for that purpose.

Matt

Absolutely agree. I was assuming this would be best done with a coloured band stretching across the timeline between the start and end dates. Perhaps mark the beginning with a solid colour, then use a very low opacity of the same colour (20% or thereabouts) for the band, so it isn’t garish and doesn’t potentially block the viewing of other events marked? And maybe then a solid colour event at the end to mark the finishing date?

The guilt that’s been eating away at me the past few weeks about this finally got the better of me :wink: So here’s a first very very rough mockup idea for a GUI, and how things might be laid out. It’s largely cobbled together from screenshots of existing apps, so don’t expect too much originality :wink:

(Click to embiggen)

I don’t know what half of the uses for things like a source list or inspector could be, and maybe they wouldn’t be necessary, I don’t know. Just throwing ideas out. Matt, how does this jibe with what you’ve already done so far?

I’ve deliberately not annotated this pic, by the way, because I think it’s all pretty intuitive and you should be able to work out what all the bits are very easily. If you can’t, speak up :wink:

And right away, two things strike me:

[1] Timeline listed by character in the source list should be expandable, i.e. click a disclosure triangle to see all items in that character’s timeline. Clicking on an event should auto-scroll the timeline view to show that event (And perhaps autozoom it so that a selected duration event would fit in the entire window).

[2] Perhaps a tag field would be better than a dropdown for the “connected character” field in the inspector. That way you could have multiple characters linked to an event. I’m thinking of something like the way Things lets you enter tags, converting them into “tokens”. Not sure how this might impact a character’s timeline in the source list. Would the event simply be added to each character’s timeline? That’s probably the simplest (from a UI point of view) way to do it. Would entering a character who doesn’t yet exist create a new source list item? Again, probably.

Hi antony,
Thanks for that.

What I have been working on so far is a little different:

  1. I have actually made the timeline vertical for now as it seems to be a better fit for how I am laying out the rest. At some point I will probably make that configurable though.

  2. Currently, rather than having separate timelines for each character, I just have one timeline, with events and “characters” laid out in a grid (timeline-y thing to the left of this grid):

                     Joe      Sue       Marriage       StoryArc
                      |        |            |              |
----- Event 1 --------+--------+------------+--------------+-------
----- Event 2 --------+--------+------------+--------------+-------
                      |        |            |              |
----- Event 3 --------+--------+------------+--------------+-------
                      |        |            |              |

Events that are important to a “character” would then be marked at the intersection:

                     Joe      Sue       Marriage       StoryArc
                      |        |            |              |
----- Event 1 --------+--------+------------O--------------O-------
----- Event 2 --------O--------+------------O--------------O-------
                      |        |            |              |
----- Event 3 --------+--------O------------+--------------O-------
                      |        |            |              |

You would then be able to apply filters to only show events for a particular “character” (eg. if you chose to filter events for “Joe”, only event 2 would be displayed. You could filter on other things as well, such as labels given to events etc.

Characters would have meta-data associated with them, as would events, as would the associations between them (was Joe an observer of Event 2, or an active participant, etc.)

An inspector is a must for this information. Inside the inspector is probably where I would list the events per character etc (and conversely, the characters per event). Not sure about the source list… in the current setup it is unnecessary for characters, but may be useful for the "multiple timelines that do not share date systems thing that was suggested before – although implementation of this is a fair way off).

And I have the little zoom bar down the bottom implemented already :slight_smile:

Matt

I’ve been lurking on this thread, because not being a fiction writer or a historian, timelines are not something that really come into my work. But a couple of things:

(1) GR is absolutely right about the vagueness of times. I have taught a 5 lecture course on an introduction to British history … our students here have no idea at all about it. And last year, I thought it might help them, since they always have difficulty with names—they tell me they have given up with the Lord of the Rings because there are too many names, to which I reply “And yet you encourage me to read Water Margin (108 heroes) or Dream of the Red Chamber/Dream of Red Mansions (which has dozens of characters all of whom are related or in some kind of relation to a whole range of others)”—
Anyway, I thought a timeline might help, get them to visualise it, rather than it being a load of words …
and I found myself having to decide the precise day/month/year on which construction started on Stonehenge. I think I was trying BeeDocs, and I looked at a couple of others, but it simply didn’t work for me.

(2) Looking at Antony’s mock-up and Matt’s response, it seems to me that they are essentially the same, but rotated 90º. Do you prefer your time-scale horizontal or vertical. The line between the event and the scale in Antony’s version is doing the same job as the cross at the intersection of the lines in Matt’s. In principle I like the ideas of tagging and filtering or both.

(3) A thought that strikes me is that—I think—Antony makes a comparison with Things in terms of tagging, but it feels to me that a GTD app is the wrong metaphor in interface terms. A better image would be project management, something more along the lines of OmniPlan … in fact, during the beta stages of OmniPlan, one of the OmniBods produced a demonstration using it, which was a representation of Napoleon’s Moscow campaign. I thought it looked impressive. I’ll see if I can still find it. Planning software is all about time-scheduling of events in relation to each other, availability of human and other resources, and dependencies between events/tasks … seems to me to be more the same kind of issue as tracking characters and events in times and locations.

Mark

Mark

As a writer of historical fiction, I’m very interested in this discussion and wish I had Antony’s ability to offer technical advice. But Mark’s fine contribution, and his mention of project management software, made synapses connect and I thought of the work of Edward Tufte, the “Da Vinci of data” who has written several elegant books on interface design.

His web site is worth a visit:
edwardtufte.com/tufte/

See especially his thoughts on project management graphics
edwardtufte.com/bboard/q-and … topic_id=1

Might inspire some ideas about how best to visualize narrative timelines.

Good luck, Matt. I own BD Timeline and happily anticipate its evolution.

Just to be absolutely clear, I was talking only about Things’ implementation of tags - how they’re created, how the app remembers them (and converts them to draggable tokens), how it auto-applies them to the filtering bar, etc. I agree a timeline app should be nothing at all like a GTD app.