Concurrent editing
From Door43
|
Overview
- One of the biggest needs in Door43 is the ability for a geographically distributed team to edit the same content at the same time ("concurrent editing"). There are a number of open-source technologies that, when combined, could provide a very powerful and flexible group-editing experience and greatly expand the usefulness of Door43 as a ministry-supporting tool.
Use case scenario
Here's how it could be used:
A team of church planters in 3 Middle East countries is working together with advisors in their home countries and Arabic-speaking Christians in other countries to create a leadership development resource. In order to work together more efficiently, they set up times where they will all be online together, from all their different locations around the world.
Each user logs in to Door43 and browses to the page they are going to work on. Instead of clicking the "Edit" tab like they would if an individual was going to edit the page, they each click the tab for "Team Edit". Doing so brings each user to a page on the Door43 Etherpad service that enables all the people to work on the text of that page at the same time. The different users are indicated by different colors and each one has their own cursor. The Etherpad service lists each username currently editing that page and enables them to group chat (instant message) with the others editing the same page.
Using the instant message service, Skype and any other communication means they like, the team works together to edit the page. When they are done making changes, the "Save" button is clicked. This saves the text they have created to the page in Door43, automatically entering their usernames in the comments section.
Implementation
Here is what we are envisioning:
- We plan to run our own etherpad-lite service on a door43.org subdomain.
- We would like to see the etherpad-lite engine extended to provide additional capabilities, namely a "syntax highlighting" feature (using an "on/off" button in the top of the editor) that is extensible and includes a plugin for USFM-encoded Bible translations. The syntax highlighter would be configured to increase the readability of USFM text by, for example, "graying out" the USFM codes, using different text colors for different content (e.g. \q, \s, etc.). CodeMirror looks to be a good option to implement this - we would need to write a "USFM" mode for it (see also the links below).
- Ideally, we would like to see the concurrent editing engine able to provide a WYSIWYG editing environment, possibly using the Javascript engine from the MathJax project (source code here) as an overlay to the etherpad-lite concurrent editing engine (based on node.js).
- The developers at Hackpad are developing a javascript tool that integrates their Hackpad service (which is built using the open-source Etherpad synchronous editor into MediaWiki. The actual javascript file is located here, but the license under which it is released has not been specified yet. The etherpad-lite concurrent editor would use a modified version of the Hackpad + MediaWiki extension to provide real-time group-editing capabilities
Note: an easy-to-use, open-access Etherpad service to test concurrent editing is typewith.me. Etherpad-lite is very similar but with a slightly improved user interface and a few additional features.
Note #2: Door43 users are already using typewith.me to group-edit Door43 pages by manually copying-and-pasting content between the two platforms. The concurrent editing process works extremely well!
Considerations
- Unicode - It is imperative that all text content in Door43 be in Unicode. Special care would be needed to ensure that the entire concurrent editing process and all software is Unicode-compliant. We may need to incorporate Unicode web fonts into the editing environment on a language-specific basis to ensure this and provide editing capabilities in all languages.
- Network connectivity - Use of this concurrent editing system would require Internet access for direct use of Door43. However, a locally-installable version that could run on any laptop/computer and be accessed by other browsers (mobile ones included) could be configured with little effort. A team could then work locally on their content using their local area network and manually copy-and-paste the content to Door43 when they have a reliable Internet connection.
Links
These links may be useful in the development of this project:
Concurrent Editing
- etherpad-lite - concurrent editing engine
- Hackpad + MediaWiki - integration of etherpad (predecessor to etherpad-lite) with MediaWiki using javascript. Actual javascript here.
Syntax Highlighting implemented in JavaScript
- CodeMirror - JavaScript-based syntax highlighting engine
- Ace Cloud9 Editor - Mozilla-backed stand-alone syntax highlighting editor written in JavaScript. Can be easily embedded into web page or JavaScript application.
- prettify - A Javascript module and CSS file that allows syntax highlighting of source code snippets in an html page.
WYSIWYG editing in JavaScript
- MathJax - this is not WYSIWYG but does provide a framework for displaying marked-up text in specified ways. May or may not be useful as a library to build on for our needs.