Xcode, Eclipse and Visual Studio.
When developing on the Apple platform, one will get a free IDE and free developer tools. That's nice. No extra charge, just download and install from Apple.
But how good is the free IDE, Xcode. Well, I'm going to compare some basic features. I work most with Eclipse and Visual Studio .NET but now days I'm also using Obj-C and Cocoa targeting OS X, and yes, Xcode is the IDE of my choice.
In my point of view, the most important thing in a really good IDE is extensibility, if something is missing, I as a developer have the knowledge to solve the problem by writing a extension or extending another extension to fit my needs. So how does the IDE's compare in this test?
Eclipse, go ahead, no problem. It's a open IDE and you can access the source code and it has a fantastic plugin system. One can always find something that improves the IDE or write it.
Visual Studio, well. It's almost the same, the entire IDE is built so one can extend it to it's needs if one have to. The code is not open, but all the tools needed to extend it is available.
Xcode, well almost. I have read that there are some companies that have reverse engineered Xcode's plugin system, but Apple does not provide anything useful here. No documentation, and not a open IDE. The best one can do is to write some Automator scripts. The only thing I can say about this is, Apple, do it over, and do it right! Developers is the one group of people that can help you become a even bigger success.
Let's have a look at another common thing when coding. Working with multiple files, tabbed environment and dual monitors.
Eclipse has a tabbed environment, one can move around the tabs as one like. Save work setups and easily switch between different layouts depending on the task ahead. Eclipse does this very well if you ask me. The support for more then one screen could be better, but I really don't have anything to say about it for Eclipse since I use the tabbed environment most of the time.
Visual Studio, just as Eclipse offers a tabbed environment to work in, one can setup different tabbed views, split documents and get a really nice overview of more then one file at the time. In Visual Studio .NET 2010 Microsoft have promised improved support for multiple monitors and have the ability to let the IDE work with all available screens. And when it comes to Microsoft, one can say a lot of stuff, but the dev tools coming from Microsoft is always really good.
Xcode have nothing when it comes to tabs, it offers 2 different workspace types by default, a All-in-one or a condensed environment where every file and feature is in it's own window floating around on the screen with all the other windows. I can understand the condense workspace when one have a clean workspace with only the dev tools in one space and have multiple monitors, but for this to be effective I have to use 2 screens as a minimum, with 3 screens it actually performs ok, but I still miss the tabbed environment from Eclipse and Visual Studio. When working with the All-in-one environment you can split files both horizontally and vertically but this is just not as good as being able to put files in tabs AND split them for ex.
Let's stop comparing here for a moment, do I sound anti Apple? Well, one could definitely think so, but I like Apple, for most part. But I don't think they have really understood what a great chance they have if they started to please developers with even better tools that is even simpler to work with. OS X is a fantastic OS with great potential and they have Obj-C and Cocoa for doing development on a high level that is really speedy to develop in, but once again, the overall experience of working as a developer in OS X is lowered, all because of Xcode.
So why not just skip Xcode and use Eclipse or some other 3d party IDE?
Well, if you want to develop with Obj-C and Cocoa targeting OS X and/or iPhone, one will have to use Xcode.
So, I urge the people at Apple that have influence over the development of Xcode and the dev tools shipped with OS X, please, thing twice and ask developers and listen to developers of what kind of features they want in a good IDE because it seems like you just ignore the voices of developers.
Updated: I've filed several bug reports to Apple concerning the issues listed above and all of them has been taken under consideration or been marked as duplicates, so hopefully well see Apple releasing Xcode with some powerful API's and a tabbed environment soon.
Got something to add to this? Drop me a comment or write me a email to first name at last name dot se