Operational Transforms in Go

1,051 views
Skip to first unread message

Am Laher

unread,
Feb 18, 2015, 4:40:05 AM2/18/15
to golan...@googlegroups.com
Hi peeps. 
I'm working on a web-based collaborative editing tool, and specifically I'm hoping to implement an API supporting Operational Transforms, to be compatible with one of the major Javascript libraries (ot.js, ShareJS).

I've found one example of Operational Transforms in Go: https://github.com/mb0/lab/tree/master/ot
Unfortunately the project is untouched for 2 years and doesn't compile right now. 
It would probably be straightforward to get it working, but I'm interested in finding a more mature project.

Does anyone know of any similar projects already existing?

Note that my storage layer is Mongodb (mgo), so I don't need anything too fancy on the storage side. Mongodb can handle the contention & partial updates.
Ta

Martin Schnabel

unread,
Feb 18, 2015, 6:57:14 AM2/18/15
to golan...@googlegroups.com
> --
> You received this message because you are subscribed to the Google
> Groups "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to golang-nuts...@googlegroups.com
> <mailto:golang-nuts...@googlegroups.com>.
> For more options, visit https://groups.google.com/d/optout.

do you need ot for runes or bytes? i can factor out the package to its
own repository. i already have a version locally that operates on a
[][]rune instead of []byte, but i can add the []byte version back in.
the ot lib itself does work ok it has not much to do with the
discontinues golab project.

sidd...@gmail.com

unread,
Feb 18, 2015, 1:46:40 PM2/18/15
to golan...@googlegroups.com
Hi,
You might look at this project https://github.com/Jeffail/leaps

thanks,
-sidd

Ashley Jeffs

unread,
Feb 21, 2015, 12:38:18 PM2/21/15
to golan...@googlegroups.com
Hey, I'm the author of leaps. For storage layers it currently supports PostgreSQL, MySQL and filesystem, but adding support for mongodb would be a quick and easy job. Get in touch if it otherwise suits your needs and I'll see if I can get it sorted for you.

Am Laher

unread,
Feb 22, 2015, 12:18:42 AM2/22/15
to Martin Schnabel, golang-nuts
Martin, thanks for getting back. Hmm, probably bytes I'd say, just so it can cope with different kinds of data. Basically I'm not sure exactly what I want yet until I get my hands dirty with a working implementation. So, I guess I'll try a few options, including your package. Don't worry if you don't have time to complete your work, I could always extract it into a subpackage myself, and send you a pull-request.
Cheers

On Thu, Feb 19, 2015 at 12:55 AM, Martin Schnabel <m...@mb0.org> wrote:
On 02/18/2015 10:40 AM, Am Laher wrote:
Hi peeps.
I'm working on a web-based collaborative editing tool, and specifically
I'm hoping to implement an API supporting Operational Transforms, to be
compatible with one of the major Javascript libraries (ot.js, ShareJS).

I've found one example of Operational Transforms in Go:
https://github.com/mb0/lab/tree/master/ot .
Unfortunately the project is untouched for 2 years and doesn't compile
right now.
It would probably be straightforward to get it working, but I'm
interested in finding a more mature project.

Does anyone know of any similar projects already existing?

Note that my storage layer is Mongodb (mgo), so I don't need anything
too fancy on the storage side. Mongodb can handle the contention &
partial updates.
Ta

--
You received this message because you are subscribed to the Google
Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send

For more options, visit https://groups.google.com/d/optout.

do you need ot for runes or bytes? i can factor out the package to its own repository. i already have a version locally that operates on a [][]rune instead of []byte, but i can add the []byte version back in. the ot lib itself does work ok it has not much to do with the discontinues golab project.


--
You received this message because you are subscribed to a topic in the Google Groups "golang-nuts" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/golang-nuts/3IJuKIzE54M/unsubscribe.
To unsubscribe from this group and all its topics, send an email to golang-nuts+unsubscribe@googlegroups.com.

Am Laher

unread,
Feb 22, 2015, 12:31:11 AM2/22/15
to Ashley Jeffs, golang-nuts
Thanks Sidd & Ashley, I'll definitely look at leaps. It looks like an impressive piece of work. It's good to see what it looks like to build a websocket-based OT service. 
I can see it looks pretty trivial to add new back-ends. If I end up going with leaps then I'll happily contribute a Mongodb implementation - possibly in a separate package because it'd depend on 'mgo', maybe a 'subpackage' in the same repo if you like.
Anyway, Ashley I'll dig into it soon & let you know how I get on. 
Cheers

--
You received this message because you are subscribed to a topic in the Google Groups "golang-nuts" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/golang-nuts/3IJuKIzE54M/unsubscribe.
To unsubscribe from this group and all its topics, send an email to golang-nuts...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages