Hey hi! I am working on free software for collaborative storywriting, Gateway, with its sources available at https://octo.sh/Gateway/ I hope to make it federated one day, once I get it up and running,
My question is related to fitting the objects I create into AP vocabulary.
Our current design implies that individual players make posts, which are blobs of text with some metadata. These are the smallest atoms and may be mutated at any time (for instance, when someone corrects a typo).
A strictly ordered collection of posts is a chapter. A chapter holds some metadata and may be mutated at any time, as well, for example, when someone modifies a post, adds/deletes one, or changes the order of posts in a chapter.
A graph of chapters is a timeline. The timeline holds associations between chapters - which one happens before/after which, along with some metadata as well. These associations are a graph, as they do not need to be linear - a single chapter can fork into several chapters happening at the same time that merge back into one chapter in the end. These links may be mutated by the players.
Additionally, each player has personas, and each post is assigned to exactly one persona. I assume that both players and personas would be AP Actors, but I do not know how to reflect the association between them in an AP manner.
My main question, though is: how do I reflect this structure to make it somewhat compatible with already existing AP-compatible software? A single post, out of context, could theoretically be an Article, but I do not know how to represent a series of Articles that come one after another or how to represent the non-linear
Then there comes the fact that the data in my model is highly mutable and may change at any time. How does AP reflect that? If a single post is changed, does it mean that I must act in a functional manner, which is, to create new “revisions” of that post, its parent chapter, and the chapter’s parent timeline?