There's been a lot of talk at EclipseCon here about the "IDE in the Cloud". I missed it but apparently the Mozilla Bespin demo at the e4 talk was quite impressive. It is easy to set up, and it's pretty fast as a code editor. I guess that makes sense since browsers have been heavily optimized for fast display of textual and graphical content. So I have to admit, it's led me to reconsider this technology. Rational tried this many years ago, remember Catapulse?, to build hosted development environments. The idea, and the company, collapsed in the high-tech bust of 2001. Maybe they were just too early.
But as we start to rely on the cloud, what happens when the sky's are clear? I just heard Kevin McGuire say that, hey, my e-mail is on the server, why shouldn't my code be there too. I use Outlook and Thunderbird in a mode that downloads my e-mail to my machine so I can access it disconnected. I don't always have access to the cloud. Until the cloud is omni-present, through things like metropolitan wireless schemes, and cheep, $10/day at my hotel wasn't cheep, then I don't see it really taking off as the typical way you do software development.
I just worry that the whole "Cloud" paradigm is being pushed by the people that can profit most from it, not from an inherit need of potential users.
Our customers commonly ask for flexible projects and other competitive IDE features:
ReplyDeleteNumber of our customers that ask for an IDE in the Cloud: 0
"I just heard Kevin McGuire say that, hey, my e-mail is on the server, why shouldn't my code be there too."
ReplyDeleteWell, the code is on often on the server (e.g. CVS, SVN, etc.). However, as the DVCS debate shows, people want it on the client too. Which one is it then? ;)
"Well, the code is on often on the server (e.g. CVS, SVN, etc.)".
ReplyDeleteUh, no it's not. It's stored there in some database kind of thing. But when I work on it I check it out onto my local drive.
Even with IDE in the Cloud, you'd need to have a mode like that if you're to get any traction with the C/C++ community.
Doug,
ReplyDeleteFirst of all, with a non distributed VCS, not all information is stored locally. You have to go to the server for various bits of information. The Cloud approach would be similar to this I assume (but perhaps even less of it would be checked out initially).
Distributed VCSs, on the other hand, download as much as possible so that you can perform most operations locally (and usually faster). My point was simply that the idea that "code should be on the server" goes against what DVCSs are trying to accomplish.
Ismael
Thats not really true. With a DVCS (like git) there is no such thing like a "server" from the VCS point of view.
ReplyDeleteWhat happens is that all nodes have a full copy of everything that matters.
A git would work fine wih a "cloud IDE" concept, probably better than even subversion. Cloud programming though seems to only make sense for open-source projects.
OTOH, I 'd much more prefer CDT to have things like block-selection, alignment-preserving formatter, better understanding of the type of C used in kernel, better template support etc than have eclipse resources devoted to "cloud IDE" problems that can just as well if not better solved with other technologies (not that my opinion matters much though).
Pkt,
ReplyDeleteI think the problem with this discussion is that we're not using well-defined terms. What is a "Cloud IDE"?
The way things have been described, more would be done on the server.
With things like Git, more things are done on the client. This is a good thing as far as I'm concerned as it improves latency and I have plenty of local CPU capacity. However, I understand that this is not true for many situation.
I guess I am repeating myself (and fail to see what is unclear in what I said), so I will now stop. :)
Ismael
And yes, I know that there's no real "server" in DVCSs, but in this context, "server" just means where you pull from and "client" is the local machine.
ReplyDeleteIsmael
My view of a "cloud IDE" is like that: *Everything* is stored on the cloud. You never pull from the cloud. You just edit "in place".
ReplyDeleteI can easily imagine a project-specific "Cloud IDE" for a high-profile opensource project like Firefox or the Linux Kernel.
There is a central dvcs repo used for coordination purposes from which everyone pulls (the cloud or you when working offline).
I.e., the cloud is just another client as far as the project's main repo is concerned.
The benefits from a cloud IDE could be:
* Better integration with services like bugzilla (hyperlinking bugs <-> source).
* Collaborative filtering (programmers who edited foo also edited)
* "Weather service": which areas are changing fast, are most buggy etc.
* Building and indexing very fast and already set up for you.
* More extensive static analysis using statistical tricks
* Integration with web-based review.
* Fast, easy generation of statistics / reports.
* A big "dashboard" (what would you like to hack today) etc, etc.
Just my 0.02
I for one think that the Could (or Web) IDE would create a great opportunity in Embedded.
ReplyDeleteThere is a usually a big startup cost and risk associated with every new embedded probject. But what if chip vendors or a third party (like Wind River) offered a board lab plus a Web IDE service? Embedded application developers could spend their time creating unique features rather than spending their time solving the common problem of configuring hardware and its corresponding tools.
ClearCase dynamic view keeps code in the cloud, at least until you decide you want to change something.
ReplyDeleteThe latency is horrible when you're not in the same building as the server.
That's a great point Rich and something that came to mind as well. Compile farms is another example of where we're already doing IDE in the Cloud type things.
ReplyDeleteThe discussion around git might prove to be a good fit here as well. I'll blog about that this week. But it could allow the combo between cloud and local hosting to work.
Pkt,
ReplyDeleteI've been a bit busy to respond, but I don't see why any of those things require a cloud IDE. You can have all that information in your trusted old desktop IDE. ;)
Also, web applications provide today most of the things you say a cloud IDE would have, so in some sense it's just a different name for what we already have today. ;)
Leaving hype and catchy names aside, I believe that there's a lot that can be done to improve the interaction between normal IDEs and the various applications used for collaboration. This is in many ways what Jazz is about. Also, things like the Amazon Aws plugin for Eclipse are cool because they make it so easy to debug and deploy in the cloud.
Still, I maintain that I want ultra-low latency so I want as much as possible running locally, but not more. :)
Best,
Ismael
@pkt: great list, I couldn't write better myself :) The point is not to replicate the IDE on the desktop, but rather to discover the kinds of tasks possible because the data is online, indexed, etc. It's about building an appropriate experience for each technology.
ReplyDeleteTo me, "cloud" means:
1) assume storage is free
2) assume computation is free
3) and know it's all shared
Now what can you do?
At present desktop apps are great for the "heavy lifting" of a focused set of data. Eclipse gives me a high fidelity interaction environment, and I have local storage of the data I need, with the infrequent problem of sync'ing with a central store. If I'm always working on the same data then this makes sense.
But just today I was asked to review a patch on a project which I don't have commit rights to. I had a hard time remembering where the project was buried, somewhere in the CVS tree (and which repo), then I had to load the whole thing, oops wait missed another one, load that one too, just to compare the patch in context.
Why did I need to drag all that stuff down? What a waste of time! So much knowledge required to get the right configuration/environment set up. This is where I think there's an immediate opportunity for web based IDEs. Someone who just wants to browse some Eclipse code, maybe contribute a patch, it should be as light weight as commenting on this blog.
In the long term I think if you have a good story for local caching so you can optimize for local data and work disconnected, and the web UI technology fidelity catches up (which it will), then an IDE in a web browser is quite compelling for the immediacy of the experience, but also for the power of services against a central store. We're not there today but we should start thinking about it now.
Direct Development in the Hivext Cloud - Online Cloud IDE http://ide.hivext.com - supported Java, server side JavaScript, PHP, other
ReplyDelete