I'd like to get an idea about if there's a substantial space to innovate in developer tools that target iOS/OSX, or if XCode is seen as the canonical all-in-one tool by most.
Doing professional iOS development (and hobby projects with the platform), I've been spending a minimum of 8 hours a day in XCode 4 and there are a lot of really big issues. My foremost grievances:
- A bizarre tab design that, despite the ~month I've had to get accustomed to it, is still compromising my efficiency
- An inability to cope with external modification of project files (e.g. update/merge will often break your project configuration unless you quit the app beforehand)
- Project files maintain their own fake directory structure (groups) when in nearly all cases you just want a 1-1 mapping to what you've got on disk.
- There are an abundance of pretty conspicuous UI bugs the Interface Builder component/panel (e.g. UI elements failing to draw)
That said, I'm a big fan of the humorous error dialog I get to see every couple of hours asking me if, after the application's encountered a critical exception, I'd like to "continue" or "crash".
Project files maintain their own fake directory structure (groups) when in nearly all cases you just want a 1-1 mapping to what you've got on disk.
I've been using IntellJ for the last few days and was shocked when I tried dragging a file from one folder to another and it just merrily moved it for me. I can also just drop a .png in the right directory and IntelliJ not only adds it to the project, it also registers it as a resource I can refer to directly in code by ID. XCode makes this kind of thing such a pain in the ass.
I've also forgotten how useful a refactoring tool that actually works can be.
XCode is a perfect example of the strengths and weaknesses of the Apple approach. It's more consistent and requires less setup than third-party IDEs, but if you want to bend it a little beyond its comfort point you're SOL and you have no recourse because nobody is dumb enough to challenge Apple on its home turf.
It's definitely buggy (ver. 4.1). In general, save often and you should be OK. It tends to crash on me about once every other day. Apple will probably squash the bugs in due time, but it's definitely less stable than Xcode 3.x was.
Cocoa without first-class autocomplete is too horrible to contemplate. Unfortunately my 2010 MBP, which ran XCode 3 quite well, doesn't seem to be up to the task of running XCode 4. You know something is wrong when XCode makes Java IDEs look lean & snappy.
I think there's something wrong with your system... I was running XCode 4 on a 2006 Macbook (the one with a Core Duo processor), and it worked fairly well. Not as well as my 2011 MBP but it was still usable.
Are you using the new disk-wide FileVault in Lion? I had to turn that off because it was making MacVim and XCode both run horribly slow (apparently they both write to disk constantly).
Their VIM plugin crashes using RubyMine for me so often that it is very hard to use. When it crashes, you have to restart the entire program or disable it. If you choose to ignore the error and continue, you may be unable to enter text at some point.
Man, I'd be really wary of trying this, even if I knew most programmers hated Xcode. I don't think you could find a worse platform to build dev tools for than Apple's.
For one thing, it's awfully complicated: think about stuff like the iPhone simulator. For another, Mac users are notoriously finicky. Personally, if you came up with an alternative that was great in almost every way, but was as graphically ugly as Eclipse, then I wouldn't switch. I'm kind of sad that years of Mac use has made me care about this kind of thing, but there you go.
Finally: Codewarrior. When Apple made the switch to x86, the Codewarrior guys decided that was one sea change too many, and gave up the fight. On the other hand, you could argue that that project was mismanaged for many years before that, and was likely to topple sooner or later.
I think it MIGHT be worth it for some specialized niche that isn't covered yet, but yeah I've tried several Rails-oriented IDEs like RubyMine, etc. and nothing really "feels" right compared to XCode. For some reason, using Eclipse doesn't really bug me that much on Windows, but on OS X it's just really frustrating.
I'd argue that it would be very difficult to make a better XCode or a better vim, but there's probably room for a better TextMate or "XCode for ____".
Yeah I think this is a losing proposition, just like trying to compete with iTunes on the Mac. The Jetbrains guys may find a niche here with their Objective-C IDE, but they've already done so much of the groundwork that it's much less risky for them.
Regarding CodeWarrior, the project was definitely on life support for years beforehand, as they never really put their weight behind the transition to OS X. Regarding the x86 transition, they probably wanted out by that point but they really had no choice, as they had sold their x86 compiler tech (IIRC to Nokia) just a couple of months before.
I tried for awhile to get a workflow going with Xcode and Emacs, but came to the conclusion that I just have to suck it up and use Apple's tools front-to-back to build Cocoa stuff (that may just be me; for instance, I think Marco Arment uses TextMate alongside Xcode).
I don't use Xcode for anything but that; notably, if I'm writing C code, even C code that I might end up calling from Cocoa stuff, I'm doing it in Emacs.
I wish there were third party tools that handled cocoa properly. I can't stand Xcode 4, the whole thing is atrociously bad, especially with limited screen real-estate (I do all my iOS coding on a 13" MBP). With Lion, animations in Xcode now chug and choke.
It really is one of the worst development environments I've ever used. Of course, I'm also spoiled, having used Visual Studio for most of my development career. And though that has its warts, it rarely gets in the way of letting you develop, and when it does, someone, somewhere, has written an extension that fixes it.
I have a 13" MBP but I also have a 23" external monitor. I love Xcode 4. Much better than 3. I have used Visual Studio and currently use Eclipse at work.
Totally agreed. Xcode 3 was fine, but Xcode 4 feels like they just changed it up for the sake of change without actually adding any improvements. The integrated interface builder is particularly awful.
I find myself trying to do vim keystrokes in XCode, but I've tried using vim for editing iOS code and it's just not as enjoyable as using XCode. I use vim for everything else, though.
I'm forced to download and install all seventy gajillion gigabytes of it in order to get OS X to build anything in different languages like Ruby and Python.
I'd love it if I could just download build tools from the App Store rather than installing all of Xcode itself.
I've got no issues with xcode4 as such, however it has made some significant changes under the hood from xcode3.
My problem is it seems quite a few libs & frameworks I use for iOS are designed for xcode3 & tend to be break in xcode4 without significant tweaking & hair-pulling.
But hey, plugin frameworks & project templates are for wimps anyway ;)
If I could find an easy way to ditch XCode and still do productive iOS development, I'd abandon it in a heartbeat. The one saving grace of it is that it supports a decent number of Emacs style text editing shortcuts (a side effect of OSX using Command rather than Control for normal shortcuts).
I think a good place to start would be making a vim binding for xcode. Realistically its very difficult to escape the xcode ecosystem, however vim bindings would probably be enough to make it great.
This would make me _so_ happy. There used to be an InputManager hack that could give you Vim bindings in all Cocoa apps, but alas that no longer works. Sometimes I wished I'd learned EMACS instead so that I could reasonable expect key-bindings in non-console apps.
Xcode is broken beyond repair. There are too many horrible problems with it to mention, but some pet peeves:
* The tabs. Xcode 3's file switching was terrible, but it felt impoverished, not dysfunctional. Tabs should not work like a web browser, it just doesn't make sense. (Oh, closing the last tab closes the entire project! WTF!)
* The lack of correspondence between the files/folders in the project and the file system.
* The project settings. They were awful and incomprehensible in Xcode 3, they got even worse in 4.
* Some colours are not overridable. For example, the background colour given to lines that have warnings make it near-impossible to read the text in themes with dark backgrounds. Example: http://dl.dropbox.com/u/12091499/xcode_screenshot.png
* The navigator/utility/assistant editor system is broken. Why can't I have the symbol navigator visible at the same time as the project navigator, like in Eclipse? Why not generalize the different panes/subwindows into a consistent system where I can drag stuff around to create a layout of my choice?
If I could, I would answer "As little as possible". If there's anyone building towards scripts that will, say, build an app and run it in the iOS simulator without using Xcode, I'd love to dive in and help out. Otherwise, someday I'll get to writing them.
Yes, at the very least you need to use XCode to install the app to a real device and run it. If someone's figured out how to do that from the command-line, I'd be really happy...
I have to use XCode for iOS development, but hate may not be strong enough a word for what I feel toward it.
Autocomplete works correctly MAYBE 50% of the time. It works 0% of the time on brand new files. Takes maybe an hour or two to get up to that vaunted 50% success rate.
I'd imagine it may have something to do with XCode's horrendous parsing of preprocessor macros.
Also It either crashes or balloons up above 4GB of ram usage at least once or twice a day.
Can't wait for Jetbrains to get their stuff to stable.
Loved it before Xcode 4, not hate it with a passion. Sure, I am willing to get used to the different way it works, but the fact I can no longer drag files from other projects makes it almost worthless to me.
[+] [-] SiliconAlley|14 years ago|reply
- A bizarre tab design that, despite the ~month I've had to get accustomed to it, is still compromising my efficiency
- An inability to cope with external modification of project files (e.g. update/merge will often break your project configuration unless you quit the app beforehand)
- Project files maintain their own fake directory structure (groups) when in nearly all cases you just want a 1-1 mapping to what you've got on disk.
- There are an abundance of pretty conspicuous UI bugs the Interface Builder component/panel (e.g. UI elements failing to draw)
That said, I'm a big fan of the humorous error dialog I get to see every couple of hours asking me if, after the application's encountered a critical exception, I'd like to "continue" or "crash".
[+] [-] cageface|14 years ago|reply
I've been using IntellJ for the last few days and was shocked when I tried dragging a file from one folder to another and it just merrily moved it for me. I can also just drop a .png in the right directory and IntelliJ not only adds it to the project, it also registers it as a resource I can refer to directly in code by ID. XCode makes this kind of thing such a pain in the ass.
I've also forgotten how useful a refactoring tool that actually works can be.
XCode is a perfect example of the strengths and weaknesses of the Apple approach. It's more consistent and requires less setup than third-party IDEs, but if you want to bend it a little beyond its comfort point you're SOL and you have no recourse because nobody is dumb enough to challenge Apple on its home turf.
[+] [-] dgallagher|14 years ago|reply
[+] [-] cageface|14 years ago|reply
[+] [-] tilltheis|14 years ago|reply
[+] [-] stephen_g|14 years ago|reply
[+] [-] jarin|14 years ago|reply
[+] [-] sehugg|14 years ago|reply
[+] [-] gfodor|14 years ago|reply
http://www.jetbrains.com/objc/
The killer app for this will be that you can install their VIM plugin, so you get VIM bindings inside of a first-class Obj-C IDE.
[+] [-] rodh257|14 years ago|reply
[+] [-] mathrawka|14 years ago|reply
[+] [-] allenbrunson|14 years ago|reply
For one thing, it's awfully complicated: think about stuff like the iPhone simulator. For another, Mac users are notoriously finicky. Personally, if you came up with an alternative that was great in almost every way, but was as graphically ugly as Eclipse, then I wouldn't switch. I'm kind of sad that years of Mac use has made me care about this kind of thing, but there you go.
Finally: Codewarrior. When Apple made the switch to x86, the Codewarrior guys decided that was one sea change too many, and gave up the fight. On the other hand, you could argue that that project was mismanaged for many years before that, and was likely to topple sooner or later.
[+] [-] jarin|14 years ago|reply
I'd argue that it would be very difficult to make a better XCode or a better vim, but there's probably room for a better TextMate or "XCode for ____".
[+] [-] cageface|14 years ago|reply
[+] [-] mikeash|14 years ago|reply
[+] [-] tptacek|14 years ago|reply
I don't use Xcode for anything but that; notably, if I'm writing C code, even C code that I might end up calling from Cocoa stuff, I'm doing it in Emacs.
[+] [-] mrcharles|14 years ago|reply
It really is one of the worst development environments I've ever used. Of course, I'm also spoiled, having used Visual Studio for most of my development career. And though that has its warts, it rarely gets in the way of letting you develop, and when it does, someone, somewhere, has written an extension that fixes it.
[+] [-] DamagedProperty|14 years ago|reply
[+] [-] RandallBrown|14 years ago|reply
I do hate the way Xcode 4 does tabs though and it's the one thing that I wish it did like Visual Studio.
[+] [-] stevenwei|14 years ago|reply
[+] [-] tmlee|14 years ago|reply
[+] [-] jarin|14 years ago|reply
[+] [-] holman|14 years ago|reply
I'd love it if I could just download build tools from the App Store rather than installing all of Xcode itself.
[+] [-] techiferous|14 years ago|reply
[+] [-] Zev|14 years ago|reply
I don't dislike Xcode 4 enough to start using TextMate and xcodebuild/xcrun, though.
(In case my choice wasn't clear, "Project management and editor".)
[+] [-] pagekalisedown|14 years ago|reply
[+] [-] 5hoom|14 years ago|reply
My problem is it seems quite a few libs & frameworks I use for iOS are designed for xcode3 & tend to be break in xcode4 without significant tweaking & hair-pulling.
But hey, plugin frameworks & project templates are for wimps anyway ;)
[+] [-] SeanLuke|14 years ago|reply
Sadly, your poll didn't consider all permutations.
[+] [-] stephth|14 years ago|reply
[+] [-] pux0r3|14 years ago|reply
[+] [-] chubs|14 years ago|reply
[+] [-] msutherl|14 years ago|reply
[+] [-] lobster_johnson|14 years ago|reply
* The tabs. Xcode 3's file switching was terrible, but it felt impoverished, not dysfunctional. Tabs should not work like a web browser, it just doesn't make sense. (Oh, closing the last tab closes the entire project! WTF!)
* The lack of correspondence between the files/folders in the project and the file system.
* The project settings. They were awful and incomprehensible in Xcode 3, they got even worse in 4.
* Some colours are not overridable. For example, the background colour given to lines that have warnings make it near-impossible to read the text in themes with dark backgrounds. Example: http://dl.dropbox.com/u/12091499/xcode_screenshot.png
* The navigator/utility/assistant editor system is broken. Why can't I have the symbol navigator visible at the same time as the project navigator, like in Eclipse? Why not generalize the different panes/subwindows into a consistent system where I can drag stuff around to create a layout of my choice?
* Toolbar is not editable, unlike most Mac apps.
[+] [-] niels_olson|14 years ago|reply
[+] [-] nolanw|14 years ago|reply
[+] [-] stephth|14 years ago|reply
I'm surprised to see this one with (currently) almost twice the votes compared to Project management only. If that's your case, what's your workflow?
[+] [-] kelnos|14 years ago|reply
[+] [-] asarazan|14 years ago|reply
Autocomplete works correctly MAYBE 50% of the time. It works 0% of the time on brand new files. Takes maybe an hour or two to get up to that vaunted 50% success rate.
I'd imagine it may have something to do with XCode's horrendous parsing of preprocessor macros.
Also It either crashes or balloons up above 4GB of ram usage at least once or twice a day.
Can't wait for Jetbrains to get their stuff to stable.
[+] [-] SoftwareMaven|14 years ago|reply
[+] [-] lox|14 years ago|reply
[+] [-] niels_olson|14 years ago|reply
[+] [-] benbeltran|14 years ago|reply
(But seriously. I love the Xcode workflow, and now that it's better integrated with its own tools and git, I love it more than ever.)
[+] [-] megablast|14 years ago|reply