Aug 13

Social coding step one; Collaboration support in Bespin launched

Bespin, Tech with tags: 3 Comments »

Bob in Boston: “Hey Harris, can you help me on a bit of code?”
Harry in Hamstead: “Sure Bob, can you send me the file?”
Bob: “I have an account on Bespin so I checked the project out over there and shared it with you”
Harry: “Ah, OK. I will ‘follow’ you and look at the project. What file?”
Bob: “bob+FooProject/bar.js.”

… go on to collaborate on the file and check it back into VCS …

I am really excited that with the beta release of collaboration in Bespin we have enabled that use case.

We really want to enable people to code in a more social environment. As someone who has worked with remote teams for many years, the value of code review and pair programming has been very apparent. On day one we put very simple collaboration in Bespin that enabled a couple of things:

  • Autosave: Your data was always saved back to the cloud, including your undo/redo queue. This enabled you to go home, open up your browser, and be right where you were from the work machine
  • Shared hacking: developing on the same code at the same time (a la SubEthaEdit etc)

Making this puppy scale is tough, and Joe Walker has working on this for awhile using Neil Fraser’s mobwrite system. What is interesting about mobwrite is the diff/patch mechanism that allows you to do fuzzy matching. This means that losing some packets here and there doesn’t matter as much and you catch up quicker. We still have a lot of work to do there, including the ability to create the diff’s manually (e.g. since we know your actions we can build the diff directly instead of doing a diff on a file) which will speed things up for large files.

What do we have right now? Check out the release:

Using Collaboration

As part of collaboration we need to notion of connections between people and access control. A few new commands give you access to this information:

  • follow/unfollow: allow you to decide whose shared projects you want to see in your project navigator. As we evolve Bespin this will become a way to get all sorts of information about the people you are working with
  • group: allows you to put the people you are interested in into groups to make it easy to manage sharing
  • share: allows you to export your projects read-only or editable to individuals, groups, or to everyone

To get started quickly, you can jump in to a public shared project that Joe has setup. Once logged in to Bespin follow the steps:

  • Press CTRL+J/CMD+J to open the command line.
  • Type follow joewalker to get someone to share files with. I’ve shared a project called pubproj globally.
  • Type project list. You should see joewalker+pubproj in your list of projects.
  • Type set collaborate on to turn on shared editing.
  • Open a shared file by typing open /joewalker+pubproj/example.txt.

Your command line should look something like this:

We have a collaboration sidebar that you can access from the top right icon (which turns blue if you have collaboration on, and yellow if you are actively collaborating on a file with someone).

If you want to see this in more detail, watch the screencast:

This is a beta release, and is just the beginning of the social roadmap. Once we have this core we can then strap on a bunch of helpful UI (painful that we don’t show where other collaborators are, and what each person has been doing) as well as killer features that excite us such as a full social bar with chat that ties to files and a “time machine” ability:

There is more in the 0.4 release too. One interesting experiment has been adding UI to the command line. You will notice that if you type vcs clone the command line will add an inline form for you to give it more information. This is a crude beginning, but an exciting one.