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.
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.
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?
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, 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.)
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.
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
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.
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.
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! :)
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.
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, 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.
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.
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.
A surprisingly nice feature of using floobits has been in building our own website- we stream changes to staging in real time. Feedback is immediate and trivially sharable. We will add better integration later for running hooks based on file globing, etc. So, you could do things like automatically compile less or restart a service when a file is saved or changed, etc.
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
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.
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'
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
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.
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).
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.
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).
Thank you. I really enjoyed the concept and was playing around with Floobits last month, but found it quite testing at times using the vim integration.
My colleague was using the ST integration, and found that sometimes he would be locked out of a file completely after I'd done some visual block changes. I'll give it another whirl some time and provide proper feedback if it still exists.
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.
People will show how focused they are, or frustrated, with small facial expressions. They are unlikely to talk about these transient states. But, these states will tell you: this bit of code is ugly; I'm tired and need a break; Wow, that's great!