Hacker News new | comments | show | ask | jobs | submit login
Ask HN: Solutions for collaborative code review, pair programming?
98 points by deepakkarki 13 days ago | hide | past | web | favorite | 43 comments
Hey HN, Me and a friend of mine want to do a series of screen casts of walking through and modifying open source code of popular libraries. The idea is to help people dig into OSS and to understand how the software they use work under the hood!

I plan to start with JavaScript based front-end libraries. So other than the editor and terminal, there is the browser as well that needs to be shared.

Any hints on what tools I can use to collaborate with my friend online? Final product is a open video playlist on YouTube. Ideally I'd like my friend to also modify the code when we're playing with it!

For collaborating on the code look at the Visual studio code feature called live share, which allows you to collaborate in real-time [1].

I've tried it and it worked well.

[1] https://code.visualstudio.com/blogs/2017/11/15/live-share

I've tried it. It's... promising but very strange. A session between two people in the same Australian town was bounced via a server in the US. We had screen sharing via Discord at the same time which was far more responsive (but 720p, ugh).

The current implementation uses temp files everywhere and an odd way of driving Visual Studio. I'm really keen to see where this goes in the future.

Atom has https://teletype.atom.io/ as well. I don't have any experience with either though.

supposedly tandem leverages teletype work for vim and sublime


I agree that Live Share sounds like the perfect solution. You can even share ports, so your friend can access your development server.

You had me at the shared debug session. I am amazed at how VSCode has evolved in such a short span of time. Technically it's not an IDE but it has most of the required features of the IDE.

The liveshare feature does require you to be signed in to Github or Microsoft. So the sharing might not work with other proprietary SC or even Bitbucket or Gitlab.

YMMV though. I tried it last month on a local network and the lag was quite unbearable with sessions often going out of sync.

That looks very cool.

With the "rendez-vous" URL being hosted by Microsoft (it looks that way in the video), does it mean your source code is sent to Microsoft, or does the server-side simply act as a relay to facilitate communication between 2 endpoints without needing to be exposed to the code?

It may be sent to microsoft if a direct connection cannot be established between the liveshare clients (due to firewall/nat issues). In that case microsoft's servers act as a relay for both clients and therefore your code would be sent to microsoft owned servers. This relay feature can be disabled. More information available here. https://docs.microsoft.com/en-us/visualstudio/liveshare/refe...

Indeed, according to the page you linked:

> Note that Live Share's cloud relay does not persist any traffic routed through it and does not "snoop" the traffic in any way.

So it sounds like it's your traditional NAT traversal with TURN/STUN, and their promise that they don't snoop if the end up relaying.

Very cool!

Where on that page does it say how to disable the relay feature?

I was going to suggest this as well. I've used it to explain some features to a friend while we were on Discord.

I'd it possible to share a browser window though? That's a key aspect for us!


Yes, see Dylan Van Bommel's comment on Fun Fun Function's collaborative stream: https://youtu.be/_OTUGVAEWCA

Hey there!

At Scribma, we're building a new tool for doing exactly this: sharing both code, terminal, and browser, and collaborating using 100 times less bandwidth than you would via traditional screen sharing tools.

Also, it's automatically recorded, so you don't have to worry about doing screen recording via e.g. QuickTime while coding (which at least makes my mac fan go nuts after a few minutes).

You can check out a video of it here: https://www.youtube.com/watch?v=Rsorl3-TjdY

We're on the lookout for more beta testers, so I'd love to set up a chat with you.


If so, let me know at per@scrimba.com

That looks very cool. The demo says it’s 2-way collaboration. How does that work with the terminal? Or rather how do you stop your colleague from going rogue at your command line before you can hit stop

If this is part of your threat model then you probably shouldn’t be collaborating with a shared terminal in the first place.

Thanks! We've actually disabled the ability for others to run commands in your terminal while in beta. We're going to enable it as an option, meaning you can grant specific people access to your terminal.

I'd love to give you a proper walk-through if the entire product if you're interested? :)

Our beta version can be accessed here is anybody is interested: https://scrimba.com:9000/

And here's the npm package you need to get started: https://www.npmjs.com/package/scrimba

Scrimba is amazing. I originally came across it on the Bulma docs. Kudos on a really impressive user experience.

Thanks! We've been working hard on getting that experience right :)

Probably not quite what you had in mind, but because I'm half way around the world from my teammates the most successful tools I've used are a console editor and tmux (potentially running on a VM if you don't trust your friend). For voice, mumble is my first choice because it is both low bandwidth and low latency. Tiger VNC works reasonably well to display a shared web browser. Nothing else I've tried has the fidelity and low latency to do serious pair programming for long periods of time when one person is really far away.

Having said that, almost anything works well if you are close to each other or if you are only going to pair for an hour or so. Even non-collaborative conference call-type tools work fine. One person does some work. Then they check in their code to a git repository. The other person merges the changes, shares the screen and picks up from there. It means about a 1 minute "keyboard handoff", but it's pretty reasonable.

For you, though, I think the main thing is trying to find a solution that allows you to capture video and audio from both parties easily. You don't want to be relying on two parties to record and then editing because it's pretty risky if something goes wrong. I would first look at mutli-gamer streaming setups and then start seeing how a collaborative session might be done.

If you're both using macOS, the Messages app's screen sharing [1] is seriously good.

[1]: https://support.apple.com/en-au/guide/messages/screen-sharin...

This is where Intellij IDEA (and other JetBrains' products) lack severely.

There is a 14 year old (!!) issue in their issue tracker https://youtrack.jetbrains.com/issue/IDEABKL-708 asking for such feature. Unfortunately they are so much better in other areas (code navigation/exploration, refactoring) that they don't have to even try :-//.

There is a commercial plugin https://floobits.com/, but it is - monthly subscription - buggy - transfers code to their servers so it is not really an option.

Sounds like a good idea for an OSS IntelliJ plugin actually.

While researching remote desktops this weekend I ran across this:


Looks pretty cool actually.

Thanks for sharing Slovette :) we're building USE Together on Windows and MacOS (Linux coming later) as a Screenhero replacement tool for remote pair programming and collaborative screen sharing.

When you share a screen or app with people via USE Together, you see each user's mouse cursor on your screen and they can interact with your apps in real time, feeling like you are at the same desk.

You can share any IDE with USE Together :)

I can recommend two free solutions that both work fine. For both you can share the controls, to basically hand-over the keyboard/mouse.

- zoom.com: You can share desktop or windows with groups or individuals. We use it at work, the user experience is really great. There is a record-feature (probably not available in the free version).

- slack.com: The popular chat provides a desktop (not windows) share feature. I am not aware tough if you can share a stream with a group of people.

Tuple[0] is a new entrant in this space, still in alpha currently. I've never seen or used the tool, only know of it via Ben Orenstein's Art of Product podcast[1].

[0] https://tuple.app

[1] http://artofproductpodcast.com/

Take a look at repl.it - I've been using it a lot after trying glitch and a bunch of others and it's really flexible and powerful. They released some more collaboration features very recently. It's a bit rough around the edges, but it's been working great for me so far.

One alternative is [Codesandbox.io][0] for collaborative editing. Your friend and you can then do a Hangouts Live session. Only one of you needs to share your screen (with the codesandbox tab open).

[0]: https://codesandbox.io

I'm not sure what other commenters are talking about, but the vast majority of open source is developed by programmers in isolation and the only collaborative tools used are some kind of VCS like git and some kind of "forge" like GitHub.

OP is looking for a tool to live-share their programming environment with a friend for demonstration (and recording) purposes.

Use the same vim or emacs with ssh and floobits or something. Stream windows with ultimate flexibility using OBS.

Edit: ngrok for exposing ports, OBS can stream and record simultaneously.

You can collaborate on code in the browser with Glitch (https://glitch.com)

tmate is pretty good as a way of sharing a tmux session over the internet (which precludes you do development in a terminal)[1]. We use it quite a bit in my team as a quick way to explain/debug a problem.

[1]: https://github.com/tmate-io/tmate

+1 for tmate. I use it constantly with friends in combination with Vim.

Vim, ssh, irc, mumble, and screen all the tools I need for collaborating on code with others.

Zoom lets you record and share screens. Not free, but works with most operating systems.

VScode livecode share works great.

If it can stay purely on codepen, that's a great alternative too

Such a video will be useful for newbies like me

vscode live share

atom teletype

Applications are open for YC Winter 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact