The ideal IDE
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.
- 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:
- 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.