History: Realtime
Source of version: 102 (current)
Copy to clipboard
^
See also: ((Push notifications))
New in ((doc:Tiki12)): ((doc:PluginTogether))
See dev notes at ((TogetherJS))
^
Tiki has historically been mostly an asynchronous collaborative tool, except for ((Live Support)) and ((Chat)). Since ((Tiki5)), for real-time collaboration, Tiki offers an integration with ((BigBlueButton)) (Audio/Video/Screensharing/WhiteBoard/Chat).
This page is to discuss options to make several features realtime:
* Docs (ODF documents via [http://webodf.org/|WebODF])
** https://github.com/kogmbh/Kotype and https://github.com/kogmbh/Wodo.TextEditor_release
* Wiki
* Drawing ([http://code.google.com/p/svg-edit/|SVG-edit])
* Spreadsheet ([http://visop-dev.com/Project+jQuery.sheet|jQuery.sheet])
Will be useful along with ((BigBlueButton)) collaborative sessions. Ideally for Tiki, it would be the same approach (ex.: library) for all four (and any future) features. And we could take this opportunity to revamp ((Live Support)) and ((Chat)) (which work OK but are not the most recent technology)
! Options
!! BigBlueButton
One possibility is to go the ((doc:BigBlueButton)) route.
Benefits:
* Already integrates with Tiki
* it would be via [https://groups.google.com/d/msg/bigbluebutton-dev/ZP-IpC5JOvE/DPN6pvhb_KwJ|Shared Notes] which is part of Mconf
Drawbacks:
* Add BigBlueButton as a requirement
* --Flash-- (HTML5 interface has replaced Flash.)
* Likely less general interest than a JavaScript solution
!! Etherpad Lite
Another possibility is integrating with [https://github.com/Pita/etherpad-lite|Etherpad Lite]
Which uses NodeJS, more info at
* http://www.nodecloud.org
* https://github.com/joyent/node/wiki/Node-Hosting
* https://www.ohloh.net/p/node_js
Benefits:
* Already active project
Drawbacks:
* Adds Etherpad Lite as a requirement
* Overlap with some of Tiki's wiki functionality
* Will it be easy to port to Spreadsheet, Drawing and Docs?
!! A JavaScript library
Infinote & Jinfinote
* https://github.com/sveith/jinfinote
Benefits:
Drawbacks:
!! WebRTC
* ((WebRTC))
** http://www.tokbox.com/blog/collaborative-editor/
! Potential libraries and approaches
* https://marijnhaverbeke.nl/blog/collaborative-editing-cm.html
* http://blog.karlitschek.de/2013/10/welcome-owncloud-documents.html
* http://codiad.com/
** http://www.fluidbyte.net/post/44301667947/codiad-now-has-collaborative-editing
** https://github.com/Codiad/Codiad/tree/master/components/collaborative
* http://en.wikipedia.org/wiki/Operational_transformation
* http://opencoweb.org/
* http://hyperstruct.net/2007/2/24/xml-sync-islands-let-the-web-sharing-begin/
* http://sharejs.org/
* http://nowjs.com/
* https://github.com/Imaginea/matisse#readme
* http://code.google.com/p/google-mobwrite/
** https://code.google.com/p/google-mobwrite/wiki/Theory
** https://code.google.com/p/google-diff-match-patch/
** [http://groups.google.com/group/mobwrite/browse_thread/thread/bac901f4356dbf5a|PHP implementation]
* https://github.com/MouMou/jquery-webrtc
* http://groups.google.com/group/codemirror/browse_thread/thread/b9cc198657fb758f
* __Synchroedit__: SynchroEdit is a browser-based simultaneous multiuser editor, a form of same-time, different-place groupware. It allows multiple users to edit a single web-based document at the same time, and it continuously synchronizes all changes so that users always have the same version. http://www.synchroedit.com (LGPL & MPL)
* http://cooffice.ntu.edu.sg/cockeditor/
* http://kolab.org/blog/seigo/2015/12/28/collaborative-editing-manticore
* https://research.linagora.com/blog/?p=211
* https://github.com/hhxsv5/php-sse
* https://ckeditor.com/blog/Lessons-learned-from-creating-a-rich-text-editor-with-real-time-collaboration/
! Projects similar to BigBlueButton
* [http://www.dimdim.com/|Dimdidm] (open source version abandoned)
* http://code.google.com/p/openmeetings/ (moved to [http://incubator.apache.org/openmeetings/|Apache Foundation])
* https://www.webhuddle.com/
* http://www.jabber.org/
! Why
* For realtime note taking (business, classroom,etc.)
* For realtime brainstorming (business, classroom,etc.)
* For realtime document revision (articles, minutes of meeting, protocols, etc.)
* your ideas?
! Who
* Marc Laporte
* Régis Barondeau
* you?
! When
No set date, but as soon as possible. [http://irc.tiki.org/irclogger_log/tikiwiki?date=2013-08-07,Wed&sel=79#l75|2013-08 looked into WebRTC, still moving a bit too much for me - one of those "wait a few months and try again"]
! Features to be made realtime
!! Realtime Collaborative Wiki
This is to plan the addition of multiple concurrent editors to the ((wiki)).
!! Realtime Collaborative Drawing
Same thing for the ((Draw)) feature, which is with [http://code.google.com/p/svg-edit/|SVG-edit]
* http://code.google.com/p/svg-edit/issues/detail?id=947
* http://thenextweb.com/2009/06/05/experience-worlds-google-wave-svg-editor-gadget/
* http://www.webdistortion.com/2011/01/22/best-online-collaborative-drawing-tools/
* http://noosfero.org/Development/ActionItem2240
!! Realtime Collaborative Spreadsheet
This is to plan the addition of multiple concurrent editors to the ((spreadsheet)), which is powered by ([http://visop-dev.com/Project+jQuery.sheet|jQuery.sheet])
!! Realtime Collaborative Docs
Tiki bundles [http://webodf.org/|WebODF] as Tiki Docs.
"pilot project to add real-time collaborative editing to WebODF":
http://webodf.org/blog/2012-04-05.html
! Related links
* CRDT: https://youtu.be/Exr0iY_D-vw
* https://github.com/y-js/yjs
** https://syncedstore.org/docs/vue
* [http://reactphp.org/|React: Event-driven, non-blocking I/O with PHP]
* [http://socketo.me/|Ratchet: WebSockets for PHP]
* https://docs.yjs.dev/ecosystem/connection-provider/y-websocket
* ((Screencast))
* http://en.wikipedia.org/wiki/Category:Web_conferencing
* http://en.wikipedia.org/wiki/Comparison_of_web_conferencing_software
* http://en.wikipedia.org/wiki/Collaborative_real-time_editor#Browser-based
* http://en.wikipedia.org/wiki/Collaborative_real-time_editor#Other_real-time_collaborative_editing_software
* http://webodf.org/blog/2012-04-05.html
* https://github.com/substack/dnode
* http://lucumr.pocoo.org/2012/8/5/stateless-and-proud/
* https://code.google.com/p/jquery-graceful-websocket/
* https://code.google.com/p/diagram-editor-for-google-plus/
* https://github.com/igniterealtime/Pade/issues/73
* http://nikic.github.com/2012/12/22/Cooperative-multitasking-using-coroutines-in-PHP.html
* http://www.slideshare.net/spoutserver/realtime-communication-techniques-with-php
* http://www.firepad.io/
* http://blog.rizzoma.com/2012/11/20/node-js-and-coffeescript-for-online-collaborative-editing/
* http://we-love-php.blogspot.de/2012/10/how-to-implement-chat-server-php-server-sent-events.html.html
* http://en.wikipedia.org/wiki/Gobby
* http://www.emacswiki.org/emacs/CollaborativeEditing
* http://doc.owncloud.org/server/7.0/user_manual/documents.html
* http://operational-transformation.github.io/
* http://infinote.org/
** https://github.com/sveith/jinfinote
* http://www.leggetter.co.uk/real-time-web-technologies-guide/#_ratchet
* https://we.riseup.net/cgdev/collaborative-editor
* https://anarc.at/blog/2018-06-26-collaborative-editors-history/
* https://github.com/automerge/automerge
* https://github.com/yorkie-team/yorkie
!! OpenHub badges
{HTML()}<script type="text/javascript" src="https://www.openhub.net/p/706491/widgets/project_factoids_stats.js"></script>{HTML}
{HTML()}<script type="text/javascript" src="https://www.openhub.net/p/259532/widgets/project_factoids_stats.js"></script>{HTML}
{HTML()}<script type="text/javascript" src="https://www.openhub.net/p/718410/widgets/project_factoids_stats.js"></script>{HTML}
{HTML()}<script type="text/javascript" src="https://www.openhub.net/p/487343/widgets/project_factoids_stats.js"></script>{HTML}
{HTML()}<script type="text/javascript" src="https://www.openhub.net/p/602662/widgets/project_factoids_stats.js"></script>{HTML}
{HTML()}<script type="text/javascript" src="https://www.openhub.net/p/717594/widgets/project_factoids_stats.js"></script>{HTML}
{HTML()}<script type='text/javascript' src='https://www.openhub.net/p/woot-realtime/widgets/project_factoids_stats?format=js'></script>{HTML}
{HTML()}<script type='text/javascript' src='https://www.openhub.net/p/chainpad/widgets/project_factoids_stats?format=js'></script>{HTML}
{HTML()}<script type='text/javascript' src='https://www.openhub.net/p/cryptpad/widgets/project_factoids_stats?format=js'></script>{HTML}
! Not Open source
* Connected to ((CKEditor5)): https://ckeditor.com/collaborative-editing/letters/
! Alias
* (alias(Live))
* (alias(Realtime Collaborative Wiki))
* (alias(Realtime Collaborative Drawing))
* (alias(Realtime Collaborative Spreadsheet))
* (alias(Realtime Collaborative Docs))
* (alias(RTC))
* (alias(Realtime Collaboration))