dillinger icon indicating copy to clipboard operation
dillinger copied to clipboard

etherpad-like collaborative editing

Open DrAzraelTod opened this issue 12 years ago • 17 comments

Well... it would create pretty much the greatest thing since sliced bread if one could use dillinger to collaborative edit markdown-documents.

..BUT: the current Backend that etherpad, etherpad lite and the likes use is slow and buggy as hell. If you don't want to restart the server every day then this approach is probably not what you want to implement.

DrAzraelTod avatar May 02 '12 13:05 DrAzraelTod

I'm considering creating a paid, hosted version of Dillinger to justify the effort in making this a reality. Other's have requested jsbin style short urls, etc. These are all feasible features, but require time, which clearly we devs have plenty of! =D

joemccann avatar May 02 '12 13:05 joemccann

Hmm. So I actually just deployed Dillinger at my workplace as we obviously want something like this to be internal for obvious reasons. My co-workers and I were literally just discussing how useful it would be to have something like this...similar to http://benweet.github.io/stackedit/ except for we like Dillinger more.

So if you did do something like this, I think we would gladly pay for it so we could implement it in our own network.

InAnimaTe avatar Sep 30 '13 21:09 InAnimaTe

I am not a JS expert to do it myself fast, but here is the engine - http://sharejs.org/

techtonik avatar Mar 15 '14 10:03 techtonik

I think that using sharejs to add real-time collaborative updating on it's own is fairly trivial.

However the issues that then arise are not. Once you have other people editing your document you really want to understand who is changing what and I there isn't a drop-in library to do that for you.

I will give it a go and see how far I get.

maninalift avatar Apr 01 '14 07:04 maninalift

Why do you have to understand who is changing what? Also, did you get anywhere with this @maninalift ? I would love to see it working.

johntyree avatar May 04 '14 20:05 johntyree

Why do you have to understand who is changing what?

To blame them. =) But you're right - most time you just need it for fun, and fun is a killer feature that sells tanks.

techtonik avatar May 05 '14 11:05 techtonik

@maninalift i have a prototype of this working but it's rough. The biggest remaining issue is unifying sharejs documents with dillingers documents.

johntyree avatar May 05 '14 16:05 johntyree

@johntyree

Urm, yes I did have get something working. I'm sorry a load of things that are competing to take up all of my time at the moment: children, buying a house, work...

If I can find the code I will dump it on you, apart from that it will be at a couple of months before I can do anything useful.

maninalift avatar May 07 '14 19:05 maninalift

Doesn't Google SDK allows that?

RoyiAvital avatar Oct 13 '14 22:10 RoyiAvital

There are several ways to do it.

I have a fork that I use at work based on ShareJS. It needs some attention to be compatible with all of the API changes related to plugins recently though.

https://github.com/johntyree/dillinger/tree/collaborative

johntyree avatar Oct 13 '14 22:10 johntyree

Another, maybe better alternative would be to use something like mozilla's TogetherJS.

johntyree avatar Oct 13 '14 22:10 johntyree

OnlinePythonTutor uses TogetherJS - http://pythontutor.com/visualize.html#mode=edit

techtonik avatar Oct 16 '14 09:10 techtonik

Adding TogetherJS support is literally two lines, but I don't think it's a good fit. Rather than two editors pointed a file, it's more like two browsers pointed at an editor. You can't scroll independently, for example. I'm a little worried about the integration with storage as well. What happens when someone else tries to access their storage? You just have them clicking around on your screen? Popping up dialogs and whatnots? No-go imo.

johntyree avatar Feb 09 '15 05:02 johntyree

Neither Etherpad nor Google Docs use popups. Storage is async, so it doesn't care who writes - conflict resolution is done using Operational Transformaton (OT). Window scroll and position is a function that is client dependent and not shared.

techtonik avatar Feb 09 '15 05:02 techtonik

Or do you mean that Dillinger doesn't have transitive storage and makes saves directly to Google Drive etc.?

techtonik avatar Feb 09 '15 05:02 techtonik

I'd be willing to pay for a version that supports collaborative editing, but would prefer to be able to host ourselves.

liljenstolpe avatar Aug 18 '15 04:08 liljenstolpe

Ready to pay. My 8 people company needs this. Currently using Hackmd for the editing and dillinger for PDF export simply because it looks much nicer.

KristerV avatar Nov 05 '19 08:11 KristerV