Project

General

Profile

[Plugin] Redmine Realtime Editor: Google-Docs style co-editing of issues and wiki, no websocket server

Added by Julian Perelli about 8 hours ago

Hi all,

I just published Redmine Realtime Editor (MIT), a plugin that lets several people edit the same issue or wiki page at the same time, Google-Docs style: you see the other editors' text appear as they type, their carets and selections with their name, and the other fields of the issue form (status, assignee, dates, custom fields...) flip in your browser with a "changed by ..." mark.

The idea came from redmine_yjs, which does this with a separate Node/websocket server. The difference here is the transport: there is nothing to deploy besides the plugin. The browsers synchronize through Redmine itself over plain HTTP polling (1 s while somebody else is editing, optional long polling), so it works behind any reverse proxy, on shared hosts and wherever you cannot open ports or run extra daemons. It uses Yjs (CRDT) in the browser; the server only authorizes with Redmine's own permission checks, then stores and relays opaque updates.

Highlights:

  • issue description, comments, journal edits and wiki pages (incl. sections) as shared text; every other field of the issue edit form shared too
  • Redmine's own textarea, toolbar, preview and attachments stay in place; remote carets are drawn over it
  • saving from a co-edited form does not hit the "updated by another user" conflict for the other editors; changes made elsewhere still do
  • new comments private by default (presence only) or shared
  • no new permissions, no cron, no background job, three small tables; Node.js not needed to install
  • tested in CI on Redmine 5.1, 6.0, 6.1 and 7.0

Plugin directory entry: https://www.redmine.org/plugins/redmine_realtime_editor
Install: clone into plugins/, rake redmine:plugins:migrate, restart.

It's a first release (0.1.0); feedback, bug reports and pull requests are very welcome.

Julian