Shared publicly  - 
 
Many of you may already know that July 9th is my last day at Google. After nearly 7 years, Google decided to shut down its Atlanta engineering efforts. I start my next job on July 16th (but was asked not to say who I'll be working for until then).

For the techie people: my last year at Google, many of us in Atlanta worked on a project that was ultimately cancelled, concurrent with the office shutdown. However, on this 4th of July, I'm happy to say that one of the things I'll be celebrating is that we were able to liberate portions of our last year of work as a new open source project. 

It's called "Collide" (collaborative IDE), and is a web-based collaborative code editor. What we pushed out is extremely stripped down right now, but the most interesting tech stuff around collaborative editing is all there. Long term, we hope it will serve as a catalyst for improving the state of web-based IDEs.

http://code.google.com/p/collide/
313
172
Rick Measham's profile photoThaddee Tyl's profile photoTim Waters's profile photoBenjamin Mestrallet's profile photo
30 comments
 
Glad you have a new job. Wish you all the luck there.

(I'll look at Collide later ;-) )
 
You know what I think that might be triggered right now by Ctrl+Shift+Space.  I'll file a bug.
 
+James Nelson It doesn't really use any parts of Wave's collab stack. We implemented our own variant on OT that optimizes for viewport rendered editing of code (versus structured XML like wave did). So it is more performant for our use cases. You can open pretty massive documents and collaborate without any perf issues. We only really use the Keyboard signal event stuff from Wave since it is a pretty great library :).

Lexical completions currently only sorta work for JavaScript now.

HTML and CSS have more aggressive custom auto-completers which work really well out of the box. And as soon as I make our chrome debugging stuff work, you will get things like automatic CSS reloading in your running web page as you type.

I plan on (as a hobbie effort) trying to make lexical completions work for all languages that collide has syntax highlighting support for, in a way that works about as well as sublime's completions do. But that is going to be a weekend effort :).

The real rocket sauce will have to be when we connect our affordances for sending real code connection graphs to the client. That is, beefy server-side analysis generating data structures that the client can use for proper completions, error reporting, and go-to-definition and what not.

But note that collide is a hobby project for us at this point. So when we get around to these issues is uncertain.

Like +Scott Blum said, the parts we opened up are kinda rough at the moment. It is kinda like the wave open sourcing in that it is more of a tech/reference implementation. Not a proper product or service. Wave was a pretty massive project with lots of infrastructure. What they open sourced was a reference shell client (not the full client), an example server, and some libraries.

+Jason Parekh
 
Yup, pretty much what Jaime said.

Most of the collab code was rewritten, but we still use a couple of modified Wave classes for managing the outstanding document operations (GenericOperationalChannel and the queue).

The actual operational transform classes were rewritten at some point to work off a much simpler document type than Wave's and to support viewports (so the client only has to know line numbers instead of the number of characters in all of the lines.)
 
+James Nelson Awesome, definitely keep us in the loop of when/how you use Collide and/or its code -- it'll be interesting to see what bits get snatched into other projects.  Thanks for the kind words too!

Re: shortcuts and new editor actions, take a look at DefaultScheme (client/editor/input/DefaultScheme.java).  It'll serve as a good entry point to understanding the keyboard shortcut system and how to add functionality to the editor.  If you're a vim user, you can look into reviving VimScheme (DefaultScheme:387).  (Warning: it's been a while since +Ian Wetherbee has worked on it, so it may have bitrotted)

Re: useful Wave/collab bits, check out client/collaboration and our simplified Document in shared/document.

Enjoy!
 
Wohoo! Very excited to see this get released, I'll take a look and contribute where I can to any editor bug reports :)
 
Hey - cool. Demo page / running instance anywhere?
 
+Benjamin Mestrallet What you guys have been up to hasn't escaped our notice. :) I'm a huge Java fan, and it would be awesome if you guys were able to leverage what we've done!
 
Indeed!  The collab/OT and editor are the things I'm most excited to see released.  +Jason Parekh did a lot of the heavy lifting on both of those.
 
+Thaddee Tyl We actually want to help projects like Cloud9 expand their feature set. Part of the Collide open sourcing includes Chrome extension code for interacting with the Chrome debugger protocol.

Once I have some free time I plan on re-enabling the debugger which includes affordances for live CSS updating as you type. Cloud9 could add client side debugging and similar functionality leveraging our chrome extension (or pulling pieces from it).

We want the Collide opensourcing to basically be reference implementations of cool technologies and features we want to see in actual web-IDE services. Collide is not a service we plan on hosting. Just a means for those of us who still have interest in the space to be able to move the status quo forward in our spare time :).
 
It is sad to see an internal project die, but gifting it to the OS community is somewhat a best-of-the-bad outcome. 
 
Sorry to see you and Google parting ways, but it was great working together last summer, I wish you luck!
 
Most amazing thing in this is that nobody has ever created a COLLaborative IDE called "COLLIDE" before.
 
Are you allowed to tell us where you work at after you leave Google? Yeah, I'm nosy that way ;)
 
+Scott Blum I somehow missed the fact ATL engineering was shutting down. If any of your co-workers are still looking, we need a Python dev at ShootQ/Pictage.
 
What ever happened to "Brightly", another Web-based IDE Google is said to have in development?
 
Wishing you all the best buddy :) 
 
Saw this via a Wired article, looks very cool!  I remember awhile back some article about Google dogfooding their Chromebooks internally, even with engineers.  Which made me wonder how or what kind of development they were able to do within a web based environment.  Mainly I wondered what sort of IDE they might be using...was Collide any part of that?
 
Apologies, but I'm not really able to talk too much about the history of Collide within Google.
 
That's ok +Scott Blum we all understand. Whatever happens inside previous employer stays there and it's a good karma.
 
An open source cloud IDE used to develop an open-source cloud IDE - a new fractal developing... just amazing.
Add a comment...