+217

Real-time collaborative editing

aahlborg 13 jaar geleden bijgewerkt door Dorthy Streifel 6 jaar geleden 32
A killer feature would be real-time collaborative editing of a single file via the internet. However, it's really hard to implement and should be considered a feature for 2.5 or 3.0. Please keep it in mind when building the foundation to allow for future improvements of Sublime Text.
-25
Again, hard to do write, and not the most important things to have but definitly something interesting.
+8

Maybe something like libinfinity could be used? http://gobby.0x539.de/trac/

+3
Perhaps something like this could be used: https://github.com/djspiewak/cccp ?
+1
Google implemented a real-time merging method that seems to work really well for wave. Though the project itself is being shut down, all that code is still open-sourced and free to use. Perhaps that would also help in the creation of something for sublime. Though, I can't seem to find that code with a quick search. I do have a link stored somewhere though...
+6
I swear to god, if you continue to match TextMate's features, and add the only feature SubEthaEdit has to offer (Real Time Collaborative Editing), then you've got yourself an awesome product that would have me ditching TextMate. I would love to give you some money for this killer combo!
+3
I don't understand why people say it's so hard to write.. we already have multi cursor implemented. You only need to connect the clients and give control of one of the cursor to the other client (and vice versa)
+1
If it isn't so hard, then perhaps you should take a weekend and knock it out.
+4
How if the source is closed? 
-3
It's got a nice fully featured plugin API powered by Python.
+2
It's not fully featured
-1
Nope, but it has everything you need to do collab editing.  You'd need to write a protocol for it, probably with twisted, keep up with the start and end points, and the text contained within, and keep state synced up. using view.insert and view.erase.
Easy stuff.
+1
So you agree it's not hard
-5
No, that's not what I'm saying at all.

I'm saying the API is featured enough to handle it so you can do it, since you think it is so easy.

I was being sarcastic in my response there toward the end.
+5
this is the only thing I miss from Vim+tmux or Coda 
Lauch a lightweight web server serving up the current set of documents in an ACE instance.
ACE is indeed turning an interesting option. 
It already supports multiple cursors and everything. 
Wondering if it would be possible to use his colab engine in Sublime and if anything would be gained by that..
+2
Thanks. I didn't know it was an editor, so I didn't google for "ace editor" :)

This actually looks like it could be promising: https://simperium.com/


Create a package where you can put un/pw and api-key in the preferences. 


Most people collab edit over a local network or at least a VPN so each business would get an api-key and plug it in their preferences. This would keep everyone under the 2500 user limit to keep it free. 


I don't know enough to actually make this happen, but maybe someone else would be able to use simperium to make this happen?


-1

Interesting, but Simperium doesn't have collaborative *text* editing capabilities.

+1

There is a Notepad++ plugin which provides this functionality. The undo privileges get a little confusing, but it does work. Source available here: NppDocShare 

Are you saying we can use Notepad++ plugins in Sublime Text? If so, would you mind sharing how? I did a quick google search for how to do this but didn't come up with anything.

I wish. Sorry, I should have been more specific. The Notepad++ plugin works for Notepad++. Since Sublime 2 has a rich plugin API, I was thinking that either the plugin could be ported from C++ to python, or at minimum the concepts used in the Notepad++ plugin could be applied to a solution for Sublime Text. I downloaded the source and am intending to play with it a bit.

+1

 Before doing this accross internet, it would be nice to just have this work on a local network. With zeroconf protocols surch as bonjour and ahavi, you can detect all sublime text instances with the same plugin on the network and allow collaborative editing without any need for configuration like dukto r5 does for file sharing. That would be a great start.

+4

Everybody interested in this, I have found https://github.com/zookatron/sublime-collaboration lets support this project :D

+1

I know lots of folks have mentioned SubEthaEdit by the Coding Monkeys, but I don't think anyone has posted this link:  http://www.codingmonkeys.de/subethaengine/  


They have actually licensed their protocol / engine to the Coda folks.  I don't know any details of their arrangement with the folks at Panic, but this shows that its available for licensing.  Jon, please at least send them an email and ask them about it!  Thanks!  Keep up the good work!

PS: there is a related thread over at the SublimeText forum's too, I don't know which site is monitored more, but here is the link back http://www.sublimetext.com/forum/viewtopic.php?f=4&t=6131&start=0

+4

There are plugins out there that attempt to do this. https://github.com/zookatron/sublime-collaboration is one, and another that seems a little more mature and usable is https://github.com/Floobits/sublime-text-2-plugin. But for me the biggest obstacle to this being actually usable is that the sublime text API doesn't allow making non-undoable changes to a buffer. This means that e.g. if you're making a change, then someone else makes a change, and then you press undo, you will undo their change instead of yours. If anyone is interested, I've made a separate post to request this feature at http://sublimetext.userecho.com/topic/158986-/.

+2

I'm currently working on a plugin for this, using twisted for the networking parts. I'm using concepts and ideas written by Neil Fraser, at this page. Whatever I write will probably not be as nearly as feature rich as what floobits is doing, but it will be worth it for my purposes

I found sublime text new version (3.0) very effective in this regard.