The IDE must move onto the server
emilian-bold.blogspot.com
emilian-bold.blogspot.com
This is taking on an immense amount of pain for what sounds like gain that can be had for far cheaper in every conceivable way with a much simpler and less boil-the-ocean approach. Whatever benefit you think this is going to bring when it's done, why not prototype that now?
The biggest benefit is removing the need for a configured, physically accesible, machine in order to do your work.
Imagine visiting the parents for a weekend and being able to fix a small but urgent bug and do a commit using either something you have with you (like your webkit-based device) or what they have there (low-powered machine). Using a browser seems the most natural.
Also, how many developers are you thinking will be sharing the server using a Web IDE? For any compiled language I see compilation steps as big CPU hogs, severely limiting shared usage. Even with interpreted languages I suspect there would be CPU-sharing problems. Again, remote desktop seems a better solution.
Honestly I've yet to come across such a problem. And any such benefits my company's internal web-based IDE might provide are entirely outweighed by the loss in productivity that comes from no longer having access to diff and patch and Unix pipes and vim and Git and all the other tools I've become entirely accustomed to on the Unix command line. Honestly, a MindTerm applet and a Unix shell account on a remote server would be a more functional "web-based IDE" than any I've seen, and certainly more functional than the one I'm leaving.
Obviously given enough time all of those tools could be replicated in a web-based environment, but why even bother? What's the killer app here?
> The IDE must be accessed via a standard browser and > should be installable (ie. your own startup should be > able put it on a dedicated server).
SSH is available on every reasonable development machine, I can SSH to some server and access Emacs, either via X forwarding or over the terminal, or I could use Tramp mode.
The other points could be done with a client-side application which talks to some server. Why put the whole experience in a browser?
edit: grammatical error
I'm basically hoping that an open-source cloud-based IDE will bring more to the table that just ssh x forwarding. What I've learned from a continuous integration server is that automation is important, but the test/build results are mostly separated from your IDE project -- integrating the two seems valuable.
Also, workspace configuration is a pain just as it is migrating to another machine. I'd rather just work as close to the (versioned) source code tree as possible.
It seems to me that having an offline IDE is odd when we are always connected, everything we produce goes back online (commit, emails) and we produce it usually by inspecting online resources (bugtracker, emails, google).
The first time took a lot due to the cold boot, you might notice the next files open quite fast.
also, isn't that just that much more surface area for hacker(crackers whatever) to attack?
Regarding hackers, I guess the risk is about as much as having production servers online or using EC2 and github.
I won't even begin to enumerate the problems with that philosophy (developers editing code that was live and used the production DB - this was the biggest uh-oh) and other glaring issues of not trusting your programmers.
I promptly explained their silliness and walked out the door.
The most important feature of working-on-your-desktop, however, is to have mobility and isolation. I never let anyone edit code through SSH on the live server. If something is brokedd, even if it is something big, it can wait an hour to be fixed, peer tested, unit tested and pushed to the server. Plus WHY IN THE WORLD would you have your VCS history on the production machine!?!?! I don't get that about some of these cloud services that have you clone your source repository!
Laptop + Emacs + local db + Mercurial + rsync + Fabric is flexible and expressive in a way that anyone arguing for on-server only editing can't argue against.
I make a edit, hit refresh on the browser and verify it works as I expect it to then I simply type in "fabric deploy" and it asks me if I'm pushing to the staging server or to the production server. If I tell it I'm pushing to the production server it runs all of the unit tests for the project to make sure my edits didn't go f'up something else in the application I wasn't thinking about at the time. If the tests ALL pass it then rsyncs the files up with the server (using checksum not timestamp comparisons). If the tests fail, nothing happens.
[EDIT] Obviously I make batch edits - running unit tests for the whole project more than once a day would be ridiculous. But you get the idea.
It's the best process I've come up with so far and I've tried a lot of stuff. I've seen many horrors related to on-server editing.
Code on YOUR machine. Period.
Of course an online IDE doesn't mean editing code on the production server! You would still need to run a deploy towards the test/live server, run tests, etc.
It's not about throwing away the best practices or existing methodology, just about bringing the IDE more up to date with the online centric nature of coding.
However, as solid a start as it is ... it isn't anywhere close to being acceptable. No advanced editing features such a multiple line indenting, duplication, moving, etc. No code completion. No integrated manuals for languages. Limited shortcuts (since the most basic are mapped to the browser). I can go on, but you get the idea. We're still quite a few years off. All of it is possible, the tech is here, it would just take a massive undertaking ... and most of the resources are being poured into traditional IDEs.
This is a big problem. As a mostly Java developer, the way I see it, none of the major three Java IDEs (Eclipse, NetBeans and IDEA) seem to move this way. Eclipse has announced Orion (http://mmilinkov.wordpress.com/2011/01/11/introducing-orion/ ) but that's very incipient and I don't think they are putting a lot of weight behind it.
Cloud9 seem to 'get' the idea and I do hope they shake things up a bit but although they release the code, I think they are basically a for-profit entity, so I would feel much more confortable if some open-source community/foundation would start building something like this.
In all seriousness, though, people have mentioned this before but I don't think anyone's really tackled any underpinning reason why an IDE should be in "the cloud" (::cringe:: yea, I went there).
If I think about it in terms of features such a setup could provide - cohesiveness btwn. client & serverside testing, development statistics in real-time, and highly integrated documentation & comm. - then perhaps it's kind of sexy. Seamless/buil-in pair-programming would seal the deal. It would be pretty awesome if it looked like Code Bubbles though...haha (http://www.youtube.com/watch?v=PsPX0nElJ0k)