Hello,
On Sat, Jun 28, 2014 at 03:50:10PM +0200, Bram Moolenaar wrote:
> Jens-Wolfhard Schicke-Uffmann wrote:
> > On Thu, Jun 26, 2014 at 11:08:30PM +0200, Bram Moolenaar wrote:
> > > You need to take care of authentication, for example.
> > Good point, thanks.
> > > One thing would be awesome: To have a cross-platform collaboration edit
> > > mechanism that works will several editors. One that only works with Vim
> > > will be limited in worldwide acceptance.
> > >=20
> > > Google Drive offers something that might work. The mechanism is working
> > > very well, at least for Google documents. Problem is that the library
> > > is only available for JavaScript. So it would require embedding a
> > > JavaScript interpreter in Vim. It's not impossible...
> > >
https://developers.google.com/drive/realtime/
> > This would bind VIm to an API which has a proprietary server
> > implementation, something I'd rather avoid.
> > However, I think that EtherpadLite offers a protocol I could implement
> > and which should work well. Unless someone stops me, that would be the
> > one I'll be aiming for then.
> There is a Python implementation for etherpad lite, so that would make
> things much simpler.
> I have no idea how well etherpad lite works and how good the security
> is. It does appear to be possible to run your own server or use an
> existing one on the Internet.
I have prototyped an etherpadlite python library and a vim plugin as
an example of how to use it, I've sent a mail on the list about a year
ago about that, so I guess that's what you're talking about, Bram:
https://github.com/guyzmo/PyEtherpadLite
https://github.com/guyzmo/vim-etherpad
As far as I've gone, it's working perfectly well as "read-only", and
it sometimes work when sending changesets, but fails too often to
consider the code base stable.
I've tried making it as good as I could, but failed in my attempts
to make it actually *good*. The main problem is that the OT library
being used by EPL is unpacking the changeset and rebuilding the
changeset, even if valid, if the rebuilt changeset is not the same as
the unpacked changeset, it will refuse the changeset.
Another thing is that EPL is not a text editor, it's a text
processor, because it implements rich text features that we don't
want to see exist in vim. Bold, Italic, underlined… and I don't even
talk about how messy are the bullet points.
I've been considering to actually load that JS library from python
to build the changesets… But honestly, what stopped me was thinking
the level of complexity I'd then be creating, JS over Python over
Vim… Then could we still joke about emacs being heavyweight? :-) Or
maybe, there's a way to convert JS code into python bytecode? (Pyjon?)
Anyway, please fork and improve on my code! I'm always around
(mail, Jabber, IRC – zmo on freenode, just ask!) to help, and always
happy to accept patches! If we all join forces, we may make actually
vim connecting to EPL a reality for everyday use.
Cheers,
--
Guyzmo