Friday, August 14th, 2009

Social coding step one; Collaboration support in Bespin launched

Category: Bespin

This content re-posted from my personal blog. You can choose to follow the Bespin team on Twitter: @dalmaer (Dion Almaer, early look at Ajaxian posts), @bgalbs (Ben Galbraith), @dangoor (Kevin Dangoor), @joewalker (Joe Walker) and @bespin itself.

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.

Posted by Dion Almaer at 9:34 am

4 rating from 35 votes


Comments feed TrackBack URI

This product is very cool but I would love to see some form of desktop integration using Air or similar. It would be really amazing to have a IDE running in your browser or on the client to handle basically all kinds of project client side/server side also if it was tied to an SVN repository or other versioning systems it would be very easy to just start using simply point it to the repos and hack away. :) Keep up the good work.

Comment by Spocke — August 14, 2009

What would be the benefit of having it in Air or similar?

Comment by Jaaap — August 14, 2009

You can read/write local files not it can only be used for simple css/html/js projects since everything is executed in the browser. If you had Air or the Mozilla runtime (can’t remember it’s name) you could load/list/save local files and there for use it for PHP, Java, .NET etc. It could still store a copy of the files online for collaboration but a local copy would make it possible to execute it on a local web server Don’t know if this is out of focus for the project, but I would love to see a IDE with easy extensibility using JS it would add all kinds of cool commands then that I’m currently lacking in traditional desktop IDE:s.

Comment by Spocke — August 14, 2009

Bespin reminds me of Java applets. Dunno why.

Comment by Darkimmortal — August 14, 2009

The screencast is almost unlistenable. The lip smacking, apparent liquid drinking, and MP3 artifacts are really distracting. In fact, I stopped watching to scroll down and leave this comment. Please sit back from the microphone and encode at a higher bit-rate.

Comment by lexander — August 14, 2009

Ugh yeah, the smacking of the lips was gross. I couldn’t go on for more than about 10 seconds.

Comment by Skudbox — August 16, 2009

the UI would be much more usable if there was some coloured visual feedback when the remote user updates the code, on the watching users screen. The text could turns red(or any color) and then slowly fades back to white otherwise you get a bit lost trying to guess where the last change took place.

Comment by simon000666 — August 17, 2009

Bespin reminds me really on G Weave

Comment by CarstepHUN — August 17, 2009

I find Bespin both very cool and and very strange… because I’m not sure how I would use it.

On one hand I definitely like the idea of being able to take my projects anywhere, since the files are in the cloud. On the other hand, I usually try not to take my work home with me. I’m not sure if I’ll ever be doing that – as much as I love my work, I’ve got enough personal projects to keep me busy when I’m at home. I guess for people who travel a lot as part of their work, or maybe manage to make their work part of their personal projects, or vice versa, it’s more beneficial.

And call me old fashion but I don’t want anyone messing with my code as long as I’m working on it, certainly not _while_ I’m working on it. :)
I have actually found myself in a few situations like that at work (somebody collaborating on code with me), but the fact that it’s not dead-easy makes it a rear occurrence and I think I prefer it to stay like that.

Having said all that I think this is a great project.

Comment by iliad — August 17, 2009

I apologize for a couple of funny typos – I guess Firefox’s spell-check didn’t catch “rear” occurrence :D (obviously it should be “rare”)

Comment by iliad — August 17, 2009

Unclear how *real-time* collaboration on code is particularly useful. There are some rare situations where I might be banging out some ideas on class with some distant friend, but for the most part, what I need is GIT, to manage conflicts. Introducing the distraction of new byte flashes seems counter-productive. It is also decreasing the focus of the programmer when every change he sees must be checked against what he is doing — what are the implications of that change HaxoRR just made, on my code. Did he just make dependencyList an object?

The transition to collaborative document editing to collaborative code editing is perhaps not so simple, and may need a new kind of interface.

Comment by nataxia — August 17, 2009

Seems like on roids.
I wonder why they went with the command-line interface instead of point and click — can you bring up the input box via a key combo or something?

Comment by emehrkay — August 17, 2009

I was interested in this, but it seems down all the time…

Comment by ProggerPete — August 18, 2009

Leave a comment

You must be logged in to post a comment.