Eclipse disaster

Fri 23 May 2008

As a student and developer fairly experienced with Linux, I'm often asked what IDE or debugger to install. I'd love to answer Eclipse, as on paper it's very nearly competitive with Visual Studio. If you're using Java, by all means, it's perfect. If you're using C/C++, don't bother with Eclipse.

Why?

The JDT has an interactive tutorial on using eclipse to start a project. CDT does not. If you don't know how to use Eclipse, this is unfortunate. Not a deal breaker, as there is documentation and perhaps videos somewhere. But don't think that the awesomeness of the JDT translates to an awesome CDT. Moreover, your ability to interact with the object model begins and ends at starting projects and adding / removing objects. The rest of the Views can parse and integrate your changes to classes, but you can't use them to stub the code.

But the big one is Content Assist. Content Assist is a simple feature intended to duplicate Visual Studio's IntelliSense. Sounds great, terrible implementation. Even the CDT project lead Doug Schaefer is frustrated:

It's bugs like this that make me wonder why CDT committers are working on new parsers, when there are still a number of issues like this that need to be addressed in the existing code base that none of the committers have signed up to address.

A fellow CDT committer rebukes him:

We have requirements for multi-language support from the people that are paying us to work on CDT, so that's where we're focusing ...Content assist is important for us, but working on it has to be balanced with our other priorities.

Its clear that the CDT as an open source project is in a strange position of having people paid to not make it better. Or rather, balancing priorities mainly means completely ignoring content assist. At current count, there are 144 open bugs about CDT Content Assist. Now, some of those bugs in such a basic search may not actually be correct, and at least one of those bugs is a feature request. But many of the bugs I've looked at appear valid, yet stagnate on bugzilla. Plus that feature request is for a cancel-able content assist, because it takes too damn long, so you can basically call it a "content assist sucks" bug report. The lack of any significant triage confirms that the "balanced" approach is complete denial and/or ignorance.

So why would you use Eclipse? If you look at their sponsors, it's pretty easy. Use Eclipse whenever putting up with the embedded systems toolchain your vendor offers. QNX, WindRiver, MontaVista and a ton of others now base their tools on Eclipse, and you can be damn sure they don't target Java on their microcontrollers. It's a smart move if you're familiar with embedded systems development from pre-2001. As terrible as I make Eclipse out to be, it's quite a move forward in that area, where nobody sought to distinguish themselves on the IDE front (embedded system designers are masochists almost by definition, after all). I suspect developers who use eclipse CDT turn off content assist and get on with their lives in an otherwise fantastic life. I'm tempted to file a bug that Content Assist should be off by default.

So if I can't recommend Eclipse, what should I?

Comments !