This post originated from an RSS feed registered with Java Buzz
by Michael Cote.
Original Post: Web 2.0 IDE's and Constraint-based Design
Feed Title: Cote's Weblog: Coding, Austin, etc.
Feed URL: https://cote.io/feed/
Feed Description: Using Java to get to the ideal state.
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.