Real-Time Editing

Based on: FeatureRequests/RealTimeEditing

Allow pages to be edited by several people at the same time.

Kinds of TODOs:

Status

Development is being done on 2.0-storage branch. Simple synchronization is working, using mobwrite's daemon methods and an action that calls them directly, storing the pages on a Berkley DB. A simple list of users who is currently editing is also displayed.

To try it:

hg clone http://hg.moinmo.in/moin/2.0-storage-editor-amartani/
cd 2.0-storage-editor-amartani/
python wikiserver.py

Access localhost:8080 and edit the same page in two (or more) windows.

Mobwrite debug mode is activated, so in compatible browsers (Firefox with Firebug, Safari and Chrome) there will be a lot of mobwrite messages on console. To disable it, change mobwrite.debug on MoinMoin/web/static/htdocs/applets/Mobwrite/mobwrite_core.js.

Next steps:

Documentation (SOCTODO)

Server (SOCTODO)

Adapt the chosen real-time editor server to MoinMoin.

Integration (SOCTODO)

Code for this project will be based on 2.0-storage branch, as all the high-level actions (view, edit) was moved to items.

Preferences:

Variable name

Default

Description

editor_mobwrite_mode

'in-process'

Mobwrite mode: None (disabled), 'in-process' or 'daemon <host:port>'

Interface (TODO)

Polish editor interface. Try to make it similar to current FCKEditor.

Use cases

Issues

Diary

<< <  2009 / 5 >  >>
Mon Tue Wed Thu Fri Sat Sun
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

<< <  2009 / 6 >  >>
Mon Tue Wed Thu Fri Sat Sun
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

<< <  2009 / 7 >  >>
Mon Tue Wed Thu Fri Sat Sun
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

<< <  2009 / 8 >  >>
Mon Tue Wed Thu Fri Sat Sun
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

Discussion

Add your thoughts, concerns and use-cases here.

Bugs/usability issues:


I like this GSOC project very much: it seems to me very advanced, the cutting edge in wiki development. A cool feature other wikis definetly miss! Good luck with it! However, I have also a little concern about the project. Guess what? Yes, right, there might be an accessibility issue! As far as I can see, bespin uses html canvas elements? But they are prone to problems, see http://esw.w3.org/topic/HTML/AddedElementCanvas. Furthermore real-time editing could be also a problem for the blind, since they have no chance to get lively inserted changes quickly: A screenreader has to read each line for them. To put it short: I do welcome this feature very much as also requested by me here: http://moinmo.in/FeatureRequests/TextEditorWithSyntaxHighlighting. On the other hand a would plead that the old text-box is keept in some way and also the way to have marked edit conflicts to preserve accessibility. This could mean: In the userpreferences you can choose between three edit modes (text, gui, realtime) with default edit mode=text?? That's it! Keeep going and good luck! ThomasWaIdmann, no sorry, just kidding -- OliverSiemoneit 2009-05-30 20:33:31

i18n issue in http://hg.moinmo.in/moin/2.0-storage-editor-amartani/rev/9ce3768d3b5c ?: "Save and continue"-button seems not to be translateable

21:30  * dreimark tries amartanis repo
21:31 < dreimark> texts_db = bsddb.hashopen(mobwrite_daemon.DATA_DIR + 
                  "/texts.db") 
21:31 < dreimark> DBNoSuchFileError: (2, 'No such file or directory')
21:32 < dreimark> any hints what i need to configure?

This will make an ideal experiment log file for our facility - several people working on our machine can enter details of their experiments, settings, comments about data. The other features of MoinMoin are excellent for existing pages, when it is less likely to have simultaneous editors. This solves the problem of several scientists working on the same page (today's log file) at the same time. Tried your 26/5 version; very nice, easy to install according to your three lines at top of page. I think text-only entry is a reasonable compromise, with the possible exception of putting other contributor's input in a different colour/font.

What are your plans for identifying editors apart from joint editorship tags on a save? I have had two thoughts.

  1. markups in the form of comments inside a jointly edited document marking the beginning and end of changes by each author. This would be the easier option. Problem is the multi-editor save would look ugly in text mode if comments were "on", but this could be worked around if all multi-editor markup comments were removed when reading a page in for further edits. The information would still be available in the older save.
  2. Markups on every changed phrase may be cumbersome. I was thinking about detecting trivial cases where there is little overlap, and two editors. Consider two type of save - one a normal save (single editor), the other a joint save. If one (Anne) saves, the system could save two copies; one attributed to Anne which is just her edits relative to the most recent single editor save, and a one with a later version number attributed to Ben which is current state of the document (at the instant of save). Then if Ben continues to edit, the situation is just like an ordinary save. Both are marked as single editor saves, and read (almost) as if the edits were performed in sequence (and are easier to follow without in-line markups). If there are three editors, then for the first to save (Anne) the system just save her changes to the most recent single editor save, and an automatic second save is marked as joint, and the session reverts to a two editor session. I guess induction gives you the rest.

So there would be a sequence of saves, some multi-editor, some single editor. The end result would be identical to the present system, all the differences between single author save would make sense or be easier to understand, and the only confusing part would be if you compared multi-editor saves with single editor saves, you might see apparent deletions that were in fact insertions. <-- BoydBlackwell 2009-06-27 06:27:01>


I do feel a bit that the ui is somehow too complicated. e.g. if I edit a page It does not make sense to allow someone else to open the page for editing too. I do think a lock message to the second editor and a invitating message for the first editor would be much better (User: ABC likes to edit this page too. Do you like to invite him?). if the first one (XYZ) enables sharing then I am asked at the time I select the page for editing if I want to edit it in shared mode together with user XYZ. If I deny I can't edit. -- ReimarBauer 2009-08-16 10:39:04


-- BastianBlank 2009-08-17 10:06:46


-- BastianBlank 2009-08-23 14:39:38

Plan for integration

Licensing

Problem: Apache 2.0 license is incompatible with GPL v2 (but not with GPL v3).

Easiest way for now is to keep it separate:

TODO

  1. extract generally useful code (and css, templates, ...) that is not mobwrite specific, keep it under GPL v2+
    • do that while implementing templating / new framework
  2. try to make the rest plugins, distribute separately

Anyone helping with this?


CategoryGsocProject

MoinMoin: RealTimeEditing2009 (last edited 2012-06-01 08:03:07 by EugeneSyromyatnikov)