remote pair programming

What's your experience with pair programming?

  • pair programming: not yet

    Votes: 0 0.0%
  • pair programming: a few times

    Votes: 1 25.0%
  • pair programming: more than a little

    Votes: 2 50.0%
  • mob programming: not yet

    Votes: 1 25.0%
  • mob programming: a few times

    Votes: 1 25.0%
  • mob programming: more than a little

    Votes: 1 25.0%
  • it was horrible

    Votes: 1 25.0%
  • I love it and wish I could do everything this way

    Votes: 0 0.0%
  • I like it for certain kinds of things

    Votes: 3 75.0%
  • in-person

    Votes: 3 75.0%
  • remotely

    Votes: 2 50.0%
  • I have no idea what you're talking about. ? mobs? you mean mobile entities?

    Votes: 1 25.0%

  • Total voters
    4

keturn

New Member
@Skaldarnar rounded up a few of us this weekend to do some mob programming on #3958, fixing world configuration. You can check the #world-generation channel for some notes on how that went; I thought I'd make some other notes here about the remote-mob-development tooling itself.

None of us had done this recently, so we didn't have a known-working set of tools ready to go, and did the traditional videoconference thing of spending the first half on "can you read my screen?" type stuff. Things we learned from that:

➕ Discord does do screen sharing now.

Convenient, given most of the other project communication is there.

  • The maximum streaming resolution for discord's free tier is 720p, and the readability was pretty bad when streaming from a higher-resolution monitor with thin programmer fonts. At the "Nitro Classic" tier (which is less expensive than "Nitro"), I can stream at 1080p. So either:
    • have a Nitro Classic or Nitro account, or
    • have the workspace you're streaming set to 720p resolution so it doesn't have to downsample, or
    • know how to make the fonts bigger in your development environment. We had a few false starts with this because of all the different font settings. It's this one: Editor Font; others change the menus and stuff but not the code, or change the code only for that file which is terrible for switching between files.
  • You can't share your screen from using Discord's web interface, you need the desktop client.
    • the only one I had tried before was the snap distribution. It spams the heck out of your log files, so that one is no good.
    • I used the flatpak distribution this weekend, that seemed to work well.
      • (and no logspam. Is the lack of logspam because flatpak doesn't prevent it from reading my process list like snapd does? maybe. probably. it's watching.)
❔Other Options

VS Code has had great success with their Live Share feature. instead sharing a video of your screen, the sharing is built in to the IDE. You can all look at the same files and each participant has their own cursor they can use to highlight things or edit.

But none of us use VS Code, at least not for Terasology.

Collaborative Editing has been the most-requested feature in IntelliJ for a while now, and they've announced they're working on it this year, but we haven't seen a release of it yet. There are some other implementations we could check out:

  • Floobits has been around for a while now but somehow didn't catch on in the way that VS Code's Live Share did. I haven't tried it recently, could be worth another look.
  • CodeTogether usually only allows 1-on-1 sessions with free accounts, but has all features free during the pandemic.
  • Saros does this sort of thing using XMPP as a transport layer?
  • Maybe CodeStream isn't quite a live pair-programming thing. More like code reviews? Could be handy. Free for open source.
  • It's not a share tool in itself, but when I am screen sharing, I like Presentation Assistant. It shows which IDE actions you're using, useful for people thinking "how did you make it do that?"
  • I just found this page while looking through this stuff: https://www.remotemobprogramming.org/
 

keturn

New Member
I've just installed a couple of these things. The CodeStream one wants you to be part of a "team" right away, so I made a Terasology team.

I don't know if I like it yet. Just trying some things out. Let me know if that one is a thing you would also like to try out and I can add you to its team. I'll just need an email address to give it.
 

Skaldarnar

Development Lead
Contributor
Art
World
SpecOps
So, actually I do pair/mob programming regularly in a remote setup nowadays, but obviously not in the context of Terasology.

At work we use Microsoft Teams (previously used Slack), and our main IDE is VS Code. Live Share is pretty amazing for this, but I don't know how practical this would be for Terasology's Java development. The latest gitpod integrations basically spin up a VS Code in your browser so I guess all the web page development could make use of this.

However, with the Gradle import working now, maybe VS Code is an option now? :geek:
 
Top