views:

434

answers:

18

Imagine you could ask someone to develop your ideal IDE for you, what features would it need to have?

This is largely inspired by a related SO question ("Improving the way we write code") and a response to it listing various interesting and desirable IDE features from a user interface point of view.

By asking this question, I am hoping to come up with a comprehensive list of features for an ideal IDE, so that IDE projects like for example eclipse, codeblocks, kdevelop or anjuta can hopefully refer to this list to get an impression about what features developers generally find useful.

Maybe, we can even come up with pretty novel features that way?

+7  A: 

I'd like to see some focus on actually making text navigation/editing easy. Vim and Emacs are both have this down, but none of the new IDEs I've seen can. Not providing a fast, easy way to navigate text and edit it with out reaching for the mouse is really foolish. It doesn't matter if you have all the other bells and whistles in the world, if you can't quickly edit text, it's still going to take you forever to code.

EDIT: Just to clarify, I'm not talking about add on keybindings. Some IDEs already support this and they are terrible. They support some of the (in this case emacs) keybindings but not enough of them for me to forget that I'm not actually editing with emacs.

docgnome
this .
Shog9
Care to give any examples?
Aardvark
@Ardvark Examples like what? Both Emacs and Vim are designed to be exclusivly used from the keyboard. When using either of these apps, I can perform any action at all with out removing my hands from the keyboard and moving to the mouse. This makes editing much faster.
docgnome
There's a commercial plugin for Visual Studio that adds Vi style navigation to the text editor.
Matt Olenik
A: 

Indexed full-text search of your source code, so you can find anything in your code instantly (like Google does for the web, but for your own source code).

RichieHindle
This is great, but honestly the non-indexed but still instant-except-if-the-project-is-unreasonably-large search that most IDE's currently have is fine. IDE developers, please focus on other features first, ones that will make a noticeable difference to everyone.
MGOwen
@MGOwen: I work with unreasonably large projects. 8-)
RichieHindle
+1  A: 

A built-in regular expression evaluation tool would be brilliant.

paulbeesley
That exists for eclipse: http://www.brosinski.com/regex/
Jorn
That's not "built-in".
Aardvark
+2  A: 

Using Visual Studio as a base, the ideal IDE (for myself) would also include:

  • Much easier additional language/addon/extension development & support
  • Cross platform
JTA
Dev-C++ had support for library installation. It was quite reasonable. I'd love to see that feature in modern IDEs.
luiscubal
+2  A: 

I would add in something like ReSharper... it does some amazing things like on the fly error detection (even runtime errors), advanced refactoring, easier code completion (other side of the curly braces), code cleanup (reformats and refactors to make code more readable)... in sum, a bunch of things that make visual studio even easier to use. Sheesh I sound like a fanboy.

jle
+1  A: 

I think it would be quite unfair to say, just let's take Visual Studio and add a couple of things that are currently missing. So I will start with the basic features: Support for IntelliSense, CodeFolding, SyntaxHighlighting, and the major version control systems (CVS, SVN, GIT, Mercurial). A build in shell with SSH would be very much appreciated and a Hex-Editor should not be missing (UltraEdit). If an IDE doesn't support most these features, I'm probably not going to use it. That's quite sufficient for me getting some major work done in PHP/HTML/CSS.

However there is one feature I have heard off, but never tried: Working "collectivly" on the same document and actual seeing others typing (see SubEthaEdit). Would be nice to check this one out one day. What about integrating something like stackoverflow in the IDE? Seriously! Why create documentation and a wiki and use some additional software etc... Just a very quite and easy way to ask questions and save these questions/ answers with all the source code automatically in the used version control system.

For more serious work (sorry php guys!) like C/C# I would love having a documentation at hand that integrates very well. Like the IntelliSense thing including up2date code examples. Of course a nice debugger and GUI builder click thingy is nice, but I think you are on the search of something more "special".

merkuro
I suspect the feature described in the second paragraph - collaborative editing - is going to be huge in the near future. I wouldn't mind a shell either, but really that was only a huge convenience on DOS - i'm perfectly happy just opening one or more separate shells when working in a modern OS. Really don't care about help integration at all, unless it's just a shortcut key for Google.
Shog9
+1 most of the features I'd like!
TokenMacGuy
Suggestion: For the benefit of all, answers like this need to have each feature separated into it's own answer so we can vote them up or down.
MGOwen
yes, and please use bulletin style to make it easier to look at each idea separately
none
+2  A: 

I love vim.

But there are too many things that a full-fledged IDE brings to the table. So each time I try a new IDE, I'm immediately looking for vim plugin to give me the movement keystrokes that allow me to keep my hands on the keyboard where it belongs.

So - optional basic vim emulation.

Rydell
+3  A: 

I'd like for it to weigh in under 10MB and start up instantly.

it shouldn't require installation, and should be able to run from USB.

Jimmy
good one, and preferably: don't require installation, but for example also work when used from a USB memory stick
none
@none: yup, added to answer
Jimmy
Also, it should make waffles. Tasty, butter-and-syrup-soaked pecan waffles.
Shog9
That's not really an IDE, though. I mean, you're asking for features but you are also asking for perfect speed and minuscule size. You can't have all three.
Matt Olenik
text editor and command-line compilation tools. Done.
MGOwen
+1  A: 

For C/C++: incremental compilation which is as good as, for example, Eclipse's incremental Java-compilation. When incremental compilation is done right, it practically removes the compilation-phase; your code is always compiled and ready to run. I'm convinced this can be done, but it requires some novel thinking and C/C++ compiler support in order to be really good.

JesperE
There's a related gcc project you may be interested in: http://gcc.gnu.org/wiki/IncrementalCompiler
none
Interesting, indeed.
JesperE
This is a focal goal of the new clang compiler front-end. Hope it gets reasonable coverage of c++ soon :(
TokenMacGuy
+1  A: 

As a programmer who regularly has to code on other peoples hardware, portability would be my biggest request from an IDE. It is hard when you become very use to the features of your favorite IDE and then have to work on a client machine and spend most of the time trying to figure out how to access the simplest of features instead of concentrating on your code. That is why I like IDE's that allow you to "install"/run them from a flash drive that I can plug into the client machine and take all my preferences and plugins with me to the client site. I can code faster and the client can get what they want done quicker.

Brandon Bodnár
A: 

Context-sensitive Help that actually works. And speedily. Start with matching pre-Visual Microsoft C/C++ (back around version 4.2a).

le dorfier
Already available for Visual Studio: http://www.codinghorror.com/blog/archives/000428.html
Shog9
Nice one! I guess we've all already punted and accepted that Google can provide better help for VS on the ricochet than MS can provide intentionally. (Now we need one for Eclipse.)
le dorfier
+1  A: 
  • a good plugin manager that supports / indexes 3rd party plugins; therefore if i search for "paper clip plugin for my ide", it should be indexed somewhere. Same goes to Styles and themes.

  • Auto complete that supports external APIs, libraries especially for scripting languages such as python

  • an unbloat feature. where you can take some main functions out. Eclipse offers amazing builtin features, but i don't use them all. I'd like to get rid of some.

  • irssi built in

  • power manager, that i can switch to light when i'm on the airplane or battery mode.

  • coffee maker

dassouki
A: 

Visual Studio 2008 + ReSharper is pretty damn close for me.

JP Alioto
A: 
  • Customizable syntax highlighting
  • uses makefiles or antfiles for its project files
  • intellisense-like thing as a plugin

This should result in a reasonable approach for a universal IDE.

Intellisense was to me the killer-feature that justified the existence of IDEs, but I don't like having my IDE bound to a particular language, and I don't care a whole lot if I have to recompile to update intellisense lookups.

Joshua
+1  A: 

The ability to search through all the open code in the world and see what they have done before you code something similar it in an attempt to not reinvent the wheel would be great.

Beau Martínez
Imagine if, just by naming your function well (say: ConvertPNGToGIF() or EncryptWith3DES()) a little auto-suggest window could intelligently find you already existing functions in your language (first in standard libraries, than from ones submitted and upvoted by a community) that may meet your needs.
MGOwen
I think you mean... the ReBuilder! http://www.secretgeek.net/rebuilder_idea.asp
MarkJ
+2  A: 

Simplicity. The ideal IDE is the one that does what I want and nothing more. Here's what I would want:

  • It should be written in and support only the language I'm using it for along with any other languages that may be necessary (like XML or whatever templating language).
  • Good code completion
  • A project system that isn't a PITA to use
  • Refactoring support
  • Code search
  • error highlighting
  • intellisense

Anything much more than that will just make it more complicated.

Jason Baker
A: 

Carefully considered defaults for style and formatting that are hard to change.

By this I mean all the irrelevant stuff that we shouldn't have to worry about:

  • tabs vs spaces (and how many spaces)
  • open curly brace on same line as if statement or next line
  • number of blank lines between methods (if any)

This stuff is all friction - it doesn't matter, or shouldn't, but does because of the different styles that emerge when IDE's fail to enforce an intelligent default. It hurts readability.

Example: In Visual Studio, VB.net just defaults to (4-space) tabs for indenting. If you type a line with 13 spaces or something, it will fix it automatically for you. If you don't indent the line after an if statement, it will fix it automatically for you.

Now if you're a die-hard seven-space tabs fanatic, you can still change it in the preferences somewhere, but if you're a newbie programmer who can't remember how to indent, this saves you. And it saves everyone who has to read your code later on. This has drastically improved the readability of millions of lines of code. The formatting and style are no longer a distraction and you can concentrate on reading the code itself.

I know intelligent defaults for style and formatting are discussed on forums and blogposts at length. But the poeple who read those are generally already doing it fairly well. Only enforcement by default at the IDE level is going to help the people who are doing it wrong. That's the only way we'll ever be able to finally completely move on from this issue and concentrate on writing better code.

I know, it's a small issue, but one that should have been completely dealt with 10 years ago.

MGOwen
Good thing that VS allows you to import/export settings, so a lead programmer can make set of formatting options that others on the team can import (willingly).
Cecil Has a Name
Agreed - but that will still miss most of the people who are causing the problem. Shops with decent lead programmers are not producing the worst code anyway. The point is that IDE defaults can fix the code readability of the programmers who need it most.
MGOwen
A: 

General rule for IDE developers:

Anything that can be done by the IDE, should be.

If there is anything in the process of developing software that can be automated, done competently by the computer instead of the human, it should be.

If the computer can't do it perfectly, but can usually do it OK, let it "suggest" or allow us to tweak what it does. But us long as it can get it mostly right, you're saving us time and brainpower that's better spent on high-level thinking that the computer can't do.

Most existing IDE features are examples of this: syntax highlighting, autocomplete, "go to definition", etc

MGOwen