Lovely seeing Nathan and co ship this.<p>Interestingly enough, this feature is the primary reason behind Atom itself existing. We saw the first internal demo of "Atom" (I believe it was "Thunderhorse" at the time) 6-7 years ago, and the main idea was real-time collaboration on code. That sorta took a backseat for awhile as GitHub started to recognize that a collaborative editor was pretty swell in its own right, but glad to see that it's finally all come full circle.
Is it only a coincidence that real-time collaboration is being announced both for Atom and VS Code (<a href="https://news.ycombinator.com/item?id=15704376" rel="nofollow">https://news.ycombinator.com/item?id=15704376</a>) at the same time?
Every time I see one of these "code together in real time" announcements I remember SubEthaEdit, which did this flawlessly 14 years ago, <i>and</i> released the collab part as a library that other apps can use: Coda uses (or at least used, I haven't used Coda in years) it and is/was compatible for sharing.<p><a href="https://subethaedit.net" rel="nofollow">https://subethaedit.net</a>
Not sure this is wise, but I started a test portal 252510f8-e474-45e0-bec1-5714435fa305 if you want to give it a whirl.<p>Edit: it's still working great even with 15+ people - very slick!<p>Also, here's the madness in repo form - <a href="https://github.com/mrspeaker/teletest" rel="nofollow">https://github.com/mrspeaker/teletest</a>
See also Floobits, which is a fully-realized, production ready service that allows collaborative real-time editing of your editors entire workspace.<p>Floobits has plugins for all major editors, including Vim and IntelliJ, as well as Google Hangouts.<p><a href="https://floobits.com/" rel="nofollow">https://floobits.com/</a><p>Disclosure: I used Floobits a few times and think it’s awesome 10/10
My team at the Node Knockout hackathon implemented an editor-agnostic version of this feature last weekend. I guess it is an idea whose time is come.<p><a href="https://www.nodeknockout.com/entries/35-nodeist-colony" rel="nofollow">https://www.nodeknockout.com/entries/35-nodeist-colony</a><p>For me, the editor-agnosticism is the most important feature I would want my live coding experience to have. My team uses a mixture of Vim, Sublime, Emacs, VS Code, and Atom, and we have configurations we are comfortable with. It's too bad that this seems to be happening well within the confines of each editor's ecosystem, and not by some common protocol that all editors could share.
So glad to see that they've implemented this algorithm in JS! <a href="https://github.com/atom/teletype-crdt" rel="nofollow">https://github.com/atom/teletype-crdt</a><p>I've tried implementing a very similar algorithm (one could say it's the same approach) in the beginning of this year, but had one remaining issue with concurrent overlapping deletions that I couldn't figure out (and the paper I was basing the algorithm on didn't account for it: <a href="http://www.sciencedirect.com/science/article/pii/S1474034616301811" rel="nofollow">http://www.sciencedirect.com/science/article/pii/S1474034616...</a>): <a href="https://github.com/jure/rgass" rel="nofollow">https://github.com/jure/rgass</a><p>Weihai Yu's implementation does account for it, however: <a href="https://dl.acm.org/citation.cfm?doid=2660398.2660401" rel="nofollow">https://dl.acm.org/citation.cfm?doid=2660398.2660401</a> , but his implementation is in Lisp, and I've never had the stamina to work through it for that one edge case.<p>Kudos to the team at GitHub, I'll be studying this implementation closely.
This reminds me of that rant from last week about how computers are less functional these days than they were in the 80's. The reason is that the Amiga had cooperative document editing way back when. (Sorry, can't remember the programs that supported it.)<p>/Some version of AmigaDOS also had truly relative timestamps. So you might see a file last accessed "Christmas, 1991."
I have the same idea on Sublime Text about 4 years ago, but due to the Sublime API restriction at that time, it's dead on 2014. I have no idea is the Sublime API now well enough to implement this feature?
My project: <a href="https://github.com/learning/SublimeTogether" rel="nofollow">https://github.com/learning/SublimeTogether</a>
And a screencast: <a href="https://vimeo.com/96316581" rel="nofollow">https://vimeo.com/96316581</a>
"Sharing the same physical machine is impossible for remote teams" -- if only there was some kind of network that would allow people to log into a machine remotely...<p>More seriously, though, in the mid-90s, I worked at a place where most work stations were Sun Sparcs. One way of "coding together" was that one person did an xhost+ to allow a second frame of an Emacs running on a second person's machine to be opened on the first person's display. It was used only very rarely, though.
This looks really neat. As a side note, it bothers me a bit that they haven't used an actual URI, e.g. tty:xxxxxxxx-xxxx-... That would allow for nice hyperlinks from web pages and chat rooms.
“participants all keep their own custom key bindings, packages, and themes.”<p>what happens when two different people editing the same document have two different settings for # spaces per tab character? whose takes precedence? (Or would there be a possibility of inconsistent spacing depending on who is adding a tab?)
For VS Code there's sockscode, it's a little bare, but works well!
<a href="https://marketplace.visualstudio.com/items?itemName=shyykoserhiy.sockscode-vscode" rel="nofollow">https://marketplace.visualstudio.com/items?itemName=shyykose...</a>
Yet I'm still not able to save a file when it's on a network drive: <a href="https://github.com/atom/atom/issues/11911" rel="nofollow">https://github.com/atom/atom/issues/11911</a>
Atom’s detriment with this post is that there’s 4 paragraphs of text before I can even see what this feature looks like, and even then it’s gifs on how to install the feature.
It's amusing to see this while building in Second Life.
The Second Life build tools are a 3D CAD system with real-time collaboration in virtual reality. Several people can be editing the same set of 3D objects simultaneously. Others can stand around and watch, from different viewpoints.<p>Doing this for text is trivial by comparison.
I can appreciate your efforts here. It isn't trivial to put something like this together but I'm going to go ahead and state the obvious: Face to face is far superior to a solution such as this one for what I think are self evident reasons. You're better off, by orders of magnitude, getting on a plane or train and going to see your code buddies.<p>When I'm coding with someone we're not usually on the same files or piece of code anyway. And I don't get any value from seeing them type away at the code file that they are focused in, or knowing which file they're in beyond the name. It's a simple "hey mate what line are you on?" question.<p>I get excellent value from talking to and seeing the other devs face to face figuring out where their head's at and what 'page' they're on. That's the stuff of a proper realtime and face to face code sesh IMHO.
I have never tried real time collaboration. What scenarios are there when you need real time collab. I know technical interviewers prefer this. Do you think it causes distraction when you have 2 people writing code on a same file. I would rather one finish and then do my stuff.
A lot of effort put into "dumb" text editors, but we still don't have (to my knowledge at least) a truly cross-platform / cross-backend IDE that will allow you, for example, to open .sln/.cmake/.make/whatever projects/solutions and provide you with a nice interface to change project settings or even compiler used. This could save a lot of development time and improve productivity, and I'm sure it's a much more useful and common use case than collaborative editing.
Really gave atom a hard try. Back to notepad after a few months. The add-ons are the only advantage, but are grossly overshadowed by the resource consumption this behemoth requires.
Am I really the only one on this forum to think that live shared coding is a terrible idea?<p>The only pro for this is there are no conflicts, so merging is easier. However, live conflicts are still bound to happen if 2 people want to work on the same section of the code, right?<p>And the cost of this is the total unability to debug...<p>I don't get it...
If you haven't seen Colaboratory from Google check it out. This, but for jupyter notebooks.<p><a href="https://research.google.com/colaboratory/faq.html" rel="nofollow">https://research.google.com/colaboratory/faq.html</a>
The use cases don't need to be remote. Really looking forward to a chrome/firefox plugin that would sync a textarea with a new Arom/VS code buffer!<p>(Why? How many of you have edited some config/sql query/... in past week?)
Google brought out something similar in 2012 <a href="https://code.google.com/archive/p/collide/" rel="nofollow">https://code.google.com/archive/p/collide/</a>
Back in college (late 90's) I did collaborative class project (in Z notation) with XEmacs and a partner on a remote X server. It actually worked as long as one of us wasn't in the minibuffer.
If you wish this existed for web pages: <a href="https://github.com/psybernetics/synchrony" rel="nofollow">https://github.com/psybernetics/synchrony</a>
Am I the only one who finds it ironic that the development teams behind the top two open source editors introduce support for collaborative editing on the dame day, apparently unaware that they were both working on the same thing, and there being no evidence of collaboration between the two?
i prefer this over floobits in that i don't need a floobits account, just a github account, which pretty much all devs will already have. it would be nice if there was a way to do this without needing the github account though.