

Introducing runroot: live programming languages in your browser - seiji
http://blag.genges.com/runroot/runroot,_world_--_world,_runroot

======
stevejohnson
A while ago, someone tried to pitch to me the idea of an in-browser
collaborative IDE which you could use to build web apps without ever leaving
the browser or even setting up...well, anything, really. I didn't think it
would work due to security implications, but it looks like you have solved
that problem. You have what amount to project-specific VMs which can
presumably run web servers. You have a secure collaboration setup.

Imagine a group of people who want to implement a web app. All they have to do
is buy a private server from you, which already has software to allow them to
write and serve code. If you nail the IDE, then the web app development
process becomes much, much closer to the "normal" method of write/compile/run.
In your case, it's write/save/refresh other page.

I realize that you are focusing purely on the REPL right now, but you got me
thinking about it and I wanted to share. If you turned these babies into web
servers too, it would be pretty awesome. You'd probably have to move to
"cloud" hosting, though.

Anyway, great app. I'll probably be using it. But I resent your categorization
of Python and Ruby, and agree with gcampbell's UI gripe.

~~~
seiji
There's a lot of potential. AppJet originally tried to be an in browser
platform, but it didn't really take off. They ended up improving their code
editor and making EtherPad. We all know how that ended up (i.e. free etherpad
for everybody).

It'll be interesting to tie in the guts of EtherPad[1] and/or Bespin[2] to
runroot.

As far as "cloud hosting" goes, everything currently runs on EC2.

Resenting my categorization is perfectly acceptable. Hate me or love me, just
don't forget me.

[1]: <http://bitbucket.org/mattsta/etherpad-postgres/>

[2]: <https://bespin.mozilla.com/>

------
rglullis
With apologies to Edmund Burke: Those who ignore GNU tools are bound to
reimplement them as a webapp.

Assuming that the author had "pedagogical use cases" in mind, I'll have to
ask: why not just a plain server with ssh access and screen w/ multiuser
support installed? It's really hard to believe that it would take anyone more
than 10 minutes to learn how to use screen to the point they can share a
session remotely.

~~~
mhansen
10 minutes? Really? I've found screen to have a huge learning curve. From
inside screen, I have to keep looking up what the hotkeys are, and I can never
remember the exact Control-A hotkey I'm after to operate it. Imagine teaching
an entire class how to use screen, before you can even begin to touch on your
real lesson material!

If anyone else is struggling with screen, I recommend launchpad.net/byobu, for
a more humane/learnable/menu-based multiplexing program

~~~
rglullis
I'm not saying you can be proficient with screen in 10 minutes. Far from it.
What I _did_ say is that, if I were somebody who wanted to teach and share a
session with someone, I would put a page with the following instructions to
Joe:

    
    
      1) open a terminal
      2) ssh joe.student@teacherserver.net
      2.a) your password is "PASSWORD_FOR_JOE"
      3) screen -x joe.session
    

What else does _the student_ need to do, besides having a ssh client?

------
tectonic
We can try a shared Ruby session:
<http://transmuscle.runroot.com/?384e8aabedad3890>

Edit: a new one <http://transmuscle.runroot.com/?123d0b7cf0728555>

~~~
colbyolson
I think we broke that session. Can't escape out of whatever it's in.

edit: At least I got off an error message for others coming late to the party
session before it stopped responding.

[http://img.skitch.com/20100105-mgdxdtt5nqpef6qpba9s9rnkbi.jp...](http://img.skitch.com/20100105-mgdxdtt5nqpef6qpba9s9rnkbi.jpg)

------
colbyolson
This is awesome, there went my workday.

------
tectonic
Suggestions: there should be a way to color input / output by user. There
should also be a way to send Control-C and Control-X. There should be a way to
see who is in the REPL.

------
seiji
runroot is a project I've been working on in my spare time for the past year.
You provision a server to hold interactive instances. Each instance has a web
REPL and full ssh access.

I think it has some great pedagogical use cases. Teaching a distributed
revision control class? Everybody can have their own private server and
practice pushing/pulling over the network. Teaching a programming topic? The
instructor can jump into any student's REPL to help out.

~~~
gcampbell
UI suggestion: for REPLs, make it clearer where the user is supposed to type.
I spent some time trying to enter code after the prompts in the Erlang and
Ruby REPLs before I figured out that the lower box was the input box. The
upper box allows text input, but doesn't submit anything on hitting enter.
Maybe make it a non-editable div rather than a textarea?

Otherwise, very cool.

~~~
seiji
Thanks for the feedback. I'll look at adding something to signify what goes
where.

There are two schools of thought with web REPLs. Either you do everything
inline like <http://lotrepls.appspot.com/> or you give people an individual
input box like <http://www.simplyscala.com/>

I'm mostly in the second camp with a big helping of "haven't thought too much
about it and just wanted to get the thing working."

~~~
bdonlan
There's also the option of having a proper terminal emulator in the browser
rather than just a REPL. Ajaxterm or anyterm, for example.

~~~
seiji
Way ahead of you there. Every instance has "web shell" link that's an active
Ajaxterm.

------
tectonic
Very nice.

