The ideal IDE

time to read 5 min | 858 words

We are discussing the ideal IDE on the Alt.Net mailing list, I thought that it would be interesting to gather all the requirements in one place.

I made some minimal attempt to reduce duplication, and to put the interesting parts, but check the discussion, it is still going on. This is not a list of "what is wrong with VS", it is a list of things that we want to see in an IDE (or not see in an IDE :-) ). IDE is defined as the place where I write code / debug /test.

Good quotes:

  • I want to be a train speeding full steam and have this IDE laying track just in front of me until such time as I tell it I want to go a different direction.
  • I just want a lightening fast intelligent editor that will let me choose to add on the features I care about. I don't want to have to deal with lag time.
  • Give me something like TextMate for .NET. Build it on managed code. Make the AST model/API sensible and self-evident. Provide a user-centricity driven plugin model - no abstracterbation for programmers with technology fetishes. Plain, simple, self-evident. Extensibility and usability for the merest of mere mortals.
  • So, do you really need Snippet Compiler with ReSharper editing features and debugger?

And now to the real stuff that was mentioned:

  • Coding:
    • Syntax highlighting
    • Intellisense (I may think I am a jedi but true zen is to talk to the machine and have it put forth the words before you)
    • Code Browsing
    • Refactoring
    • Treat Warnings as Errors as not negotiable (always enabled).
    • i want it to be geared towards the keyboard developer.
  • Text manipulation:
    • Regex manipulation of the text.
  • Debugger, good one.
    • Edit and continue
  • Testing integration
  • Setting up all the required stuff, what is compiled, embedded, etc.
    • Preferably it should read my build script and work on top of that.
    • i want the build system to be pluggable
    • i want a light project structure. If anything is going to be stored in a file it needs to be in a readable form and would preferable have a lightweight API that ships with it.
  • Source control integration - nice, but not really a must have, I use tortoise for that.
    • Some opinions said that SCM should not be in the IDE.
  • Extensible
    • Should be able to add a new language easily.
    • Should offer me the AST of the code when I build a plugin.
    • Make it have a light version, where you can unplug stuff you find unnecessary. ??
  • So as far as an IDE is concerned I want to do everything from inside it like deployments
  • Smarts:
    • Error highlighting (errors, warnings, test failures, bad practices, ...)
    • A Code Smell detection system (users could extend it with CQL)
    • i want it to give me visual cues to interesting code constructs
    • All existing R# features
    • IDE support for effect analysis (Chapter 11 of Working Effectively with Lagacy Code).
    • automatically correct these issues: flase > false, reslut = result, retrun = return
  • User interface:
    • Full screen ability
  • Background compilation as you type (I hate waiting for VS to compile my solutions all the time).
  • Code searching:
    • A very fast way to get from the current function you are in to any caller or to any function the function is calling (and class definitions, ...)
    • Ability to instantly search for a specific artifact (kind of like google / windows live search). As I type it in, I see the filtered results. This is NOT the find feature.
  • Misc:
    • The ability to have 2 people working in separate window panes on the same file (one person typing on the local keyboard/mouse, the other in a remote desktop); both visible in the same environment.
    • IDE installation < 100Mb
    • Shell integration would be nice. and available from the keyboard (think launchy)
    • For windows PowerShell integration would be nice too.
    • How about an IDE that doesn’t lock up when the source control is unavailable ;)
    • better multiple monitor support.
    • Configuration screens that don’t give me a headache
  • Responsive:
    • I am willing to pay for a quad core computer with 16 GB RAM, and use that for only programming. But it _must_ be responsive. (I used VS.Net on such a system, it crawled!)
    • FAST FAST FAST
  • Designers:
    • i don't want any of the overhead of a designer.
    • Designers that don’t break or no designers at all
  • Built in (no separate window) reflector
    • I should be able to CTRL+B from the method to the code or to the disassembled code.
  • Release cycle:
    • I want an IDE which is released early and often. And I want an IDE built by a team which is responsive to community feedback. The rest is just details.
    • Multiple Releases a year, constant improvement.