But Wait... It Gets Worse

So after purchasing and downloading Xcode via the App Store only to discover I didn't have enough disk space to install the app, I came up with an acceptable, if less than ideal, workaround. I'm not terribly happy with the state of things, but hey, at least I was able to get things back to a working state.

Today Apple released an update to Xcode. And here we go again.

Let the Good Times Roll

First off, there appears to be no way to update the software from the application page:

Nor does it appear in the Updates section of my Mac App Store:

To install the update I had to go to the Purchased section:

Ah! There it is, and it appears to see my current install. But this is what I get when I click the UPDATE button:

Nice. More useless error messages. See, I am signed into the account I used to purchase Xcode. So this makes no sense whatsoever.

Fortunately, I'm a SysAdmin, and this sort of thing is our forte. I figure App Store is probably confused because I moved the original installer app off my main hard drive due to space constraints that were causing the original install to fail. Putting the Install Xcode.app back in to /Applications should do the trick, I reason.

Sure enough, doing so allows me to run the update from App Store. Now I get this:

Well, that's pretty ironic! Seems like that's the message I should have gotten the first time I attempted to install Xcode 4.0. I'll call this progress though, as it's the first error message I've seen that might make any sense to a normal user. Still, though, there's no indication of how to fix the problem. Just how much disk space I'll need is never specified. Not before I began the process, nor during the process. This is simply terrible UI, folks. Simply terrible!

So I decided that probably the best way to clear up the needed space was to completely delete the current Xcode 4.0 install. I'm pretty sure that no matter what you do, the Install Xcode.app is going to overwrite everything anyway, so I may as well delete it.

Unfortunately, this leaves me with the original problem with the Update. I get this thing again:

So now I'm in a catch-22: If I keep everything I need for the Updater — the Install Xcode.app and the entire Developer folder — I don't have enough space to complete the update. But if I remove any of these items, the App Store isn't able to perform the Update because it doesn't seem to recognize the app as being fully installed (despite the fact that it sees it on the product page as installed) or as having been installed by me.

The first thing I tried was using a symlink pointing to the Install Xcode.app on another drive to clear some disk space. No dice. The actual Install Xcode.app needs to be in /Applications.

Next, I tried deleting just a portion of the Developer install, particularly the folder /Developer/Platforms/iPhoneOS.platform, which is just under 4GB. And now we're back to the "sign in to the account" message again. I also moved this folder and tried using a symlink to it as well, with the same result.

Next I tried removing the Install Xcode.app payload, a hidden folder that lives inside the app that's full of PKG bundles. Also no go.

It looks like the only way to update Xcode is to actually have Install Xcode.app and the Developer folder in their expected locations, and then, if you're short on disk space, to find several GBs of non-Xcode files — how many GBs I can only speculate, but I'll guess around 4 GBs (to give me a total of 10 GBs free) — to temporarily remove while I complete the update. Then, once the update is complete, I should be able to remove the Install Xcode.app (or move it to a backup disk) and put back the temporarily deleted files. Fun times!

Okay! So, after clearing up some space, the update still doesn't work! Argh! I am STILL getting the "updates for other accounts" message.

I'm at a complete loss at this point. And what do we do when we're at a complete loss, kids? That's right: Time to reboot.

Reboot to the Rescue

After rebooting and opening the App Store, and signing in to my account, here's what I see in the Updates screen:

App Store now sees my Xcode install and recognizes it as something it can update. This looks very promising. And this is what I see when I hit the UPDATE button:

Ahhh! Sweet blessed mercy! At last! It's working!

But wait… After the 20 minute "Update" process completes, App Store says my app is updated:

But Xcode begs to differ:

Turns out it's only the Install Xcode.app that's been updated:

So I run the Install Xcode.app, and this is what it tells me:

Un-fucking-believable.

Now What?

In theory, the best way for me to clear up disk space for an Xcode update is to delete the older version. I tried this before, however, and App Store got confused. But, ever the glutton for punishment, I simply must know if the Install Xcode.app will work under this scenario. It absolutely should. So I delete /Developer. Again. I rerun the updated Install Xcode.app and:

Seems to be working. It's about frickin' time.

The Deal

So here's the deal: Apple simply doesn't provide an accurate figure for how much disk space is required for installing Xcode. If you're wondering what the actual number is, I think I'm able to glean it from my experiments and am happy to provide this figure.

Also, there are a number of possible issues that can crop up if you happen to be low on disk space and are working around those constraints, so I'll provide some info on just what's going on under the hood with these updates.

Total Disk Space Required: 15 GBs

Itemized Disk Space Requirements:

  • Install Xcode.app: 4.5 GBs
  • Xcode and Related Developer Tools and Libraries: 10 GBs

What's Actually Happening During an Update:

  • When you update Xcode from the App Store, you're not actually updating Xcode. You're updating the Install Xcode.app.
  • You must have enough disk space at update time to accommodate this update, about 4.5 GBs.
  • After running the App Store update, you must run the Install Xcode.app to actually update Xcode.
  • The Install Xcode.app does not actually update existing components, it instead wants to completely overwrite your current install of /Developer, and so will need the full 10 GBs of disk space that install requires.
  • At this point, however, if you want to clear some disk space, it's safe to delete /Developer.

Additional Possible Issues:

  • In order to update Xcode, bare minimum, App Store obviously wants to see that Xcode is installed under the active account.
  • If App Store is complaining about your install or your user account, I highly recommend a reboot of your system before proceeding. This will likely cause App Store to fully recognize the install and account info, particularly if you've been mucking around in any way, shape or form.
  • The easiest way to manage all this is to keep the Developer Tools where they're expected — in /Developer — and to keep the Install Xcode.app where it's expected — in /Applications. If you have the disk space, this should make everything work more smoothly.
  • There are workarounds for this, but as you can see, they're not necessarily pretty.

All in all, I'd call this a major failure for the App Store. I'll say again, the App Store is meant to simplify the application installation process, and is meant primarily for the installation of simple, drag-and-drop type apps. By breaking its own protocol and using the App Store to install a complex suite of applications and libraries, Apple is both setting a terrible example for other developers, and creating one of the worst user experiences I've had in a very long time.

Installing Xcode 4 From the App Store

I have to say, installing Xcode 4 from the Mac App Store was one of the worst software installation experiences I've ever had.

Thwarted Expectations

For starters, the big appeal to me of downloading and installing stuff from the App Store is that I don't have to manage it. All that management stuff is handled by the store itself. I make my purchase and the app installs correctly and in the proper spot. Not so with the Xcode install.

In fact, once you've clicked on the buy button in the store, had the $5 clams removed from your account and waited the half hour it takes for the 4.5 GB install to do its thing in your Dock, what you end up with is not Xcode installed on your system. No, instead what you get is an application called "Install Xcode," which is essentially just a wrapper for the old-style installer you used to get for free.

Buying from the App Store in this case doesn't seem to manage anything except Apple taking my $5 bucks, which was never a problem before because it was free. But wait, it gets worse.

Install Xcode.app

So I run this installer app — this Install Xcode.app — and it's going okay. The inteface has the new Lion-style buttons and animations, which is at least entertaining, as well as usual stuff, license agreements and the like. Oddly, it even discovers my old install and tells me that it's going to rename it — not upgrade it, rename it — to Developer-old. No choice here, that's just what it's going to do, just so ya know.

But then it fails, and not exactly gracefully. No, it fails ugly.

Um… What now? Consult /var/log huh? This is what I paid $5 bucks for? This is what you wrote an installer app for? Crappy error reporting? So you could tell me to "consult /var/log/install.log"? Not even open Console, but consult a log file in an invisible folder? Really? You think Joe Average App Store User will have any freaking idea what this means?

And isn't this just the sort of thing the App Store is supposed to prevent?

Wherefore Failure?

So I open the lo file and this is what it says:

Mar 10 15:02:38 hassium runner[557]: Administrator authorization granted.

Mar 10 15:02:39 hassium installer[541]: Will use PK session

Mar 10 15:02:39 hassium installer[541]: Starting installation:

Mar 10 15:02:39 hassium installer[541]: Configuring volume "SysApps"

Mar 10 15:02:39 hassium installer[541]: Preparing disk for local booted install.

Mar 10 15:02:39 hassium installer[541]: Free space on "SysApps": 8.51 GB (8505917440 bytes).

Mar 10 15:02:39 hassium installer[541]: Create temporary directory "/var/folders/zz/zzzivhrRnAmviuee+++++++++++/-Tmp-//Install.541PaUH12"

Mar 10 15:02:39 hassium installer[541]: IFPKInstallElement (40 packages)

Mar 10 15:02:39 hassium installer[541]: Failed install preflight: Error Domain=NSCocoaErrorDomain Code=640 UserInfo=0x103555a90 "You can’t save the file “Developer” because the volume “SysApps” is out of space."

Mar 10 15:02:39 hassium installer[541]: Install failed: The Installer encountered an error that caused the installation to fail. Contact the software manufacturer for assistance.

Yup, you guessed it. Out of disk space. Now, there's a whole list of fucked-up here, so let me just take you through it.

  1. The Xcode Installer application failed because of a lack of disk space, but somehow can't just say that.
  2. The traditional, old-style (and, ahem, free) installers will simply check disk space during preflight and tell you if you don't have enough space right there in the installer, but this custom app that I paid for cannot.
  3. Nowhere on the App Store does it say that you will need 15 GBs — yes, fifteen or more gigabytes, if you count the Install Xcode app and it's payload — of free disk space to install Xcode.
  4. The Install Xcode app itself is 4.5 GBs, which is a big part of the reason my disk is too full now for the install to complete.
  5. The traditional, old-style Xcode installer always used to offer customization options so you could preen certain Developer resources from the install to conserve space. Not everyone is an iPhone developer, for instance, and not installing the iOS SDK will actually save upwards of 8 GBs of disk space. But these options are no longer present in the custom-built Install Xcode app.

The fact is, there are at least a couple points at which this problem can and should have been detected. The most logical place would be at the app store itself — preferably before I ponied up the dough — where a simple declaration of disk space requirements would be exceptionally useful, particularly for an app and installer that together take up over 15 GBs of disk space. Instead we get this, which, if anything, seems to suggest that all you'll need is 4.24 GBs of space.

It also would be lovely if the Install Xcode app could tell me all the same useful stuff as a regular installer. But then they'd have to charge $10 bucks, and who's going to pay that for something they used to get for free.

The Fix

After all this I decided to see what was inside this Install Xcode app. I presumed that there would likely be a standard PKG or MPKG file that would allow me to install Xcode in the usual manner. Sure enough, that turned out to be the case.

Running that MPKG file, by the way, did, in fact, allow my to customize my install, had I wanted to go that route. (Though I would point out, it did not seem to want to upgrade my existing components as past installations of Xcode had. Take that info for what it's worth.)

Instead, however, I decided to see things through with the Install Xcode app. So I copied it to another drive partition and erased it from my /Applications folder, which freed up enough disk space to complete the full install and ran the Install Xcode app from the secondary partition (happily, the Mac App Store still recognizes that I have installed Xcode on this system).

This time, success.

Finally!

Conclusion

So that's my tale. In the case of Xcode, it seems clear to me that the only thing the App Store is really facilitating is payment, which was never an issue in the past because Xcode was blissfully free. Unfortunately, the overall experience of installing Xcode from the Mac App Store is more opaque and, if there is any sort of problem, far more difficult to fix. Given the lack of information provided by the App Store, it also seems far more likely that you will run into problems.

My conclusion: The Mac App Store is simply not well suited for complex application installs. It works great for drag-n-drop apps — self-contained applications that can simply be dropped into /Applications (or anywhere else for that matter). But for complex suites of applications, the Mac App Store doesn't simplify, it complicates. And that ain't right.

Finally, I don't mind that Apple is charging a small fee for the Dev tools. I always thought it was pretty generous that they were free in the past, and $5 is still cheap enough to grab them casually. What I don't particularly care for is paying five dollars for a singularly crappy installation experience. Those two things just don't mix well.

UPDATE:

For folks just joining us in this saga, please note that there are some additional installments dealing with the recent Xcode updates, how they're handled by App Store, and how to deal with them on space-constrained drives. Installment 2 deals with some general App Store issues I had. Installment 3 deals with the 4.0.5 update, which was the smoothest — though by no means perfect — so far.

Also, one reader points out that he was able to keep his file size down but still have success with updates by simply removing the .PKG files (found inside the .MPKG mentioned above) from  Install Xcode.app. He also points out a very cool trick that will allow you stop an in-progress update: simply option-click the INSTALL/UPGRADE button and App Store will give you the option to cancel the update. Handy!

The End Of IT?

It's rare that I see a blog post with comments that are consistently smarter and more well-informed than the post itself. But, folks, we have a winner. This article by 37Signals' "David" is just such a mythical beast. It's so infuriatingly bad, so completely misinformed, and so utterly borne of ignorance and frustration, that I think I'll just go through bit by bit and explain why people should just stop posting this utter nonsense. (And, Gruber, shame on you for thinking there was anything even resembling a well-reasoned argument here.)

David begins his rousing critique of the IT industry thusly:

"When people talk about their IT departments, they always talk about the things they’re not allowed to do, the applications they can’t run, and the long time it takes to get anything done. Rigid and inflexible policies that fill the air with animosity. Not to mention the frustrations of speaking different languages. None of this is a good foundation for a sustainable relationship."

True enough. This is often what people talk about when they talk about IT. They rarely talk about how awesome it is that they have a usable network or rooms full of computers without viruses. But let's continue.

"If businesses had as many gripes with an external vendor, that vendor would’ve been dropped long ago. But IT departments have endured as a necessary evil. I think those days are coming to an end."

Typically, businesses don't have gripes with IT, end-users do. But, okay, I'm curious to hear your reasoning.

"The problem with IT departments seems to be that they’re set up as a forced internal vendor. From the start, they have a monopoly on the 'computer problem' – such monopolies have a tendency to produce the customer service you’d expect from the US Postal Service. The IT department has all the power, they’re not going anywhere (at least not in the short term), and their customers are seen as mindless peons. There’s no feedback loop for improvement."

I don't think that that's really the problem with IT departments at all. The problem is that many IT departments make crappy policy decisions that are user-hostile. But that's not because they have "all the power." In fact those decisions are often, I'd suspect, borne out of a need to satisfy certain technical goals using limited resources. The characterization that IT departments see their customers "as mindless peons" is offensive to anyone who works in this business, and generalizations such as these do as much to "fill the air with animosity" as any IT policy does. Clearly, the flip-side of "the problem" is an almost willful ignorance on the part of certain members of the tech biz — David, I'm looking at you — to make even the slightest effort to understand what IT departments do before making grand proclamations on the internet about the "end of IT." While I do agree that there should be better avenues for feedback, that doesn't mean I can always get what I want. And crying about it is a five-year-old's tactic.

"Obviously, I can see the other side of the fence as well. IT departments are usually treated as a cost center, just above mail delivery and food service in the corporate pecking order, and never win anything when shit just works, but face the wrath of everyone when THE EXCHANGE SERVER IS DOWN!!!!!"

You're goddamned right about that. I suspect that a well-respected, well-treated IT department would have warmer, fuzzier feelings for its "customers." But the fact is that, because people like David continue to see IT departments simply as "cost centers" and not as members of a single team with a shared goal, IT departments continue to be reviled, often by members of the very corporate structures upon which they depend. Unfortunately, this relationship has been sustainable for over twenty years. Probably because, in many institutions, it is a relationship that, though pathalogical in many ways, is necessary.

"At the same time, IT job security is often dependent on making things hard, slow, and complex. If the Exchange Server didn’t require two people to babysit it at all times, that would mean two friends out of work. Of course using hosted Gmail is a bad idea! It’s the same forces and mechanics that slowly turned unions from a force of progress (proper working conditions for all!) to a force of stagnation (only Jack can move the conference chairs, Joe is the only guy who can fix the microphone)."

No, IT job security is not "dependent on making things hard, slow, and complex." I'm so tired of hearing that. It's simply not true, and I'd love to hear a concrete, real-world example of some place where that was the case. The fact of the matter is, IT job security is dependent on making things work. Period. If you really think that the IT department uses Exchange Server so that their buddies can get a job, you simply don't have a clue what IT does.

"But change is coming. Dealing with technology has gone from something only for the techy geeks to something more mainstream. Younger generations get it. Computer savvyness is no longer just for the geek squad."

Change may be coming. Indeed, I hope it is, because I would love to see the relationship between IT and the end-user improved upon, and, where possible, lessened or even ended. And certainly "dealing with technology" is something everyone has to do these days, but after working in tech education for eleven years, I see no evidence that people have gotten any tech-saavier at all. In fact, from one year to the next, people seem to be pretty much the same: they're either tech-saavy or they're not. It has less to do with exposure, more to do with personality. Some people can sing, some people can't. Making the bad singers listen to music all day doesn't make them good singers.

"You no longer need a tech person at the office to man 'the server room.' Responsibility for keeping the servers running has shifted away from the centralized IT department. Today you can get just about all the services that previously required local expertise from a web site somewhere."

Apparently, David, you seem to think that all IT does is run servers, which you seem to think requires them to stand next to them inside a server closet somewhere. Hate to break it to you, buddy, but IT does way more than run your shitty-ass fucking servers. IT configures your switches; they deploy your workstations to your labs; they build and maintain your render clusters, your RAIDs your SANs; they provide all your network infrastructure and keep your workstations virus- and botnet-free. And they usually do it from some sunless underground cavern because idiots like you fail to see their importance. You cannot get any of those things from a website.

"The transition won’t happen over night, but it’s long since begun. The companies who feel they can do without an official IT department are growing in number and size. It’s entirely possible to run a 20-man office without ever even considering the need for a computer called “server” somewhere."

Again, your obsession with servers. And again, I'd love to see some numbers on this. But okay, let's assume for a minute that you're right. What you're basically saying is that there are a lot more smaller companies forming on a regular basis out there. And, sure, smaller companies don't need an IT department. But smaller companies never needed an IT department. Smaller companies could always outsource their technology needs. That's not new. That's not change. That's just more proof that you don't know the first thing about what IT departments are or what they do.

"The good news for IT department operators is that they’re not exactly saddled with skills that can’t be used elsewhere. Most auto workers and textile makers would surely envy their impending doom and ask for a swap."

And that's proof that you're a condescending asshole.

Finally, for the straight shit on what IT actually does, John C. Welch says far more than I ever could (as he actually works in IT) and with far fouler language.

UPDATE:

Here's the inimitable Mr. Welch's response to the very same article. See? I told ya so. (Thanks, John Mahlman, for the tip.)

No More H.264

Every time I start thinking about switching to Google's Chrome browser, they go and do something like this. Dropping H.264 support brings them right on par with my current and still favorite browser: Firefox.

Yes, it bugs me that Firefox doesn't support H.264. But if Chrome won't support it either, then that leaves me with Safari as my last best option, and that just won't do.

Much as I've been tempted, it looks doubtful I'll ever switch to Chrome.

UPDATE 1:

For a more detailed look, this superb Ars article.

UPDATE 2:

And an answer to the question, "Who's happy about this?"

Yay!

A tiny Yay! today for the iPhone coming to Verizon. Whether you switch or stay with AT&T, this is good news for iPhone users. We finally have a choice of carriers, and that means competition. And that means that things get better faster.

And so, a tiny Yay!