Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Collaborative editing #811

Closed
ryanprior opened this issue Nov 29, 2018 · 25 comments
Closed

Collaborative editing #811

ryanprior opened this issue Nov 29, 2018 · 25 comments
Assignees
Labels
feature Big ideas for the future pinned Will not be closed by stale bot

Comments

@ryanprior
Copy link

Hi there! Teams that I work with regularly swarm on documentation to build out a knowledge base quickly or update one with new information. The ability to see & immediately act on others' edits, and attach comments and questions to them, can create a much more productive documentation writer experience.

Will you consider adding collaborative real-time editing to Outline? Is it something that's technically feasible with your rich text widget?

@tommoor
Copy link
Member

tommoor commented Nov 30, 2018

Hey @ryanprior, thanks for the question – I do think that the option for realtime editing is in the long term plans of Outline but it isn't top priority, we'd rather tackle a lot of the organizational problems first as there are already editors doing an excellent job of the realtime editing aspect.

It's definitely something that could be incorporated into our existing editor codebase however and the Slate community is working on some solutions to this right now that we should be able to build ontop of 😄

@tommoor tommoor added feature Big ideas for the future idea labels Nov 30, 2018
@tommoor tommoor added this to the Q2 2019 milestone Jan 9, 2019
@coleylogan
Copy link

Even if real-time editing isn't a priority, the ability to share and ask someone to contribute to a document would be helpful. We're using Slack/Paper as an alternative atm.

@marianhlavac
Copy link

This should be also considered as a bug, because the app has concurrency access issues. If I edit the document before someone else, the other one ends with an error when trying to save the document. Hope this will resolve soon, it's the only one feature I need, everything else seems perfect.

@tommoor tommoor modified the milestones: Q2 2019, Q3 2019 Apr 9, 2019
@ryanprior
Copy link
Author

@tommoor just wanted to update you that I'm still looking forward to collaborative editing. From my perspective it's table stakes; I cannot picture an organization with many writers adopting new knowledge base tech that doesn't include collaboration.

I'd be interested to know how you see the context around this, because I'm sure there are many other perspectives, but to share my view, those who can tolerate not having live collab are one or more of the following:

  • small- few people overall, so it's already relatively easy to coordinate things in general
  • hyperspecialized- one person (or a small group) does all the writing
  • siloed- maybe many writers overall, but they work in separate silos and hyperlink to one another's docs rather than contributing to a shared doc
  • pain tolerant- they are used to struggling against their tools

An organization that is medium-size or larger, with versatile team members who work across boundaries and want tools that are a joy to use, would be justified in immediately rejecting a knowledge base solution without even a second look if it lacks live collaborative editing.

I hope that's a helpful perspective for you! I would love to assist you in realizing the vision of great collaboration in Outline, so please let me know if there's a way you'd prefer for those of us in the comments here to get engaged. 😄

@tommoor
Copy link
Member

tommoor commented Apr 11, 2019

Hey @ryanprior – I agree with your perspective, there's no doubt that collaborative editing would really take Outline to the next level and we'll definitely get there but it's quite the technical undertaking that will likely take months of work to pull off.

In the meantime I hope that the product can continue to serve as a store of less-changing team knowledge – in the cases where you need to collaborate on a document in realtime for example for meeting notes perhaps these may be archived in Outline (a tough ask, I know!)

@glaand
Copy link
Contributor

glaand commented Apr 28, 2019

Hello everybody

Entering the Market with a new product, should be with features that are beyond state-of-the-art what the current market offers. Not having the standard features, in my point of view, would immensely devalue Outline. Collaborative Editing is surely one of the standard features, this one which should be top prioritized. I understand that a product needs to be first of all accepted by potential users, of course this with bare minimum features. But yes, what is minimum?

I see Outline as a Village Saviour at this industry branch, knowledge management. Being a Saviour is being someone that people know that he is willing to fight a problem, which in this case is simplicity, ease of use, reliability and technology perfomance. My analogy is a little bit out of context but that's what we are doing.

At a technical view, i have some ideas to solve this simply:

  • Each line of a document get's blocked by the first person arriving there. When the person goes to a new line or exits Outline, the line would be released.
  • Each key entry would be saved as a commit, where id could be hash of current timestamp. This information would be send to all current editors (peers) at real-time. This could be solved with WebRTC.
  • The changes to the document can only be mutated by the commit controller, let's say so. This way, every peer sees the same commit being mutated.
  • This solution could be done only using frontend engineering.
  • To save the changes, there would be a master peer, imagine this system being a SQL Server with Masters and Slaves, where he would trigger the save action along with author and stuff like that.
  • The Peer Master could be the first person arriving the document. If he leaves, this status will be passed to the second one, in the same time saving the document.

WebRTC is the big key role here :)

What do you all think? Is this solution plausible?

Best regards,
André

@tommoor
Copy link
Member

tommoor commented Apr 28, 2019 via email

@ryanprior
Copy link
Author

I recall that you tagged this for Q3 2019. I'll be dedicating some time in the coming months that I could use to help make this happen- if you're still thinking on that timeline, let me know how I can help and who else is involved in this effort so we can sync up. :)

@jezell
Copy link

jezell commented Jul 14, 2020

This looks like a decent solution, a bit more flexible than the out of the box prosemirror support:
https://github.com/yjs/y-prosemirror

@tommoor tommoor removed this from the Q3 2019 milestone Oct 20, 2020
@tommoor tommoor self-assigned this Oct 27, 2020
@tommoor tommoor mentioned this issue Nov 17, 2020
37 tasks
@stale
Copy link

stale bot commented Apr 9, 2021

Hey! The issue has been automatically marked as stale because it has not had recent activity. It will be closed soon if no further activity occurs. Please reply here if you wish for the issue to be kept open.

@stale stale bot added the stale label Apr 9, 2021
@ryanprior
Copy link
Author

Doesn't seem to matter whether this stays open as long as #1660 tracks the relevant work. Thanks again for working towards this for so long @tommoor!

@stale stale bot removed the stale label Apr 10, 2021
@tommoor tommoor added the pinned Will not be closed by stale bot label Apr 10, 2021
@tommoor
Copy link
Member

tommoor commented Sep 11, 2021

Alpha Release

Will be manually enabled for teams, small amounts of data loss expected – you can request this enabled for your team on cloud hosted Outline by emailing hello@getoutline.com

Cloud Beta Release

Will be enabled via UI in the admin, data loss not expected but possible

  • Remove "Saving…" message when collab enabled
  • Add dd-trace metrics
  • Slack notifications for edits are off the wall
  • "Document reload" toast triggered and would not let other player exit
  • Opening doc with embeds causes "edit"
  • Ensure "readOnly" editor functionality exists in edit mode
  • Add ability to flag feature for admin in API
  • Title is not editable when toggling from readonly
  • Other client's awareness not visible until poll period (fix: Remote client awareness not immediately available ueberdosis/hocuspocus#199)
  • TOC not updating when moving between docs
  • There seems to be a memory leak (fix: Memory leak if websocket disconnects before onCreateDocument hooks complete ueberdosis/hocuspocus#205)
  • Embed toggle not consistent
  • Is there still a bug with too many notifications for doc edits?
  • Critical: Occasional bug where awareness gets stuck in a loop
  • Add guard against saving text when collab enabled
  • Facepile does not become active immediately after paused connection is reconnected
  • Re-investigate collab+websockets service on same host (for self hosted)

Self Hosted Beta Release (~8th Nov)

Production Release

Scalable and reliable, will be enabled for teams automatically

  • Add features UI in admin
  • Handle permissions changing while multiplayer is connected
  • Idle connection handling
  • Restore document functionality
  • Handle documents.update API request should update CRDT state This functionality will be deprecated
  • Redis scaling to multi-server (see: Rewrite of the Redis extension ueberdosis/hocuspocus#203)
  • Image upload decorations

Later

@tvarsis
Copy link

tvarsis commented Dec 9, 2021

@tommoor Not sure if I should comment on this thread or open a new issue. But the performance of this feature could use some improvements. When working in Chrome on a large document, the live editing is barely usable due to lag and performance issues. It works somewhat better in Firefox, but when the document grows, issues arise there as well. If you for example use a Word document with 100+ pages etc, that multiple editors are in, you should be able to reproduce this issue pretty easily.

@tommoor
Copy link
Member

tommoor commented Dec 9, 2021

If you for example use a Word document with 100+ pages etc

This is a much larger document than Outline has ever really supported – even before collaborative editing, the entire thing is rendered at once so this much text is going to cause performance issues irregardless. There are parts of the editor code that loop over all paragraphs, for example.

If you're seeing performance issues on more regular sized documents then that's something that could be filed as a bug but really at this size you should probably be splitting your content up more.

@tommoor
Copy link
Member

tommoor commented Dec 9, 2021

Also interested if multiple editors being present makes a difference to the experience

@tvarsis
Copy link

tvarsis commented Dec 10, 2021

@tommoor Thanks for your reply! 100+ pages was more of an easy way to reproduce it. The performance degradation is happening much earlier than that and I have seen it on documents that is more of the size of 20+ pages or so (estimate), but I guess the amount and type of actual content in those "pages" is also an important factor.
And yes, it has a big impact if multiple users are editing it at the same time. Google Docs have this exact feature, and I have not seen any performance related issues there on larger documents. Loading and reading a 100+ pages document works and performs fine in Outline, so I'm sure there are things that can be fixed in the collaborative editing mode to reduce the need of splitting up documents if it is not actually needed.

@tommoor
Copy link
Member

tommoor commented Dec 14, 2021

I've just been reminded that Chrome has recently had a bug where spellcheck caused all online text editors to significantly slow down, it could be that this affected your experience too, eg confluence:

https://jira.atlassian.com/browse/CONFCLOUD-73213

You could try disabling spellcheck to see if that makes any difference in the meantime. Google Docs implements it's own spellcheck and disables the system one from what I can tell.

@ryanprior
Copy link
Author

Google Docs renders its whole app in a big <canvas> element, so they're basically sidestepping a ton of normal browser performance issues and just painting raster graphics directly to screen. Not an example other projects can or should follow.

@Snuupy
Copy link

Snuupy commented Jan 3, 2022

Checkboxes can no longer be interacted with, with seamless editing. Is this intentional for now?

@tommoor
Copy link
Member

tommoor commented Jan 4, 2022

Hi @Snuupy – I'm not able to reproduce this behavior, are you sure the doc isn't in read-only permissions? The other possibility would be websockets having problems connecting.

@Snuupy
Copy link

Snuupy commented Jan 4, 2022

@tommoor The doc is not read-only. I can check/uncheck on mobile but not desktop after enabling collaborative editing. Tried both chrome and firefox.

Edit:

Not working on desktop: https://giant.gfycat.com/AmusingUltimateEyas.mp4

No websocket errors in console, editing the same document (as in adding/deleting text) works on other devices.

Working on mobile: https://giant.gfycat.com/InfamousShinyFalcon.mp4

Looks like a UI glitch where it thinks I'm dragging/dropping instead of checking the box as a leftover from the editor behavior.

@Snuupy
Copy link

Snuupy commented Jan 9, 2022

Update: turns out it was the bitwarden extension causing some type of issue with the checkboxes. As soon as I disabled the extension, I was able to check and uncheck my boxes.

The instructions to do so are: Settings -> Excluded domains -> getoutline.com (or whatever domain you use for outline)

@tommoor
Copy link
Member

tommoor commented Jan 9, 2022

Very strange, but I'm glad you were able to track it down!

@Snuupy
Copy link

Snuupy commented Jan 9, 2022

With the new seamless editor, the "Rich service embeds" setting is not respected. Even if it is disabled in settings, embeds will still be shown in the editor. Tested on both self-hosted and getoutline.com.

@tommoor
Copy link
Member

tommoor commented Apr 20, 2022

Closing as complete as this has been rolled out to production for a while now. There are a few follow up tickets which have got their own label:
collaborative editing Issues that are stepping stone work towards collab editing

@tommoor tommoor closed this as completed Apr 20, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature Big ideas for the future pinned Will not be closed by stale bot
Projects
None yet
Development

No branches or pull requests

8 participants