Skip to content

Instantly share code, notes, and snippets.

@jsvine
Created June 9, 2012 18:16
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jsvine/2902075 to your computer and use it in GitHub Desktop.
Save jsvine/2902075 to your computer and use it in GitHub Desktop.
Versioned Writing

Versioned Writing — an experiment

Status: Very drafty.

Git for prose, Git for everything

Recently, I've become hooked on the idea of applying version-control software (and the concepts it enables) to writing. Git and GitHub have completely transformed, for the better, the way I write and think about software. I have a hunch they can something similar for writing.

Some form of versioning already exists, raggedly, in most prose-writing workflows. It's typically linear. For instance, we all have a folder somewhere that looks like this:

  • rough-draft.doc
  • 1st-draft.doc
  • 1st-draft-rewrite.doc
  • 2nd-draft.doc
  • 2nd-draft-without-dentist.doc
  • final-draft.doc
  • final-draft-copyedited.doc
  • final-draft-FINAL.doc
  • final-draft-FINAL2.doc
  • final-draft-FINAL3-USE-THIS.doc

This mess is a headache to manage, yes. But, whether most writers realize it or not, this mess is also a shackle. The mess and our aversion to multiplying it, prevents us from taking as many syntactical, rhetorical, and intellectual risks as we should or could.

Computer programmers have a set of tools that elegantly get around this problem: version control systems. Git, which I use, is currently the most popular, but there are many options. Git lets me "branch" a programming project in two, or three, or more, directions at the same time, never worrying that I'll lose any changes along the way, or become chained to one particular path.

Version control systems afford developers many conveniences -- collboration, rollbacks, merges, tagging, commit-commenting -- but I suspect that this concept of branching will be the most powerful for writers. Branches alleviate hesitation and fear. Branches encourage risks and experimentation.

Notes

Other applicable Git concepts

  • versioning has a specific application to "living" documents, such as blogs and most other writing on the web -- revisions become less intrusive, more transparent, more accountable.
  • See Paul Graham on rewriting: http://paulgraham.com/laundry.html
  • commit notes as a concept that doesn't really exist in writing today, but should.
  • enables collaborative (copy-)editing, pull-requests, etc.
  • Benefit to reader, if the writer wants to post entire revision history; though I can see the argument for rebasing pre-publication
  • Other uses for branches: alternate endings?

People already publishing prose on Git

  • Chacon, Hinton, Bycoffe, Osmani, and more -- see previous piece.

Software for representing/publishing git-prose repos

  • The software should be able to easily port this and other gists.
  • Why gists fall short:
    • Can't read commit messages
    • Can see how much changed, but not what
    • Not great formatting for prose; a necessary limitation, given the focus on code.
    • Not customizable.
    • Not yours!

Similar ideas

  • Previous attempts: Flashbake, Google Docs (to some extent), Stypi (http://paulgraham.com/stypi.html).
    • But these are all missing a crucial ingredient -- branching. Revision history is revelatory (in a literal and figurative sense), but branching is transformative -- it transforms the creative process, frees it to be less linear, more adventuresome.
@bbirdiman
Copy link

hello jeremy.

just dropping by to mark the 5th anniversary of this gist. :+)

also:

have a hunch they can something similar for writing.
have a hunch they can do something similar for writing.

and:

collboration, rollbacks, merges, tagging, commit-commenting
collaboration, rollbacks, merges, tagging, commit-commenting

do these corrections make me a collaborator? do they, do they? ;+)

-bowerbird

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment