Problem statement

Editing an article on-wiki is mostly a one-person effort. Collaborative editing is technically impossible.

This does not mean there would be two authors. We had discussions before about how two authors provide content which is incoherent and inconsistent.

One person may be the author and another person may be adding questions inline. The point is in being able to do this together, at the same time, possibly with webrtc (audio and video) chat at the same time.

This could make reviewing easier as authors receive feedback from reviewers or other volunteers in real time.

Requirements

  • real-time editing
  • stores nicks in a cookie or uses oauth
  • article preview (mediawiki api query to show html contents of a markup provided)
  • option to upload and download articles to a wiki
  • add and remove margin notes which correspond to highlighted portions of text (also helps with fact checking)
  • ?

Possible solutions

"Synchronous multi-person editing of a single text file - such as a wiki page - can and is done in other wiki and wiki-like CMS. It is not implemented in mediawiki. However, it is possible to create a social ‘hack’ to do this. For example, add a template to the article syntax - a comment stating the article is currently being edited collaboratively at a given url - and then begin working on the article in etherpad or collabora or whatever. Anc c/p the resulting article back.This model might also be somewhat automatable." (Amgine)

https://stackoverflow.com/questions/2043165/operational-transformation-library "I think that parts of Google Wave's OT implementation are Open Source (and more parts are coming). I'm not sure if this is what you are looking for, but an alternative to OT is Differential Synchronization: Google-Diff-Match-Patch - Diff, Match and Patch libraries for Plain Text: "The Diff Match and Patch libraries offer robust algorithms to perform the operations required for synchronizing plain text." Google-MobWrite - Real-time Synchronization and Collaboration Service: "MobWrite converts forms and web applications into collaborative environments. Create a simple single-user system, add one line of JavaScript, and instantly get a collaborative system." (Uses Google-Diff-Match-Patch.)", other answers include sharejs, https://github.com/pmontrasio/sharejs-demo is a demo

https://www.meteor.com/#!

https://github.com/pubnub/collab-notes-react

https://en.m.wikipedia.org/wiki/Collaborative_real-time_editor "real-time collaborative editing"

ember.js and knockout.js, https://www.youtube.com/watch?v=6I_GwgoGm1w

http://whiteboard.debian.net/ uses google-mobwrite

titan

sandstorm

etherpad-lite

https://github.com/ether/etherpad-lite main home

https://github.com/creationix/nvm, http://www.marcominetti.net/personal/blog/2015/09/install-system-wide-node-js-with-nvm-the-painless-way installing node

Potentially interesting plugins

TODO

  • get rid of formatting controls entirely (bold, italic, underline, strike through, lists, indentation) ** https://www.npmjs.com/package/ep_disable_format_buttons and disable_lists similarly

  • add a button to preview the article (feed wikinews with the markup from here and get an html version)

  • add article title ** https://www.npmjs.com/package/ep_set_title_on_pad pad title (like wikinews article title)

  • add oauth to wikimedia account? ** https://www.npmjs.com/package/ep_github steal code from here for oauth?

  • hints to user about article contents requirements * https://www.npmjs.com/package/ep_help_bubbles steal code from here? to add hints about inverted pyramid style * a checklist ('fresh enough?' 'neutral' 'first paragraph tells where/when/what/how/etc')

  • add spell check? ** https://www.npmjs.com/package/ep_spellcheck spell checker (uses native web browser checking)

  • add plagiarism checker

https://static.etherpad.org/plugins.html complete list of plugins, https://www.npmjs.org/package/ep_rtc webrtc chat → https://github.com/bit/ep_webrtc