First of all, what do people mean when they talk about an IDE? They usually mean one tool that helps automate the development and deployment of an application. What does this involve? Since Web applications are now the cutting edge, let us look at what it takes to develop and deploy a Web application.
Second, you need to compile/build and run the application, then debug it before viewing the output and error tracebacks. You should also be able to view hints for better programming practices and refactoring code, besides viewing code diagrams and database schemas. Further, you need to be able to set up and maintain the databases.
Then, you need a Web browser to view the finished product — one that can emulate the behaviour of all popular browsers.
Since no sane programmer develops and deploys without a version control system, you need to be able to maintain the system, as well as commit and push code. Also, most people develop in a controlled virtual environment, so you do need tools to control that environment, especially the dependencies needed to install the application.
For deployment, you need tools to access a remote server or servers, apart from tools to deploy configuration files, start, stop or restart services, and control and organise error messages and monitoring tools.
The ideal IDE is an application that will do all of the above, and more. (It would be great if it also served coffee on demand, but that is not essential.) It is, of course, impossible for a single application to do everything perfectly. At the most, it will do some things well, some things passably and be substandard in some aspects — and may even not be able to perform a few functions. So, you will have to compromise. You may well ask why there should be just one application to do everything? In the proprietary world, a sophisticated application does not come cheap — so you often cannot afford more than one application.
More important is the *nix philosophy that rather than have one omnibus application that does everything, it is better to use many applications, each of which does one thing only, and does it perfectly. In this context, the best IDE ever, since its introduction more than a decade and a half ago, is the Linux desktop — with as many monitors as your system can support. And you can do each of the tasks mentioned above with a separate tool that is designed precisely for the task at hand.
The trouble with one single application that does everything is that it needs multiple panes and windows — making it difficult to see what is what, and, more important, you can only do one thing at one time. The Linux desktop, spread over several monitors, enables one to do dozens of things at the same time, each one with the perfect tool for the allotted task. There is no space here for an elaborate discussion, but here are two simple examples:
- You need to test the behaviour of your application on a browser — no inbuilt browser can ever simulate Firefox better than Firefox itself, so use Firefox.
- You happen to be learning something. You need to keep reading the tutorial, doing the exercises, and now and then, search the Net for solutions not covered by the tutorial. Solution: tutorial on one monitor, workspace on another, browser on the third, and email/IRC on yet another. With, of course, a whole lot of terminals open to monitor your servers and other processes. And yes, I forgot — maybe even your coffee machine hooked up to a USB port, churning out your favourite brew on demand.