That isn't necessarily true. Xcode is a very awesome IDE, it has had its growing pains but with the new clang based backend it can go far and fast. Not being reliant on older and more stagnant and more tightly coupled GCC to get there.
It is in Apple's best interest to have a compiler that is also used to do the checking of code in real time within the IDE be the same. It makes more sense because otherwise you get differing results in the IDE versus compile time. It is within Apple's best interest to help developers develop and make it easy to find issues, clang's output for errors are absolutely fantastic. If you type something wrong it provides suggestions for what you may have meant (and most of the time they are accurate).
I think Xcode is one location where Apple is showing that it does care about developers by building a better product with better integrated tools (git for example ...). Are there things we miss from the old Xcode, sure, but overall it is clear that Apple understand they need to provide developers with tools that help them get their job done.
---
Clang though is helping the ENTIRE development community. It is an BSD licensed compiler with some absolutely awesome features.
1. Their human readable error messages. I've spent a lot less time Googling random compiler failures or trying to parse GCC's or MSVC's output so that I can understand it and fix the error (especially in heavily templated C++ code) just by having the compiler give me human readable errors. This goes a long way for a developer that misplaced a semicolon or is attempting to use a const variable into some Boost code that expects a non-const variable thereby causing thousands of lines of template errors to be thrown.
2. The LLVM allows for very interesting "languages" to be easily prototyped and tested, and JIT compilation and a few other things can be created.
3. clang can read incomplete code files and make code completion suggestions. Not just tied to Xcode, but as a library. clang_complete for Vim is absolutely fantastic and by far my favourite Vim script.
---
Why exactly should Apple be required to ship GPL versions of the software when they could ship BSD licensed utilities without having to worry about being GPL compliant. Just because a few people prefer the GPL version they can't remove it from their system? They believe the GPL licensed tools to be inferior (and with the GPLv3 causes more legal headaches than it is worth) and thus they are replacing them with a set of tools that fit their requirements. Why does that mean that they "could give a rat's ass about the developer community"? Why exactly would they continue to develop clang/llvm as an open source project?
"I think Xcode is one location where Apple is showing that it does care about developers by building a better product with better integrated tools (git for example ...)."
I guess this is a matter of opinion. Every time I am forced (read: paid) to use Xcode for some project, not only do I dislike the fact that I have to dig out my macbook because Apple's tools don't work on any other platform, but I find actually using them painful. It's been a few months since I've used it so maybe times-are-a-changing.
The last time I used Xcode (4.0.1?), it still basically seemed that it was using the iTunes container. Of course, I have no idea how much actual codebase Xcode shares with iTunes. Apple is probably just trying to be visually consistent between their products here. But I've never been a huge fan of iTunes either. I find the menus and configuration painful.
Though it's apparent that I'm not a huge Apple fan, I'm not trying to troll anyone here. Reading your statement, I saw your praise for their developer tools and it really made me think about the fact that, while a lot of Apple's hardware is competently designed, I'm not really a fan of their software whatsoever.
Off the top of my head, I can't think of a single app they've written (besides mail.app) that I like.
And kudos for them integrating git? Since pretty much every other developer tool includes support for it, I wouldn't say this is all that exceptional.
"I guess this is a matter of opinion. Every time I am forced (read: paid) to use Xcode for some project, not only do I dislike the fact that I have to dig out my macbook because Apple's tools don't work on any other platform, but I find actually using them painful."
I think it all depends on what you compare XCode with, and what kind of applications you are developing.
Personally, I find all IDE's painful to use, compared to just editing with gvim and building/testing using command-line tools. The fundamental problem with IDE's is that they are supposed to integrate a complete development workflow, which is never the same workflow you are used to, and which adds layers of complexity that are usually completely unnecessary if you write your own build & test scripts, customized for each project.
That said, of all the IDE's I've used over time, XCode is easily the best. There has been a regression from XCode 3 to XCode 4 in some ways, but it's getting better. I'd say the quality of the total XCode package is on par with Visual Studio, which is saying a lot. Environments such as Netbeans or Eclipse don't even come close to XCode 4 in terms of user friendlyness, speed, and integration.
If it were even remotely possible, I'd develop iOS and OS X applications using just gvim and command-line tools, but it simply isn't possible to get all the UI work, storyboarding, CoreData model creation, etc. done without something like XCode.
Personally, I think it's very hard to maintain that XCode is not a great tool for the problems it is supposed to solve, especially if Apple gets around to fixing all the (minor) regressions they introduced with XCode 4.
The tools not working on other platforms isn't an Apple only problem, though. Visual Studio is Windows only, and unless I'm missing something, there are no good cross platform IDEs for C/C++ development. At least many of the underlying XCode tools uses are cross-platform (clang, git, ...). It's more than can be said for any MS dev tool.
unless I'm missing something, there are no good
cross platform IDEs for C/C++
For C++ there are no good IDEs period.
Not only are the IDEs buggy, not knowing what to do on even simple cases of auto-completion, but working on huge code-bases like that of Firefox is completely unfeasible, unless you deactivate all features that you'd expect from an IDE, which is why many people working on such huge code bases are better off with simple text editors, such as Vim and there are Vim/Emacs enthusiasts even on the Visual Studio team, which says a lot.
Also, when comparing XCode to Visual Studio, well Visual Studio at least runs on more than 90% of all desktops / laptops out there. And you are allowed to install Windows in VMWare or other virtualization tools. And so you can do development in Visual Studio even if you are on OS X or on Linux, granted with some hoops along the way, but it is doable. AFAIK you are disallowed by the license of OS X to install it as a virtual machine and even if possible, companies such as VMWare / Oracle / Microsoft don't even make attempts at fixing the problems with OS X, as that's not a use-case they can support.
At least many of the underlying XCode tools
uses are cross-platform (clang, git, ...)
Visual Studio has one of the most potent plugins ecosystems out there.
There is Git integration with Visual Studio available: http://gitscc.codeplex.com/ ; Also, you can build your Visual Studio projects with GCC or clang for example. There's even commercial support available for debugging with GDB: http://www.wingdb.com/
I challenge you to try KDevelop, which likely has the most complete C++ parser outside gcc, clang and EDG, and uses it to great effect for things like semantic syntax highlighting, smart code-completion and useful information tooltips, plus other features. It also does reasonably well on large codebases like its own, or kdelibs, or Qt - or all of those within the same session, for that matter.
Its development version also has respectable C++11 support that is probably second only to gcc.
edit: it's also easy to load a windows VM on pretty much any other platform and develop for windows, if that's what you're after. full-screen 2560x1440 virtualbox windows VM performance is actually quite nice.
if i want to use my linux laptop to develop for OSX, I am violating Apple's EULA by having a hackintosh virtualbox image. though it does work pretty well, i'd rather not have to deal with it. but i guess this is a bit off-topic.
your point is a good one. but, i guess what i'm getting at is that if i'm doing windows or linux development, i have many choices about what my hardware can be. with apple development, officially, i have only one choice: apple hardware.
Clang is one side, but the other side is things like bash. Apple isn't developing a superior, BSD-licensed shell; they're just planning to ship the same old version of bash until the end of time. Some parts of OS X are getting better but other parts are stagnating.
The good side is that with zsh and some other software getting their place in OS/X; Linux and OSX communities will diverge away from each other. I kind of like this as a Linux user and developer. With OS/X or Apple we share so little in principles (read a lot of comments here), vision and development(now) and it is good if we end up being 2 mutually exclusive ecosystem similar to Windows/Linux.
Being a former Apple employee and having enjoyed Apple's ditching of the classic Mac OSes for OS/X, both worlds have had pretty much similar environments. After 2012 the Apple and Linux development communities appear to be totally accelerating in different directions.
For Linux and OS/X, noone said they share common parent; the shared common tools such as bash, samba and a lot of stuff removed as mentioned by this article will create diverging ecosystems (and before replying watch out, noone says diverging kernels).
In early versions of OSX (I think till Panther?) tcsh was even the default shell. They should revert to that again if they are shipping bash support only as a legacy kind of thing.
Edit:
But I guess shells are boring business. According to Wikipedia Bash 4.0 brought support for "associative arrays". shrug Those who care about that are able to get the most recent version by their own.
XCode is actually pretty horrible as IDEs go. It doesn't even have a solid plugin architecture. When will you see vi/vim plugin for XCode? That makes it pretty much a toy and unusable.
Honestly, XCode is pretty horrible when compared to even Eclipse.
Not entirely true. Xcode does have a plugin model; just explore the Xcode developer install and you'll find it is entirely built up via plugins. Unfortunately, Apple have chosen not to document it or make it public.
is this really an argument against what super_mario says? when he says it doesnt have a plugin architecture of course he means extendibility by everyone.
It is in Apple's best interest to have a compiler that is also used to do the checking of code in real time within the IDE be the same. It makes more sense because otherwise you get differing results in the IDE versus compile time. It is within Apple's best interest to help developers develop and make it easy to find issues, clang's output for errors are absolutely fantastic. If you type something wrong it provides suggestions for what you may have meant (and most of the time they are accurate).
I think Xcode is one location where Apple is showing that it does care about developers by building a better product with better integrated tools (git for example ...). Are there things we miss from the old Xcode, sure, but overall it is clear that Apple understand they need to provide developers with tools that help them get their job done.
---
Clang though is helping the ENTIRE development community. It is an BSD licensed compiler with some absolutely awesome features.
1. Their human readable error messages. I've spent a lot less time Googling random compiler failures or trying to parse GCC's or MSVC's output so that I can understand it and fix the error (especially in heavily templated C++ code) just by having the compiler give me human readable errors. This goes a long way for a developer that misplaced a semicolon or is attempting to use a const variable into some Boost code that expects a non-const variable thereby causing thousands of lines of template errors to be thrown. 2. The LLVM allows for very interesting "languages" to be easily prototyped and tested, and JIT compilation and a few other things can be created. 3. clang can read incomplete code files and make code completion suggestions. Not just tied to Xcode, but as a library. clang_complete for Vim is absolutely fantastic and by far my favourite Vim script.
---
Why exactly should Apple be required to ship GPL versions of the software when they could ship BSD licensed utilities without having to worry about being GPL compliant. Just because a few people prefer the GPL version they can't remove it from their system? They believe the GPL licensed tools to be inferior (and with the GPLv3 causes more legal headaches than it is worth) and thus they are replacing them with a set of tools that fit their requirements. Why does that mean that they "could give a rat's ass about the developer community"? Why exactly would they continue to develop clang/llvm as an open source project?