etherpad-like collaborative editing #15

Open
DrAzraelTod opened this Issue May 2, 2012 · 16 comments

8 participants

@DrAzraelTod

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.

@joemccann
Owner

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

@InAnimaTe

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.

@techtonik

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

@maninalift

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.

@johntyree

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.

@techtonik
@johntyree

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

@maninalift

@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.

@RoyiAvital

Doesn't Google SDK allows that?

@johntyree

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

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

@techtonik

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

@johntyree

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.

@techtonik

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

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

@liljenstolpe

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment