For too long the IDE has been separate from the target. That is, the IDE is running its own process, and the code written in it is running in a separate one. I don’t mean to say that this is bad on a technical low level. It is as it should be. I mean from the user experience point of view. And nowhere is that more true than web development.
WE-TIDE – Web Enabled TIDE: The two beasts are so separate for web developers, that completely different tools have emerged. On one hand are the traditional IDEs, like Eclipse and Komodo. Others are in the runtime, like Firebug and Web Inspector. As a Firebug developer, I see requests for saving changes from Firebug back wherever the source is. Many people don’t even know what or where the source is. They might be using WordPress or some other CMS or shopping cart software, and don’t know how the CSS and HTML gets created. They are sometimes surprised to hear that Firebug doesn't know either. But it could…
More importantly to the developer community (that does know where the CSS file is located on a server), neither the IDE nor the runtime knows anything about what you are really doing. It doesn’t know what “Design Patterns” are. It doesn’t know how deployment changes code from the IDE to code in the browser. It is far from an “Integrated” development environment. Even further from an “Intelligent” development environment.
ME-TIDE – Mobile Enabled TIDE: It gets worse in mobile web development. There is no built-in runtime support like there is for a shipping desktop browser. They are stripped out of the mobile versions (generally for good reasons). Not that those companies that make mobile browsers have to develop in such a way. (For example, in an iOS device, go to Settings -> Safari and notice there is an entire Developer menu – but with only one item. That is counter to all the Apple UI guidelines. You just don’t get access to the other items.) There are solutions with various levels of fidelity, however.
“A good player goes where the puck is. A great player goes where the puck is going to be.”
“A good developer is using a toolkit. A great developer is using a framework.”
So how do we turn the TIDE? Two trends will force a sea change in web development, and they will strain the current toolset like never before: Mobile, and HTML5 localStorage. Why? Because both push business logic to the client. Latency (including the infinite variety: offline) is a big deal on mobile devices. And, honestly, speed is always an issue, even on the desktop. To handle these issues, data needs to go to the client, and get processed there. Dealing with business logic on both the client and server is a big driver behind node.js, where you can share such logic between both the client and server.
Now developers have to deal with design patterns on the server and the client. The IDE must deal with two runtimes, two debugging interfaces. And the IDE must deal with code changes that affect the next run, and code changes made in the runtime while running. It has to deal with desktop and mobile. It has to deal with code, and it has to deal with design. Getting started on a new project should be so easy that mockups are not created with a different tool. A mockup is working code. Tweaks to design in Firebug should not need to be rewritten on the server. Web Inspector is improving the connection between live styles and source css, for example. But we need integration. We need intelligence.