
Show HN: Floobits – Remote pair programming done right - ggreer
https://floobits.com/
======
ggreer
If anyone's curious, a long time ago I wrote about why I chose to make this:
[http://geoff.greer.fm/2012/10/19/cross-editor-real-time-
coll...](http://geoff.greer.fm/2012/10/19/cross-editor-real-time-
collaboration/)

I didn't realize it would be as hard as it's been. Operational transformation
is hard. Persistent network connections in editor plugins are hard. OT +
network connections in editor plugins is comically hard.

~~~
aslakhellesoy
Did you write your own OT server or did you use something else?

------
yesimahuman
Looks great, going to try it out. Some feedback: it seems I was able to do a
private session on the free plan, but the error message indicates I've used 1
out of 0 private sessions.

I think it's important to be able to trial the private session. As I am doing
work for my company, I don't want anyone else looking at the work, but I want
to try out the product on something real.

~~~
kansface
Right now we have soft limits- looks like it should stay that way.

~~~
mef
This needs to be communicated better. I signed up, created a session, but when
I tried to make the session private I got the message about being over the
limit and assumed that the attempt to make the session private failed and it
remained public, so I deleted it and that was the end of the tryout for me.

Also, I was alarmed that my session started off as publically listed and
viewable as it was created from a private codebase. Ideally it wouldn't ever
be public unless explicitly set to be.

~~~
kansface
We have now changed the default for new users of any sort to have 1 private
workspace for free. Thanks for your feedback.

We will also change new workspaces to be private if at all possible given the
user's limits.

~~~
mef
Thanks very much, will retry the service.

------
jalopy
Holy cow this is an awesome concept. Haven't tried it yet, but if it works
it's completely transformative. Can be used as a teaching tool for anything -
not just for pair programming.

Very, very cool! Thank you for charging money so you can build a real business
and keep improving on it.

Please, please work with the JetBrains folks to integrate w/their suite of
products? Please?!

------
danso
Very cool idea, trying it out right now. I have one caveat though...I get that
there's a distinction of "public" and "private", with the latter being
reserved for free accounts. But I don't know what "public" actually
means...I'm assuming that at minimum, it means that anyone who guesses a URL
of my workspace can join in on the fun. But how do other users discover new
workspaces? Is there an "Explore" endpoint similar to Github's, where people
can just see what others are doing in public?

~~~
ggreer
Your public workspaces are listed under your user profile
([https://floobits.com/u/ggreer/](https://floobits.com/u/ggreer/) for
example). So if someone knows your username, they can guess the URL and see
your public workspaces.

We haven't written any discovery stuff yet, but it'll happen eventually. I was
playing around a while back and wrote
[https://floobits.com/code_roulette](https://floobits.com/code_roulette), but
it isn't linked to anywhere on the site.

~~~
akkartik
Thanks, your comment helped me answer the question, "what does public mean?" I
don't see that answered anywhere on the site. I found myself wondering, "Does
that mean we can't choose who we collaborate with, chatroulette-style? Or are
the sessions recorded for viewing somehow? (That would be cool!) Or is just
the fact of the session published somewhere? (Insufficient differentiator to
get people to pay.)"

(Also, a copy-writing suggestion: on
[https://floobits.com/plans](https://floobits.com/plans), the words 'free
plan' link to the signup page. I clicked on the link looking for a blurb about
the free plan. Y'all should add such a blurb. Or link to the signup page from
the words 'sign up' instead.)

------
thom
So does this support emacs on one side, vim on the other? If so, thank you,
you're awesome.

~~~
kansface
It does.

------
sgrove
Been watching this for awhile, it's what we've wanted for years now (we
thought about building this as dev offering for Bushido's platform).

Finally giving it a go in emacs, I just get a _Floobits_ buffer that
continually spits out "floobits agent says: ... select(): No socket." non-
stop.

Edit: Trying it again a second time seems to have worked. Temporary bug, or
pebkac perhaps?

~~~
kansface
Could be a bug- the emacs support is rough around the edges.

~~~
sgrove
It seems like the core support is there, quite nice. It disables my ability to
select text though (via mark-set and moving the cursor). Love that other
people's selections are highlighted though!

Is there a github repo for the individual plugins so we can track
issues/possibly enhancements?

~~~
kansface
Yeah, check out [https://github.com/Floobits](https://github.com/Floobits)

------
plg
Why does it have to be organized around a centralized server requiring user
accounts? Why not make it peer to peer instead? Haven't we learned our lesson?

~~~
kansface
We'll have a behind the firewall installation option at some point. There are
a few reasons:

1\. The backend is non trivial and is getting more complex as we move forward.
It sucks to make users run their own service. Running a full blown server out
of a editor plugin also isn't feasible.

2\. As a user, I don't want to have to deal with firewalls. As a founder, I
don't want to have to deal with supporting users punching holes through their
firewalls.

3\. Peer to peer is very hard for this system; keep in mind, we get cascading
failures with increasing latency as patches fail to get merged and instead
cause conflicts. Conflicts make us drop patches, or try to do the equivalent
of a rebase.

4\. Accounts of some sort are required for access control.

5\. Finally, we are trying to make a sustainable business.

We understand your concerns- we've also been burned by services that shut
down: [https://floobits.com/pledge/](https://floobits.com/pledge/)

------
agentultra
Glad to see more people experimenting in this space!

Currently I'm using sqwiggle + screenhero and it'd be killer if they could
somehow have a baby together.

Screenhero allows me to share my emacs (or any window). Works like a charm.

------
gleb
Very neat. Quick patch to make (require 'floobits) work:

    
    
      diff --git a/floobits.el b/floobits.el
      index 5f05d33..029e6bd 100644
      --- a/floobits.el
      +++ b/floobits.el
      @@ -451,3 +451,5 @@ See floobits-share-dir to create one or visit floobits.com."
               (cons 'added added-text)
               (cons 'deleted deleted))))
               (floobits-send-to-agent req 'buffer_list_change)))))
      +
      +(provide 'floobits)

~~~
kansface
Thanks for the patch- I hadn't really considered someone requiring Floobits so
its not really built as a library.

~~~
gleb
That's how I normally load things from .emacs

~~~
kansface
We suck at elisp. Every once in a while, we'd like to be able to pay someone
to help us out for an hour or so in some very specific domain. Maybe one day
we'll implement that feature.

~~~
gleb
Which integration is most solid - Sublime Text?

~~~
ggreer
Yeah. Sublime Text is our best plugin. There are still some issues with it on
linux, but we use it every day.

~~~
zbruhnke
I find it interesting that when you wrote the blog post in October you were a
self-described love of textmate and in the past few months you've already made
the switch over to sublime. Seems like alot of people are going that way. I'm
afraid if I don't move I may be one of the last holdouts to leave textmate lol

------
lsiebert
I like that you have free organization plans, but I think you need some sort
of intermediate option for a classroom type environment and student groups.
The ability to a teacher or TA pair program, or set up students to work in
small groups on a semester long project would be awesome.

However A 12 week class with 30 students is 1.5k, if I am understanding how
your plans work correctly, and I don't see that happening. Given that it's
less likely to be always on programming when it's students and teachers, I
think a significant deduction would be reasonable.

Alternatively, you could spin off a classroom focused version.

Maybe something that will need to wait for when you are more profitable, but
if you get people used to your service as a student, they will carry it with
them.

~~~
disc
I think this use-case has a lot of potential.

As someone who's past tutorials, yet not quite confident enough to seek
employment with my hobby language, I'd love some small-group or individual
pairing experience (sort of like golf or skiing lessons, only for
programmers.) As long as the cost for facilitating this is reasonable, I
wouldn't have a problem paying for it.

------
garlandbinns
Congrats Geoff and Matt! Geoff, I randomly bumped into you on Freenode a
couple of months back and chatted w/ you briefly and you were telling me about
this. So happy for you all to see this on HN getting such great feedback. Nice
job working hard and making it happen! :)

------
MichaelGG
When joining the hn_feedback, the edit button seems to fail:

    
    
      discarding because event origin is 
      Object
     ?follow=1:62
      Connecting to https://floobits.com:8448/ ...   b8cb474e2761.js:427
      Joining workspace Floobits / hn_feedback   b8cb474e2761.js:445
      room_info 
      Object
       b8cb474e2761.js:4535
      Uncaught TypeError: Cannot read property 'path' of null   b8cb474e2761.js:205
      (anonymous function) b8cb474e2761.js:205
      x.event.dispatch jquery-2.0.3.min.js:3
      y.handle jquery-2.0.3.min.js:3
    

Chrome on Windows 7. Seems like none of the buttons (like delete) work,
either. I don't see any activity other than people in the chatroom. Just a
black center screen.

~~~
kansface
Yeah. That would be floobits dying under load. Basically, you can download the
static resources from our webserver because they are cached, but you can't
retrieve the meta data necessary to load the workspace from our api because
there are over a hundred people in the workspace copy pasting huge chunks of
text and deleting them as rapidly as possible.

We are scrambling to fix the problem right now.

------
jivid
This looks great, good job! A couple of things:

1\. I renamed the default FLOOBITS_README.md to teach.py, but the path at the
top of the page still showed the README filename. teach.py showed up in the
left nav, so I don't really know what was going on there.

2\. When I was loading one of the workspaces under
[https://floobits.com/u/ggreer](https://floobits.com/u/ggreer), clicking on
the files in the left nav took really long to load, about 8-10 seconds. I
almost thought that all the files were blank at first and were there just to
show the nested directory structure.

Apart from that, I think this is really cool! I'm definitely going to be using
it over the next few days.

~~~
ggreer
1\. Shows how often I look at the path at the top. Bug filed. Probably will be
fixed today.

2\. Yeah... it turns out that one EC2 medium instance isn't the best thing to
show HN with. I booted 4 servers to split out services, but I doubt we'll have
everything moved until tonight.

Thank you for your feedback and your patience.

------
jhartikainen
Looks interesting, but I get the feeling using something like ScreenHero would
work better. I've used ScreenHero for sort-of pair programming and it works
extremely well + it's not limited to editors.

~~~
kansface
ScreenHero is limiting in a few ways.

1\. Both users are confined to looking at the same thing. 2\. Only one user
can input at a time. 3\. One person may be stuck in an unfamiliar IDE. 4\.
Only 2? people can work on a thing.

We started to build Floobits after pair programming for 8 months or so because
nothing else worked. Floobits also has a web based editor and basic support
for terminal sharing. We also get to do really neat things because our
protocol understands changes in source code; for instance, Floobits is self
hosting and streams our changes to staging in hard real time. You can imagine
other integration around source control, continuous deployment/integration
too.

I think ScreenHero has its uses, but pair programming isn't its strongest.

------
cpolis
This is a fantastic idea and I'm really excited to start using this - I wanted
to develop this kind of program for a while.

This is my use case: I work with designers who are hesitant to use git and
make changes really quick and test them on a live WP or similar site. Often
times we have two or three people needing to edit a single css file and
everyone has to open/close the file often to not overwrite the changes of
others. Maybe there is a better workflow, but a collaborative editing tool
like this will go a long way in streamlining this process.

~~~
kaushikt
You are completely right about the designer bit. Sadly enough, some of my
colleagues are still very hooked up with SVN and are not really set on moving
on to Git.

In cases like these, i think this could actually help.

~~~
jrpt
You could teach them to how to use SmartGit or a git management application.
I'm technical and I still prefer SmartGit over the command line.

~~~
kaushikt
I have asked my colleagues to try out the git mac app by github. That really
helps.

I prefer CLI to be honest. I will check out SmartGit, never really heard about
it before. Thanks.

------
kansface
As an experiment, this room is publicly writable- let us know what you think.

edit: I'm taking down this link as we are completely crushed- I suppose
getting DOSed by our own users is the best way to go down.

~~~
wf
The room is empty for me? Am I missing something...?

~~~
kansface
Like I said, we are getting slammed. Over 500 people were in the room...
typing at the same time.

------
mustardhamsters
This still had a bunch of issues when I tried it: The user I connected with
saw many instances of my user because I was trying to connect with Sublime
Text, and couldn't give permission to all of them. The system didn't sync well
from ST to the browser, but it worked the other way around. At some point we
began typing over each other entirely. Screenshot here:
[http://grab.by/oAgS](http://grab.by/oAgS)

Really want to see this working well!

~~~
kansface
We are really struggling under the load right now. Also, i noticed that you
are using Vim? We have echo loop detection in Sublime, but haven't ported over
that logic yet.

------
cheesylard
So um..... call me ignorant, but how is this any different from:

person 1:

    
    
        screen -t "foo"
    

person 2:

    
    
        ssh person1@blahblah.com
        screen -x "foo"
    

??

~~~
kansface
As thejosh pointed out, not everyone uses the same editor. Futhermore, most
programmers (I estimate 90%) don't use terminal based editors. Some common
distributions of emacs/vim (MacVim) won't even run in a terminal for that
matter.

Forcing N users to share one screen and one editor sucks.

Finally, absolutely no one wants to deal with private keys and setting up
users/groups.

~~~
johncoltrane
For what it's worth, you can run MacVim in a terminal emulator with

    
    
        $ mvim -v filename

------
swalsh
I had this idea a while ago, Notch was having one of his programming live
streams. I thought, man what if instead of us just watching this guy write
code we could all be working on it at the same time.

I don't know how well it would work, but it would be cool to use a platform
like this to try it. Maybe some open source app. It would be like an Amish
barn raisin'

~~~
kansface
We do have a hidden code_roulette feature. We do a bad job of explaining
privacy or potentially the lack thereof to our users. Once we get that figured
out, we can add more social features.

As for the barn raising, its not too uncommon for ggreer or I to spot bugs in
other peoples code on Floobits. There is probably an entirely different
business somewhere in there.

~~~
jrpt
You guys should sponsor an event where some famous programmer leads a
programming session with an audience on your service.

~~~
jlturner
Yeah that would be awesome. Even like a hackathon or collaborative game jam
would be a lot of fun.

~~~
kansface
Yeah, this is in the works but we need to smooth out our multi user support
and clean up vim and emacs first.

------
efm
New ways to collaborate remotely and easily are valuable. Travel time is a
waste.

David Socha from the University of Washington is looking for teams to video
for his research into collaboration.

[http://davidsocha.wordpress.com/collaboration-in-the-
wild/](http://davidsocha.wordpress.com/collaboration-in-the-wild/)

~~~
kansface
Your post reminded me that alerts for uses when someone is working would be
valuable. ggreer and I should also really broadcast our g+ hangouts (we use
Floobits to write Floobits).

~~~
efm
I learn so much watching other people do things I want to do better. Floobits
can make this possible in a new way.

twitch.tv does a nice job of notifications, and in providing the opportunity
to observe how other people play.

(Instead of game channels; programming languages, problem spaces, ratings of
team members...)

------
daurnimator
Trying to install in sublime I see:

Package Control: Error downloading package. URL error unknown url type: https
downloading [http://github.com/Floobits/floobits-
sublime/archive/0.17.5.z...](http://github.com/Floobits/floobits-
sublime/archive/0.17.5.zip).

~~~
ggreer
Are you using Sublime Text 3 on linux? ST3 on linux ships with a broken SSL
module. We work around it for our own plugin, but I don't think Package
Control does.

If you're curious how the work-around code works, see
[https://github.com/Floobits/floobits-
sublime/blob/master/flo...](https://github.com/Floobits/floobits-
sublime/blob/master/floobits.py#L31)

The shared objects that code tries to load are all in
[https://github.com/Floobits/floobits-
sublime/tree/master/lib](https://github.com/Floobits/floobits-
sublime/tree/master/lib)

~~~
daurnimator
I tried both ST2 and 3 (on linux).

Could it be that my system default python is 3 (not 2)?

~~~
kansface
ST2 and ST3 ship their own python for linux I believe. Unfortunately, it has
been stripped of useful modules like ssl. We have attempted to add support
(see [https://github.com/Floobits/floobits-
sublime/tree/master/lib](https://github.com/Floobits/floobits-
sublime/tree/master/lib)) but this is something Sublime should do, not us.

------
geekbri
Gave this thing a whirl. The terminal sharing is nice, however the person I
paired with had a real hard time seeing any of the commands I was typing. The
PS1 modification flootty makes pushes almost everything right out of their
window and they claimed they were unable to scroll vertically

~~~
kansface
Thanks for the info. Were both of you using flootty? The web integration as
actually better, since we use a JS PTY which lets us control the output much
more easily than just shoving data into stdout.

------
meowface
This is surprisingly cool.

With some more polish, this could become a real wave-maker.

You could consider making it a bit more of a "freemium" model. Something like
allowing users to set up 1-2 private coding collaborations for free, but
without any version control, terminal-sharing, or the other bells and
whistles.

~~~
kansface
Agreed. New users should almost certainly get a free private repo or two.

------
ctb_mg
Can you comment on the technical details on how this works at the network
level? How secure is this?

~~~
kansface
We just compiled a FAQ and pushed it.
[https://floobits.com/help/faq/](https://floobits.com/help/faq/)

Sadly, we didn't use any anchors so you'll have to scroll to "How does
Floobits work under the hood?" If you have further questions, let me know.

------
StavrosK
Hey, this is pretty interesting. One feature request: Do you think you could
add Mozilla Persona for authentication? I don't like yet another u/p, and that
Github permissions screen left me a bit uneasy (although I didn't see anything
untoward).

~~~
kansface
We are just using Github for auth right now. One day it would be nice to be
able to suck in private repos. We could probably add support for Mozilla
Persona without much trouble. The real problem is presenting a sane UI.

~~~
StavrosK
I will not argue with that, for I see the truth of your words.

------
lince
Awesome tool.

I don't know why, but I was expecting a place to get in touch to other
programmers to do Pair Programming (i.e. for small katas or side projects).
Does it exists?

If it doesn't, does anyone wants to have a bit of fun doing Pair Programming
to create it together? :)

~~~
kansface
There are a few projects around the web, but Floobits doesn't do this right
now. We plan on implementing more social features once we've ironed out some
usability issues.

------
kapad
Getting an error Unable to create workspace: <urlopen error unknown url type:
https>

Have tried both the master branch and teh 0.17.5 tag. Same issue.

The package control install was not working so just copy pasted the directory
into sublime packages. Could this be the issue?

------
ThomPete
So this could potentially become a pair programming tool that would allow a
single person to oversee the work of several people too.

Could be good for remote education. In fact I would be willing to pay someone
to teach me objective-c this way.

------
t4nkd
Maybe I'd know the answer faster if I just tried, but, does this let people
pair from, lets say, SublimeText to Vim? From the screenshots it seems to be
one-way(sharing from a native editor to Floobits web editor).

~~~
kansface
Yes it does, although we're not happy with our current Vim support. We will
probably end up forking Vim.

------
aantix
Hopefully they will create a plugin for RubyMine. Not sure, but maybe if they
create a plugin for IntelliJ, they'd cover the entire family of Jetbrains
editors? (IntelliJ, Rubymine PyCharm, PhpStorm)?

~~~
kansface
IntelliJ will be the next editor we support, but we'll probably tidy up Vim
and Emacs first.

~~~
aantix
Will that plugin then by default cover their other editors as well?

~~~
kansface
I think so, but of course we won't know until we build it.

------
dannyolinsky
We're big floobits fans. Using it to pair remotely with Sublime.

------
stevenklein
We use Floobits a few times a week to pair and it's incredible.

------
kaushikt
Great job. I just signed up. I think you should have requested my email
address from github as well. So that, i would have my gravatar on Floobits.

I am not missing anything, am i ?

------
KurtMueller
Madeye.io is fun and allows "swarm programming".

------
tommoor
Really interesting idea guys, looking forward to giving it a try. If you're in
San Francisco i'd love to hook up and talk remote collaboration :-)

------
parennoob
I went to 'Sign in with Github', and got:

"Sorry, but an error made this operation impossible."

Is this feature not enabled here, or is the site slashdotted?

~~~
ggreer
It might be a bug in django-social-auth. I've had a couple of people complain
about it, but I can't reproduce it even if I create a new GitHub account. I've
found bugs in DSA before, such as [https://github.com/omab/django-social-
auth/pull/697](https://github.com/omab/django-social-auth/pull/697)

I'll have to look into it more. Sorry about that. :(

------
arikrak
Douglas Engelbart would be proud.

I wonder which will be more common in a few years - something like this, or
collaboration fully in the cloud, like c9.io.

~~~
kansface
I don't see cloud editors replacing native ones for quite some time. Maybe
WebVim and WebEmacs will supplant them one day, but programmers are married to
their text editors. We also like to work when we don't have Internet access.

In the mean time, I think we should use the best of both worlds.

------
oceanician
This looks really good. Just need another Ruby programmer to try it out with
now :) Anyone free a week today - next Friday, 26th July?

------
RobotCaleb
Any support for private networks or networks not on the internet? Not everyone
wants/can send their code through a third party.

~~~
kansface
Not yet, but its on our radar.

~~~
RobotCaleb
Cool, thanks. How can I sign up for notification of that feature being
implemented?

~~~
kansface
I imagine its at least a couple of months off- probably longer. Signing up for
an account with us is probably the best thing for now. We send out updates
from time to time.

------
nwenzel
Pretty sure this could be part of the answer to the pros/cons debate of
working remotely... productivity vs collaboration.

------
cmrx64
Been watching floobits since you announced it. Very excited to see it launch
with bunches of new features!

------
bagels
Why does the demo have ascii art penises? I think it detracts from the
otherwise quality presentation.

------
GrinningFool
Looks great - any plans to offer self-hosted for those who want behind-the-
firewall solutions?

~~~
kansface
Yes, but it will be a while.

~~~
GrinningFool
Excellent to hear, thanks.

------
contingencies
What's the point of video when programming? That's just a distraction.

~~~
kansface
Audio is crucially important. Video is nice when discussing code.

~~~
contingencies
Question = Why is it nice?

Response = "it's nice"

------
njoubert
From Sublime: Unable to create workspace, maximum recursion depth exceeded.

~~~
ggreer
Try it now. We just pushed a fix to package control.

------
JeroenRansijn
Nice release guys! Good to see you on the front page on HN. Keep going.

------
coldman333
hi all , i have some error in msgs.floobits.log , on Windows 7 / Sublime 3

"Error handling room_info event with data {... }: path is on mount 'd:', start
on mount 'c:' "

have fix this?

------
shaunol
This is quite awesome - Visual Studio support would rock!

~~~
kansface
I did some research into V++ and I believe it will be doable, but this is a
long ways off.

------
johnnyg
TextMate? Guess I'm going extinct. :-)

------
ggchappell
Figlet sighting. :-)

------
kansface
Floobits is down...

and back up.

