* a wiki
* direct, collaborative editing (etherpad-style)
* git-backed, automatically summarizing the history into git commits

And then:
* access controls (who can write to which branch)
* branching/merge-request/merge workflow in the UI
* ... turning it into a collaborative CMS as well

Would that be crazy?

· · Web · 7 · 0 · 6

@raboof Well, about 20 years ago I proposed that to but with SVN - I don't think it ever happened.


Apart from Git, we've built this for Wikipedia, powered by #VisualEditor (stand-alone #HTML5 transactional editor).

The real-time pad is not used on Wikipedia currently, but it's something you could use perhaps. The server could store HTML snapshots and/or full transaction JSON in Git.

Or if you like the history UI and access control of #MediaWiki, could keep it decoupled and eg regularly dump/export from MW to Git one-way.

@krinkle cool, that looks really nice!

I'm thinking of also exposing a git branch/review/merge workflow in the same UI. That would not scale to Wikipedia-sized initiatives, but seems like it would be attractive to the kinds of organizations that currently work with googledocs or "sending docs around"-style models.

Definitely bookmarked!

@raboof @krinkle this is precisely what I want to add to -- let me know if you'd like to discuss collaborations!

@waallly_ indeed ikiwiki is one of the early wiki's that can use git as the history storage! There are a number more nowadays.

That's only part of the story though: it doesn't have the etherpad-style collaborative editing, nor are branch/review/merge features exposed in the web UI.

@raboof sounds like a great project idea. Sort of what Confluence does on the editor side, but backed by Git.

@raboof That would be sooo useful to me as well :)

In the association I'm currently part of, our way to handle this is to paste a etherpad link in the wiki page. That's far from being ideal though, especially if you do not own the etherpad instance hence the pad lifetime :/

The issue with etherpad-style OT might be to find the right moment to issue your commit, I don't think that's a trivial problem. I don't clearly see when to do that anyways.

It might be easier with treedoc-like CRT-based editing platform, you could issue the commit after a tree flatten operation!


Nice nerd snipe! I added this to my ever growing "maybe someday" todo list :D
@raboof Thinking a bit more about this: you could use a global-lock mechanism to issue the commit. Basically the lock would disable the OT write operations, wait for the document to converge a bit, issue the commit, release the lock.

Since you also need to write a proper commit message and provided you do not commit that often during a concurrent editing session, I think that the global lock might be alright UX-wise.

I guess it'd be a bit more dirty than the CRT counterpart commit, but hey, OT is already a pretty big dirty hack by itself :P

@Ninjatrappeur yeah, detemining when to auto-commit will always be an imperfect heuristic - probably something like 'after X time with no changes to a particular document'.

Merging branches should probably 'squash and merge' with a manual commit message.

@raboof @Ninjatrappeur the simplest implementation I can think of is: store etherpad + mods in postgres as usual, but on a user pressing a button or saving a revision explicitly sync out to git

@flaneur I agree that sounds like a fine approach.

I'd like it to be bidirectional (allowing commits to the git backend that don't go through the realtime-collaborative editor first, but do show up there afterwards) - but I think that can still fit.

@raboof same here; the main agora client right now is foam -- a vscode extension that helps maintain markdown notes that make it to git.

I think there's overlap in what we want, want to move to an email thread/chat/bug/shared doc?

Are you in matrix?

@flaneur I'm also 'raboof' at but I don't use it a lot TBH.

@Ninjatrappeur @raboof in the agora, which is not strictly a wiki currently but is related, every page gets a pad automatically:

@raboof I guess my fellow hacktivist can be interested in your conversation. @kuba
Sign in to participate in the conversation

Merveilles is a community project aimed at the establishment of new ways of speaking, seeing and organizing information — A culture that seeks augmentation through the arts of engineering and design. A warm welcome to any like-minded people who feel these ideals resonate with them.