BookStack icon indicating copy to clipboard operation
BookStack copied to clipboard

Feature: Collaborative editing (at least conflict/locking)

Open bios-ben opened this issue 7 years ago • 47 comments

Desired Feature: Currently if you have multiple people editing the same document, the most recent person to save just overwrites the other. At the very least this should use lock files and note when there's conflicts or try to auto merge. But the better feature would be to collaborative edit using sockets like other editing tools such as etherpad or hackmd.

bios-ben avatar May 12 '17 21:05 bios-ben

While I +1 this, I'd also say that it would be a nice addition to have the option between Check In/Out method and collaborative writing. Some may not want the collaborative ability. Personally I would, but I know my last job would simply want a check in/out functionality.

Shackelford-Arden avatar May 12 '17 21:05 Shackelford-Arden

Yeah, I can see the benefit of something like this. Collaboration will be hard to do technically, Especially on the current laravel codebase without the app structure getting extra complicated. My concerns with locking is that it kind of relies on the user to lock/unlock which we can the work around with notifications and such but it does add a lot to the system.

At the moment the system will notify upon edit if someone else has started editing but there's nothing forceful in place.

ssddanbrown avatar May 19 '17 22:05 ssddanbrown

Locking or check-in/check-out is going to be necessary for my org at scale. I would love to see this implemented. Collab is OK, but realistically if I wanted to collab on a doc I wouldn't use Bookstack as the platform to do that in. That's my 2 cents.

therealscottcarlow avatar Jun 06 '17 19:06 therealscottcarlow

What I'd like to see in an app, if I were to make something ideal from scratch, is to be able to edit a file and choose collaborative, real-time read-only, or private lock. In my org the main thing I want a lot of the time is to have multiple people live viewing the edits as they go in (in final formatted form), while one person is doing the editing using whatever editor (markup, wysiwyg, etc). This allows people to essentially audit the documenting party, while only one person is responsible for actual dictation. I haven't seen software like this, and if I had the cycles/funding I'd build it.

----- Original Message -----

From: "Scott Carlow" [email protected] To: "BookStackApp/BookStack" [email protected] Cc: "Ben" [email protected], "Author" [email protected] Sent: Tuesday, 6 June, 2017 12:12:06 PM Subject: Re: [BookStackApp/BookStack] Feature: Collaborative editing (at least conflict/locking) (#395)

Locking or check-in/check-out is going to be necessary for my org at scale. I would love to see this implemented. Collab is OK, but realistically if I wanted to collab on a doc I wouldn't use Bookstack as the platform to do that in. That's my 2 cents. — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub , or mute the thread .

bios-ben avatar Jun 06 '17 19:06 bios-ben

+1 for Check In/Check Out.

Would also need admin level force Check In and probably a way to do that in bulk. Check Out expiration would be nice.

ghost avatar Sep 19 '17 21:09 ghost

Re: @ssddanbrown

At the moment the system will notify upon edit if someone else has started editing but there's nothing forceful in place.

Actually, that'd be cool but it doesn't seem to do that. I tested it on the demo site: I logged in with admin, created a guest2 user, logged in as guest2 in a porn window, started editing a page as admin, but when I went there as guest2 there was no indication whatsoever that the page was being edited. I don't know if I should report this as a bug, because I'm not sure if it's broken or just nonexistent.

But yeah, this would be a nice baseline, and a full collaboration feature would be extra awesome (but definitely hard to implement well).

vdavid avatar May 10 '18 21:05 vdavid

I have been using HackMD for a while and got really used to collaborative editing. The use cases I see are for example writing meeting minutes and doing project plan drafts which are easier done as a team effort if everyone can at least live-view the updates (preferably also live edit).

NickeZ avatar Jun 11 '18 13:06 NickeZ

we also need this and it shut also prevent moving pages when somebody is editing them

foinus avatar Jul 03 '18 10:07 foinus

we would also appreciate if others at least could not edit the same page while another user is editing it :)

alexanderrieder avatar Jul 11 '18 11:07 alexanderrieder

I haven't seen anyone post here for this request in a while. This is a must for any medium sized teams attempting to work on documentation at the same time to prevent conflicts and lost data and time.

Valiantiam avatar Jan 07 '19 22:01 Valiantiam

Fun fact, CKEditor 5 provides this feature out of the box now and is quite polished.

bios-ben avatar Jan 07 '19 22:01 bios-ben

I don't believe the collaboration components of CKEditor5 are open-source and, Even then, it would still require some considerable wiring to the back-end.

I've been keeping an eye on prosemirror as a potential way to combine the WYSIWYG & Markdown editors and at least provide some kind of route to collaboration. Lots of potential work and issues to journey that path though.

ssddanbrown avatar Jan 07 '19 23:01 ssddanbrown

That looks somewhat promising. Again, Ideally, even if we just had a way to "lock" editing to one user at a time, so information is not overwritten by two people trying to write to the same document/page etc.

Valiantiam avatar Jan 14 '19 17:01 Valiantiam

Is there any kind of a roadmap or at least a plan to implement collab editing at this moment? @ssddanbrown have mentioned prosemirror which looks nice but is there something devs are doing to make this happen? 🙂

rdnaskelz avatar Jan 26 '19 10:01 rdnaskelz

@Rdnaskel Not right now, Only a faint plan in my mind. Will be a fairly large undertaking that will require the two editors in BookStack to be better aligned first.

I've been thinking how to achieve the locking component recently. I don't want to do it in a way which will really hinder usage, for example where you'd often need to get an admin to unlock. Will probably look to have a polling system to show active editing (Or base it on autosave times) then have a global timeout (~1hr default, instance-level configurable). Will maybe look to quickly implement this not long after the redesign, if I remember.

ssddanbrown avatar Feb 02 '19 16:02 ssddanbrown

+1

kartha10 avatar Jul 16 '19 16:07 kartha10

Hi everyone, we're using bookstack in our infrastructure. This feature would be extremely useful, especially with an hackmd-like ux. I'd like to know, if it's possible of course, how could I as a programmer / we as a company help in implementing it or accelerate its development.

farfalk avatar Apr 15 '20 16:04 farfalk

hi, how are things going with this? I'd rather have a simple locking mechanism for an admin to switch on/off than have nothing like currently is the case. Or perhaps at first don't actually lock but just give a warning or something when opening a page for editing when it's already being edited. It's seems just a bit weird to not have -something- when bookstack is used in a team.

jstiops avatar Nov 14 '20 21:11 jstiops

Maybe you could be interested in this pull request: https://github.com/BookStackApp/BookStack/pull/1862 It is based on version 0.29.3, I had not rebased it afterwards.

Hazzard17h avatar Nov 14 '20 22:11 Hazzard17h

Hello there! I also wonder if there is any plan to integrate this feature somehow. At least a warning is a killer-criteria. Otherwise one of two people who are working on the same page will loose all it's content, without even noticing it.

OkoGoran avatar Jan 18 '21 15:01 OkoGoran

Yeah considering the response here I understand not wanting to add collaboration.

But as @OkoGoran said, we do need then some sort of warning that someone else is editing, or even a lock period, where a page is locked when someone else is editing. This would also introduce a couple other issues that would need to be addressed. Such as if you want to edit a page someone kept open for edit on accident... you'd need a way to time that other person out, or allow the next person to force the other persons work to save, and close, so you can keep editing, but all the potential work of the other person doesn't get lost. There are a few different ways to tackle that issue I'd imagine.

Valiantiam avatar Jan 18 '21 15:01 Valiantiam

@Valiantiam Just to confirm, my comments there were in regards to sharing the existing draft system. Collaborative editing is different and something I would like one day, it's just a lot tricker to implement.

At least a warning is a killer-criteria

@OkoGoran You should get a warning if you start editing a page that another user has started editing (Or saved a draft for) in the last hour. You should also get a warning if you start editing one of your drafts where the page has since been saved.

Otherwise one of two people who are working on the same page will loose all it's content, without even noticing it.

@OkoGoran It can be hard to notice overwrites, But the content should not be lost. If two people save the same page with different content, you should still have the content for both saved as revisions so you can always see/revert as required.


Just to confirm the status of things, A review of alternate page editors is upcoming on the roadmap. Collaborative editing compatibility will be considered during that phase. There are other technical/support hurdles along the way, but the editor is one of the biggest.

ssddanbrown avatar Jan 18 '21 17:01 ssddanbrown

1+ to making this happen. Confluence Server just fell off a cliff, I really need an alternative and Book Stack was under consideration a while back. I'm hoping that I can migrate over a hundred people somewhere and they need collaborative editing. I would also consider hiring a developer next year to support any open source projects that the company uses, including Bookstack if things turn out. Just for reference on the check-in check-out process, Confluence for example was able to have a page "saved" or "published" while another user was editing, essentially allowing the continued editing of the draft, but the page outside of the editor would be updated to whatever was in the document when one of the contributors pressed that "Saved" button. This was a great feature, but checking out or "saving" wasn't necessary either, it could be left as a draft and picked up the following morning with all of the changes left in the unpublished draft. Hope that helps provide some functionality insight into what other software has previously done. Thanks!

tmanok avatar Feb 03 '21 21:02 tmanok

+1 to this.

Just to throw some wild ideas into the mix

  • could you leverage git somehow for merging changes when two people edit at the same time?
  • Nextcloud has collaborative editing of markdown files, which works pretty well

If user A edits something, then user B edits the same thing at the same time.

  • When they save, which version becomes the live page - is it the most recent save?
  • Do both versions make it into the history?

nikkilocke avatar Feb 05 '21 14:02 nikkilocke

i think we should use some kind of websockets, e.g. https://beyondco.de/docs/laravel-websockets/getting-started/introduction to enable real time coloboration

Viele Grüße aus Coesfeld

Christofer


Dipl. Ing. Christofer Wesseling Geschäftsführer 02541 / 880 - 117 [email protected]

WESLINK GmbH Goxel 33b 48653 Coesfeld www.weslink.de

eBusiness Softwareentwicklung Frontend | Backend | Consulting

Sitz der Gesellschaft: Coesfeld | Amtsgericht Coesfeld HRB 17888 | Geschäftsführer: Dipl. Ing. Christofer Wesseling DE: Diese E-Mail enthält vertrauliche und/oder rechtlich geschützte Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-mail irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail ist nicht gestattet. EN: This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden.

Am Fr., 5. Feb. 2021 um 15:45 Uhr schrieb Nikki Locke < [email protected]>:

+1 to this.

Just to throw some wild ideas into the mix

  • could you leverage git somehow for merging changes when two people edit at the same time?
  • Nextcloud has collaborative editing of markdown files, which works pretty well

If user A edits something, then user B edits the same thing at the same time.

  • When they save, which version becomes the live page - is it the most recent save?
  • Do both versions make it into the history?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/BookStackApp/BookStack/issues/395#issuecomment-774075276, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACI37FEHNM5UAZSN5FE36LS5P77TANCNFSM4DLHIIDQ .

christoferw avatar Feb 05 '21 17:02 christoferw

+1 to this.

Just to throw some wild ideas into the mix

  • could you leverage git somehow for merging changes when two people edit at the same time?
  • Nextcloud has collaborative editing of markdown files, which works pretty well

If user A edits something, then user B edits the same thing at the same time.

  • When they save, which version becomes the live page - is it the most recent save?
  • Do both versions make it into the history?

Hey Nikkilocke,

I think that being able to edit documents together collaboratively is the goal. Being able to see text the moment another person adds it to the document in the document editor is very important feature. If you've never encountered this before, consider the collaborative editing found in Google Docs or Confluence. There is an indication of who is currently viewing the document and all parties can see what changes are being made live. This all depends on the permissions for the document however, inheriting space permissions would mean that new documents are visible to any permitted users of the space, but that could be easily changed by the document's owner.

I like Christoferw's suggestion of using websockets, though I'm not technically proficient enough to contribute code for it.

Thanks,

Triston

tmanok avatar Feb 05 '21 17:02 tmanok

@ssddanbrown commented:

@OkoGoran You should get a warning if you start editing a page that another user has started editing (Or saved a draft for) in the last hour.

I don't see this when editing with two different users on two different incognito windows of Google Chrome using BookStack 21.04.3 for testing purposes.

My BookStack is set to Markdown mode, not WYSIWYG mode. Is that relevant?


Google brought me here. I have this problem where someone overwrote someone elses contribution. Only happened once, but I've only been using BookStack for a week.

Redsandro avatar Apr 30 '21 18:04 Redsandro

I'm only seeing it sometimes. I created a page and made edits, then I saved it and started editing it again. I had a team member try to edit it and he did not see the popup. He saved his work and I saved mine. My work clobbered his work. I went to edit again, and it told me that he had edited it.

I would really prefer to see an option that would hard lock a page if there's a draft.

bamhm182 avatar May 25 '21 17:05 bamhm182

You see a warning when opening the editor only if the other user editing the same page has already saved a draft.

Here is a pull request adding a warning each time a draft is saved: #2877.

MatthieuParis avatar Aug 08 '21 18:08 MatthieuParis

Hello, I was looking at the CKeditor5 website and realized that it is possible to implement real-time collaboration!

If it can give some tracks for this issue.

https://ckeditor.com/collaboration/real-time-collaborative-editing/

Atn-D avatar Jul 27 '22 13:07 Atn-D