Friday, March 2, 2012

Taking a Leap into Cloud9 IDE

After a lot of high profile coolness from the Cloud9 team, such as their work on Treehugger I thought it might be cool to check out the Cloud9 IDE. From what I understand it is an open source project with a paid version that offers additional features. Because it's written in node.js and JavaScript it's the first IDE I know of that really takes JavaScript seriously.

Some of things that I hoped to find in the IDE were:

JavaScript code completion

easy collaboration / code reviewing

instant previewing

use on any machine

git integration

built-in JSHint support via Treehugger

I went to the site c9.io and immediately signed in with my github account. It was smart enough to show me all of the projects I had on github.

Initially, I was hoping to use this for my day job at oDesk, but I quickly ran into a hurdle: all of our files our stored on servers behind a VPN. I reached out to some people from the Cloud9 team and found out that at the moment I'm not able to use this service to do work that's behind a private VPN. I think it's also the case that you cannot do work locally either.

It's a good thing I have all of those github projects. One that I'm particularly excited about working on is a Words with Friends inspired word game called Words vs. Zombies.

I opened up the project and it seemed to clone the existing repo into one of the Cloud9 servers somewhere. It gave me a sort of shell as well as the files in the repo. From there I could preview my files, edit them, get good code feedback and more.

Sharing

At this point I was pretty much blown away. I'd heard about the collaboration features, so my first instinct was to look for the "invite a friend" option. I couldn't find it anywhere! I just wanted to show my friends how cool the experience was and hopefully get them to help me finish this project. There was no easy way to do it.

Doing Work

Okay the code editor is pretty much amazing. It doesn't seem to have that good of code-completion, but it does try to be helpful, though it's not super smart about typing or anything like that. I've heard that Web Storm offers decent JS code completion, so maybe I can check that out in the future. Despite the imperfect completion the error checking stuff is amazing. It's completely configurable and basically gives you built-in JSHint while you're coding. It's incredible and the speed and ease of typing in this web IDE is fantastic. The syntax highlighting, customizable key-bindings, and other features really make this a great IDE.

Updating the Project

So after playing around with the current files, I decided I wanted to take my basic HTML/JavaScript project and turn it into a full-fledged Node.js project. First thing I tried to do was move my files around. I created some sub-directories and tried dragging some files into them. This didn't work. I tried moving them with the command line. That didn't work either. I tried in Safari and the dragging worked, but the files didn't appear to actually be moved. It was a mess. Giving up I thought I'd try and use express to create my files for me. I tried things like this:

I basically got no response from any command I tried to run other than the initial npm install. So, I gave up, went back to Coda made the changes and pushed them to github. I went back into my project and could not figure out how to pull the latest change. I tried re-loading the page, pressing the "refresh" button on the project, ran git pull, but nothing worked. git seemed mad because I had manually created files it wanted to create, but trying to remove files in the command line to prevent a conflict didn't actually seem to work.

Conclusion

I can't tell you how frustrating it was to not be able to do work in the IDE. The potential is great, the idea of it is amazing, but if I can't do work it's worthless to me. Despite that frustration I really see the benefit of the Cloud9 IDE and I can't wait until this thing is ready to use. I really think it will transform the way we do collaborative work. The server and preview features are amazing. I can run my app on their servers. That's huge. For a node.js app or even an html/javascript project there is no editor I've seen that can compete. They just need to work out a few bugs first.

Here's a more specific bug report I compiled if you're interested in what browser I was using when and what errors I received.

2 comments:

Hello Jamund,Thanks for trying out Cloud9. We're always interested in hearing what our users think of the product. Sounds like the issues you experienced boil down to:1. Tree problems2. Running express from the console3. Pulling from GithubAbout the tree problems, we are aware of them and the tree is undergoing a refactor. Drag-n-drop is problematic. It currently works for a single file, but there are problems when drag-n-dropping multiple files or folders. We are working as fast as possible to fix this.About running express, our console has limited functionality and, at the moment, it cannot run node scripts (you can list the supported commands by typing 'help' on the console). However, you can run express in cloud9 as a node app in the Run Panel http://support.cloud9ide.com/entries/20908531-run-express-in-cloud9-ideAbout pushing to Github, you should be able to do a git pull from the console. I'm not sure what went wrong in this case for you. If it is a recurring problem for you, you can always reach us at support@c9.io. We'll do our best to get you up-and-running.Kind regards and thanks for your interest in Cloud9.

I've experienced consistent connectivity problems connecting from C9 to my dedicated server (which may have been the trigger of the connectivity problems - admitedly).

But I can say in addition to being hopeful for the platform Daniela's demonstration of the kind of support C9 offers is absolutely standard. They have always been response, *helpful* and genuinely considerate of the detrimental nature of their platform being reliable for developers to seriously adopt it.

I'd encourage anyone reading this article to take, at least, a couple of days to use the platform, understand it's workflow and then make a decision.