31 ms·
Code together in real time with Teletype for Atom
- peterkelly 9y agoAm 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?
- heartbreak 9y ago> the top two open source editors Subtle. On-topic, I remember recently Uber and Lyft were working on a similar feature, and both knew about the other but neither knew that the other knew. I wish I could remember what the feature was.
- sac2171 9y agoI believe this happened with Lyft Line and Uber Pool.
- heartbreak 9y agoThat’s the one! Thank you!
- krallja 9y ago> top two open source editors I must have missed the announcements for vim and Notepad++.
- s09dfhks 9y agoany way to use this WITHOUT a github account?
- neilparikh 9y agoYou can run the server yourself I think: https://github.com/atom/teletype-server https://github.com/atom/teletype-server
- AriaMinaei 9y agoIs it only a coincidence that real-time collaboration is being announced both for Atom and VS Code (https://news.ycombinator.com/item?id=15704376 https://news.ycombinator.com/item?id=15704376) at the same time?
- Egidius 9y agoI was just noticing the same, looking at my HN feed. It's higly remarkable, to say the least.
- __BrianDGLS__ 9y agoCame here to make the same comment :D
- JPKab 9y agoThe fact that VS Code's version isn't ready yet, and Atom's is makes me think that Microsoft wanted to respond to Atom's announcement. But I honestly have no idea if that's the case. Just pure speculation. Edit: Atom's announcement was yesterday. Microsoft's was today. That further fuels my speculative hunch. :)
- bad_user 9y agoMicrosoft is not known for finesse in their marketing tactics. Just had a déjà vu with Microsoft's NetPC, announced just after Sun Microsystem's Network Computers. That said, I do like VS Code very much. Gave Atom a try, but it felt sluggish and its add-ons were very fragile.
- reaperducer 9y agoThis 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.) /Some version of AmigaDOS also had truly relative timestamps. So you might see a file last accessed "Christmas, 1991."
- holman 9y agoLovely seeing Nathan and co ship this. 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.
- indescions_2017 9y agoThis one single feature could potentially have the largest impact on my workflow in 2018. As much as I love async task management. Real-time collaboration with remote team members should be fascinating ;)
- chiefalchemist 9y agoI guess the next step would be something along the lines of Google Wave where you could playback the "conversations" and see the learning process develop.
- mandelliant 9y agoDamn I miss Google Wave
- mnx 9y agoIt was opensourced, but apparently nobody wanted to maintain it for free. https://incubator.apache.org/wave https://incubator.apache.org/wave
- alalonde 9y agoWe actually implemented exactly this in our demo: https://demo.convergence.io/code-editor/ https://demo.convergence.io/code-editor/ Even as the author, I think web-based IDEs have pretty limited utility, but it is a great showcase for the power of our API. We (my co-founder and I) built this in about 10 days.
- killnine 9y agoReally 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.
- vlunkr 9y agoI really hope you mean notepad++ or something
- melling 9y agoYeah, someone complains about the resource usage in every Atom post. I feel likes it's a rehash of emacs vs vi debate from 30 years ago. Emacs needed many megabytes more than vi so people wouldn't use it. As time goes on the resource usage becomes less of a problem. My 4 year old laptop has 16GB of RAM and I don't really worry about it. I'll get 32GB or 64GB in my next computer. I never liked quibbling over memory. My time is much more important to me and I want the best tools. I also want them to swim in RAM.
- nulagrithom 9y ago> As time goes on the resource usage becomes less of a problem. Yet vim is still more popular today by a wide margin. :) It's not just about memory usage; it's about lag. Atom felt laggy to me. I also value my time, and I can't stand waiting for my editor.
- have_faith 9y agoIt was the lag (and at the time, struggling to open "large" files) that stopped me giving it more than a cursory check a year or so ago. No idea if it's worth looking into again? Would be hard to beat sublimes snappiness doing almost any task.
- outworlder 9y agoSublime is still faster. But try VSCode. I do not notice any lag on the Mac. I still prefer Emacs due to the maturity of its packages. But I have used VSCode for a month and I have no complaints about the performance.
- buryat 9y agoI wish there was something like this for Intellij.
- sscotth 9y agoFloobits works with Intellij as well as Neovim, Emacs, Sublime, and Atom. I'd like to explore whether Teletype can be used across editors in a similar manner.
- fro0116 9y agoIt's almost certainly _possible_. See under "Editor-agnostic client library", and https://github.com/atom/teletype-client https://github.com/atom/teletype-client
- jitl 9y agoSee also Floobits, which is a fully-realized, production ready service that allows collaborative real-time editing of your editors entire workspace. Floobits has plugins for all major editors, including Vim and IntelliJ, as well as Google Hangouts. https://floobits.com/ https://floobits.com/ Disclosure: I used Floobits a few times and think it’s awesome 10/10
- clebio 9y agoExcept, it's not Vim, it's Neovim.
- dopamean 9y agoMight it work in vim8 now?
- alexozer 9y agoTested with neovim, really does not work (you must edit greater than 40 lines away from each other or so, or else the editor bugs out).
- elliotec 9y agoFloobits does not work. I've tried it several times hopefully. It simply doesn't do anything. Please enlighten us to how you got it to work at all. I use neovim.
- jitl 9y agoIt's worked great for me in Sublime and Intellij. I've never tried it with Neovim :(
- jaswrks 9y agoI love Floobits also. Works great in those I've tested: IntelliJ, Atom, and Emacs. But what is still missing in many of these peer programming solutions is the ability to leave for a few moments (or a few days) then return and do a playback of what your peer(s) did while you were gone.
- serg_chernata 9y agoIs there anything like this for sublime?
- metahost 9y agoFloobits is all you need!
- SCdF 9y agoApparently the protocol can be implemented by any editor, so hopefully we'll end up in a glorious future where this works in lots of browsers (including VSCode, who just announced their own version of this) Edit: can in the future, not now. So we'll see
- rahilsondhi 9y agoIf you wish this existed in a SQL editor, we have it in PopSQL (https://popsql.io https://popsql.io)
- fro0116 9y agoCurious if this supports multiple-cursors (as in multiple cursors per user through ctrl/cmd+d, etc)? If so that'd be awesome!
- jasonrudolph 9y agoIt does indeed.
- fro0116 9y agoBeautiful!
- LesZedCB 9y agoi 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.
- sleepybrett 9y agoWith floobits though you can go ahead and use atom while I chill in vim or sublime. It doesn't demand that you both use the same editor.
- LesZedCB 9y agofor now. since this is the framework, I think we'll see plugins for other editors soon enough.
- liamdanielduffy 9y ago“participants all keep their own custom key bindings, packages, and themes.” 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?)
- have_faith 9y agoDefaulting to whatever the document is currently using would be sane?
- hobofan 9y agoThe document isn't "using" anything, since a document is a passive object. Unless you have something like vim modelines where you configure it at the top of the file like `/* vim: set tabstop=8:softtabstop=8:shiftwidth=8:noexpandtab */ `, the document itself doesn't know anything about how things _should_ be (which is the important part).
- grumblestumble 9y agoan opened document inside an editor is absolutely aware of this, and this is what you're collaborating on. almost all IDEs support EditorConfig, which makes standardizing on things like that across teams trivial.
- llimllib 9y agoI would guess that tab -> spaces happens locally, and then the spaces are what's sent over the wire. So it would be whoever inserted the tab. (What other possibility could there be?)
- MsMowz 9y agoWhy would spaces be sent over the wire?
- bousaid 9y agoAtom’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.
- level 9y agoThe marketing site does it better [1]. [1] https://teletype.atom.io/ https://teletype.atom.io/
- 120bits 9y agoI 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.
- Antrikshy 9y agoEver been to a hackathon? It's hard to coordinate over Git when you're just getting started on a codebase and there's barely anything for the 3 other people to work on. I've used Cloud9 for this very successfully in the past.
- sleepybrett 9y agoI miss subethaedit
- ovrdrv3 9y agoAwesome! It worked with the same github account over two computers as well! This is exciting.
- kimjongman 9y agoHow safe is this?
- LukeB42 9y agoIf you wish this existed for web pages: https://github.com/psybernetics/synchrony https://github.com/psybernetics/synchrony
- BoiledCabbage 9y agoI don't use it at all, but hasn't emacs supported this since the 80s or 90s?
- scbrg 9y agoNot sure if there's been a way to integrate separate emacs processes, but it has always been possible to launch a new frame (emacs speak for window) displaying the same buffer, and given network transparency in X, have it displayed on any remote computer running X.
- dleslie 9y agoYou can run an emacs server and operate out over ssh, if you want, sharing the buffers across many remote clients. https://www.gnu.org/software/emacs/manual/html_node/emacs/Emacs-Server.html https://www.gnu.org/software/emacs/manual/html_node/emacs/Em... Although if you're doing remote editing you probably want to use Tramp. https://www.gnu.org/software/tramp/ https://www.gnu.org/software/tramp/
- dleslie 9y agoFor a long time, yes. I often have many Emacs clients editing the same buffer(s). It works reasonably well.
- mrspeaker 9y agoNot sure this is wise, but I started a test portal 252510f8-e474-45e0-bec1-5714435fa305 if you want to give it a whirl. Edit: it's still working great even with 15+ people - very slick! Also, here's the madness in repo form - https://github.com/mrspeaker/teletest https://github.com/mrspeaker/teletest
- Klathmon 9y agoI'm curious, how was the performance with all of that happening? (i'm assuming at some points you had 10+ people in there at once?)
- mrspeaker 9y agoI just stopped sharing the document. I was just running it over crappy cafe wife for 2.5 hours, max ~20 people, always 5 to 10... performance seemed fantastic - didn't tax my lappy at all. Very impressed! [Re-shared it at 28e6c3b4-754c-44ef-9406-869604db9db5 - it would be good if you could keep a UUID somehow, but I guess that's unfeasible]
- sillysaurus3 9y agoSomeone please build a game around this premise. 15+ people having fun in a shared simulation is prime territory for game ideas.
- photojosh 9y agoWhich premise? Isn't that just re-inventing multiplayer gaming? Or do you mean targeting web games, much like was discussed in this HN post: https://news.ycombinator.com/item?id=13264952 https://news.ycombinator.com/item?id=13264952
- brett40324 9y agoUpvote for live testing the trending parent topic at hand! That's cool!
- mundanevoice 9y agoThis is super neat. Would be awesome debugging with my teammate when I am working remotely.
- xrd 9y agoAnyone using this to edit Android source files? I need to look and see if Android Studio has anything similar.
- Dowwie 9y agoWhat software would you use to provide group voice chat for a screen share session? Discord?
- gh02t 9y agoI've used Riot (https://riot.im https://riot.im , built on Matrix) and it worked very well. Voice chat is still in beta but I haven't had any trouble with it.
- Dryken 9y agoI so want this for visual studio code now :) Really cool stuff !
- GilbertErik 9y agoYou mean something like this? https://code.visualstudio.com/blogs/2017/11/15/live-share https://code.visualstudio.com/blogs/2017/11/15/live-share
- jimnotgym 9y agoWere Microsoft and Github using some kind of collaboration tool? Calendar syncing perhaps?
- _pferreir_ 9y agoThis 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.
- eecks 9y agoHow does this work? Does the code that is typed go through a cloud service? I guess that would stop a lot of people using it in work.
- AbenezerMamo 9y agoAmazing! Love it :)
- fjabre 9y agoI 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. 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. 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.
- seveneightn9ne 9y agoBeing together in person doesn't solve the problem of wanting to edit the same code simultaneously. For some projects, git is enough, but for something really small this seems like it would really help.
- fjabre 9y agoI'm not saying it isn't a legitimate problem but I've never had it. For me, if we're not using git I could get the other dev's latest changes by simply doing a file copy of whatever I needed and then get it into my own environment. I work offline with most of my dev mates. We are rarely ever coding at the same time of day given time zone differences and sleeping patterns. If we're a small team we're probably quite aware of where the other one is in the code and what they're working on. I don't need real time for that. I think being able to see the other dev type in real time in the same file doesn't solve anything for me and may in fact be distracting and counter productive. I'm not sure 'real time' fits here.
- brandall10 9y ago"We are rarely ever coding at the same time of day given time zone differences and sleeping patterns." This is to aid pair programming. I work on a remote team as well, but there are times we pair when hashing out of a particular issue that either myself or one of my teammates is having. It's far quicker to do this than to work disconnected and go back and forth, esp. if it may impact the schedule/sprint. In the past I've worked with devs that had as much as a 10 hour time difference and we literally scheduled times where our schedules crossed so we could pair on a specific issue. One person drives at a time but it's common to switch back and forth so tools like this are helpful.
- twitchard 9y agoMy 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. https://www.nodeknockout.com/entries/35-nodeist-colony https://www.nodeknockout.com/entries/35-nodeist-colony 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.
- cbcoutinho 9y agoThe team behind this feature think that editor-agnosticism is also really important, that's why they split up this project into atom-teletype and teletype-core. AFAICT the 'core' library could be used to implement a package in any of the electron based editors.
- derefr 9y agoCould the protocol implemented by teletype-core be (easily) spoken by a non-electron editor, or is there an inherent impedance mismatch where e.g. the protocol structures its data in ways amenable to DOM manipulations of text but not to other text buffer formats?
- maxbrunsfeld 9y agoThe protocol isn't coupled to the DOM or Electron in any way. The one thing that makes it easier to implement in electron is that it uses the WebRTC standard for peer to peer connections.
- Karrot_Kream 9y agoWebRTC is a beast of a protocol to implement, and so far browsers have had the canonical implementation. There's a few C++ libraries out there, but even then it's a lacking ecosystem.
- Animats 9y agoIt'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. Doing this for text is trivial by comparison.
- freeall 9y agoYour comment led me to figuring out if Second Life is still really a thing. And I can't really figure it out. Apparently Linden Lab has over 200 employees so there must be some revenue on it. But is the user base growing, and how big is it?
- Animats 9y agoThe user base is flat, but the revenue keeps coming in. About 250 employees, down from a peak of 350, and about $66M in revenue. Linden Labs is developing something new, called "Sansar", for virtual reality users. It's closer to a video game than a simulated world; it's a platform for "experiences", which are essentially third party games. Whether that works out depends on whether VR gets any traction. Second Life also might get a boost when the new Amazon "Snow Crash" series airs. Second Life is the closest thing to the "metaverse" of Snow Crash. Second Life is interesting because it is an Internet system that isn't the World Wide Web. It's not HTTP based. It doesn't use HTML or Javascript. It's a huge system of its own. It has a social network, with members, groups, and text and voice chat. Strangely, about 40% of avatars never move; they just use the chat functions. There's a whole world in there that is totally independent of Google and Facebook.
- deleted 9y ago[deleted]
- kakuri 9y agoFor VS Code there's sockscode, it's a little bare, but works well! https://marketplace.visualstudio.com/items?itemName=shyykoserhiy.sockscode-vscode https://marketplace.visualstudio.com/items?itemName=shyykose...
- tomaskafka 9y agoThe 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! (Why? How many of you have edited some config/sql query/... in past week?)
- idontknowman 9y agoThis looks like a cool feature to use to teach.
- minicoolva 9y agoI'm using vs code now
- obilgic 9y agoCan Atom be the twitch for coding with view only teletype?
- zhughes3 9y agoWhat would a git commit look like when two distinct programmers have inputted characters into the file?
- brianmario 9y agoOne common way to attribute multiple authors in a commit is to add a `Co-authored-by` commit message trailer. You can read more about git commit trailers at https://git-scm.com/docs/git-interpret-trailers https://git-scm.com/docs/git-interpret-trailers. As an example, if this was a commit message, the trailer adding my attribution would be like this: `Co-authored-by: FirstName LastName <myemail@domain.com>`
- jnordwick 9y ago[A] [T]on [O]f [M]emory
- sha256link 9y agoI think blockchain will help us with this. You could substantiate who wrote what in an immutable chain. A non-editable git blame!
- cirowrc 9y agoThat's pretty nice, kudos! By the way, I'm impressed no one mentioned tmux' remote session in this thread.
- ospider 9y agoyeah, tmux and vim could do the same thing.
- learningcn 9y agoI 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: https://github.com/learning/SublimeTogether https://github.com/learning/SublimeTogether And a screencast: https://vimeo.com/96316581 https://vimeo.com/96316581
- halfnibble 9y agoI'd pay for that if you ever make it.
- shmerl 9y agoWhy is Atom still missing in Debian?
- stephenr 9y agoEvery time I see one of these "code together in real time" announcements I remember SubEthaEdit, which did this flawlessly 14 years ago, and 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. https://subethaedit.net https://subethaedit.net
- hbbio 9y agoOh yes, I remember we were using this among attendees at WWDC to write full notes of the talks! We didn't know each other but spread the connection parameters between neighbors.
- KirinDave 9y agoDidn't subethaedit use operational transforms that were very easy to desync? I remember giving up on the program because if there was any instability in the network at all it desynched in surprising ways.
- spronkey 9y agoToo bad it had a terrible name...
- sedatk 9y agoWhy do you think it’s bad?
- faaq 9y agoAmazing!
- tbodt 9y agoI just want this in vim.
- d--b 9y agoAm I really the only one on this forum to think that live shared coding is a terrible idea? 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? And the cost of this is the total unability to debug... I don't get it...
- djsumdog 9y agoI've only done direct pairing twice. It can help come up with a game plan and get new people in the company up to speed, but it is terribly terrible stressful. I don't like it. I think small services, incremental changes, strong tests and solid code reviews all work much better. Especially the tests and code reviews. At my last shop the company had an internal Gitlab and we used the Gitlab CI. Reviews + CI really helped keep the coding standards pretty high and helped younger devs not make beginner Scala mistakes coming from a Java background.
- drvdevd 9y agoIMO coding out of sync is one of the main useful functions of all modern DVCS systems. Coding together can be useful or fun, I'm sure, but I've noticed that other people don't enjoy my coding style very much in a group setting. I like to just sit there and read through the code for a long time to figure out how it works, maybe throw in a print statement here or there, and reason out loud about it (or mumble about it myself). Most people like to step through interactively and debug together, and in a group setting this can become a real conflict in my experience.
- ncfausti 9y agoIf you haven't seen Colaboratory from Google check it out. This, but for jupyter notebooks. https://research.google.com/colaboratory/faq.html https://research.google.com/colaboratory/faq.html
- habi 9y agoYet I'm still not able to save a file when it's on a network drive: https://github.com/atom/atom/issues/11911 https://github.com/atom/atom/issues/11911
- kleiba 9y ago"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... 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.
- jhoechtl 9y agoWayland destroyed that 20+ year old X feature though
- Layuso 9y agocode in real time with atom?
- juretriglav 9y agoSo glad to see that they've implemented this algorithm in JS! https://github.com/atom/teletype-crdt https://github.com/atom/teletype-crdt 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: http://www.sciencedirect.com/science/article/pii/S1474034616301811 http://www.sciencedirect.com/science/article/pii/S1474034616...): https://github.com/jure/rgass https://github.com/jure/rgass Weihai Yu's implementation does account for it, however: https://dl.acm.org/citation.cfm?doid=2660398.2660401 https://dl.acm.org/citation.cfm?doid=2660398.2660401 , but his implementation is in Lisp, and I've never had the stamina to work through it for that one edge case. Kudos to the team at GitHub, I'll be studying this implementation closely.
- AriaMinaei 9y agoI found this blog post on this subject very approachable: http://digitalfreepen.com/2017/10/06/simple-real-time-collaborative-text-editor.html http://digitalfreepen.com/2017/10/06/simple-real-time-collab...
- juretriglav 9y agoThat's a nice blogpost! It does describe char-based CRDTs nicely, but the RGASS/teletype-crdt algorithms are string-based, which brings a lot of headaches, as you can have insertions that split existing nodes, etc.
- AriaMinaei 9y agoWould love to learn how the two approaches differ from each other. The string-based one sounds more space efficient.
- tangus 9y agoDoes anybody know how does undo work with this feature?
- Tomis02 9y agoA 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.
- OOPMan 9y agoIntelliJ is pretty close to what you want...
- oldpond 9y agoGoogle brought out something similar in 2012 https://code.google.com/archive/p/collide/ https://code.google.com/archive/p/collide/
- nkkollaw 9y agoI can't make Atom work without freezing for myself, I can't imaging using it with more than one person at the same time.
- hrkucuk 9y agoWhat had to be done, is done. Thanks.
- dunham 9y agoBack 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.