James sent over a post from John Montgomery wondering out-loud what a web based IDE would look like, or if it’s even possible and/or desirable.
I know: it sounds crazy to all us developer types out there. The web is way slow for coding. Then again, maybe the problem is that the web is too slow for the way we code. New way and different ways of coding may work perfectly on the web. As some thought-yeast, Writely isn’t a perfect word processor, but it’s good enough for most of my word processor tasks.
The Wiki Model
In the short to medium term, a successful web-based “IDE” would be something like a wiki. Wikis — such as the [in]famous wikipedia — draw their power from their simplicity. A wiki is a collection of web pages (with text and images) that allow you to edit the content of each wiki page by clicking an “Edit” link on each page. After clicking, you edit the text on the page, and click save. The page is instantly updated. There’s no work-flow or uploading to go through. Whiz-bang! It just works.
Side-note: Do You Know Wikis?
If you’re developing software, and you’re not familiar with the architecture and usability of wikis, I’d strongly recommend taking some time to pick it up. The abstract design think behind wiki’s is brilliant and can improve usability in other web applications.
Refactor Me
Getting back to web based IDE’s, the key jump to make is that an IDE could be baked into the actual application itself. For example, you might have a web application where each page has a link/button that says “Refactor Me.” Clicking on that button would bring up whatever code in some IDE’ish page that you could edit. Once you clicked save, it’d re-compile/re-deploy or re-whatever needed to happen to get those changes in effect.
Sites like Ning are probably good inspiration. I also suspect that there are, or will be, some SalesForce mashups along these lines. Frameworks like Seaside are also interesting in this area.
Constraint-based Design: Exploit the Powers, Ignore the Weaknesses
As all of us at RedMonk have pointed out, the Writely’s powers are the multi-user, collaborative features: keeping track of revisions, who’s edited what, concurrent editing, centralizing the document so there’s only ever one document (no emailing around different copies of a .doc file), and the portability that comes from a web-app that isn’t bound to an end-user platform…among other features.
When it comes to a web-based IDE, instead of focusing on duplicating the exact feature-set of desktop IDE’s, web-based IDE’s should focus on those types of key features that desktop IDE’s can’t touch.
This same pattern, of course, emerges as application cross mediums: from mainframe to desktop, from desktop to web, from web to mobile, etc. Each type of system that an application runs in brings it’s own set of core competencies, to borrow a biz-term. One moniker for this type of thinking is “constraint-based design”, and it’s a great, lean-ish way of understanding the idea. It’s always tragic to see an application wallow in what it can’t do, fighting it’s constraints, instead of reveal in what it can do, profiting from it’s constraints.
A group of us ThoughtWorks Rubyists actually got together and started writing a web-based Ruby IDE last month. There is some information here: http://confluence.public.thoughtworks.org/display/RBT/Chizzle but AFAIK there aren’t plans to publicize the project any time soon.
Sure, things like Nings are great. But no way on web based IDEs for general coding- it’s a dead end. Web enabled IDEs- definitely. My IDE has my browser in it, not the other way around.
All of the features you mention for Writely are already available as Eclipse plugins. With MyEclipse, I have a design/source page that lets me see changes as they happen, and drag elements of the page.
Now, could you build an IDE out of Firefox plugins- yes. But why?
What the web is good for: things like ViewCVS, Trac, SourceForge, etc. that let you browse source code repositories. Those things are moving in a web 2.0 direction.
You have various page creators for things like HTML- but that’s hardly coding. I also think you’ll see things more like the Ajax Scaffold Generator for Rails. These are things that let people build simple applications, or templated applications. Don’t bother making Eclipse in a browser.
Obie: I’d be interested in checking that out. I’ll have to check out the page.
Matt M.: As you say “Don’t bother making Eclipse in a browser.” Having praised the idea of Ning and other “make coding easier,” those technologies have a poor history of panning out beyond the initial examples. The phrase “code generation” doesn’t bring up happy thoughts. That said, current “code generation” applications might be good enough to solve people’s problems, meaning they wouldn’t need to pay for a programmer to write an applications. For example, many companies run their financials in Excel spreadsheets rather than buying an ERP or other financial-focused app. That could be an analog for the success that “web IDE” tools could have.