250 comments

[ 0.25 ms ] story [ 240 ms ] thread
The few of points I've made about this are:

1. The Xcode 4 download compared to Xcode 3 is basically just a different IDE. The gcc version is, for all intents and purposes, identical. There's nothing stopping anybody from just installing that if all they need is the toolchain.

2. The other big 2 OS's (Windows and Ubuntu) don't have any build tools installed by default either. Granted they are just an apt-get away on Ubuntu, but it's still something you have to explicitly install.

3. If I wasn't a dev, I'd be pissed to find some compiler toolchain IDE gongshow eating up 5-15GB of my disk space, so not having it by default is probably a good thing. Most people aren't devs.

I paid the $5, but I'd still like to see just the toolchain available as a free download, though I still don't think it would be a good thing to have it installed by default.

If I wasn't a dev, I'd be pissed to find out some compiler toolchain IDE gongshow eating up 5-15GB of my disk space

Yeah, but the essentials that most command line builds require wouldn't even take up 10% of that. Apple already wastes gigabytes on printer drivers and extra languages you don't need.

No doubt, hence why just the toolchain would be awesome. I don't even use Xcode.
Your house is not for developers! It did not come with a free computer when you bought it! Even though a computer would only cost as little as 0.2% of the cost of the house, and the previous owner already wasted tons of money on the useless peach trees in the yard.
hm, how come gcc comes for free on lunux, and install is as easy as: >> sudo apt-get install gcc
You try that command in a base Arch install and get back to me. You're basically blaming Apple for not having a package manager, even though that's clearly the responsibility of the community.
Actually I think Snow Leopard stripped out a lot of those extra gigabytes; only a few printers have drivers out of the box now.
Sure, but if you are a dev, installing the necessary tools is a pretty easy and painless thing to do. If you aren't a dev (like most people), why have it installed at all?

Since Snow Leopard, printer drivers are no longer included with the OS either. Instead, they are downloaded through Software Update as soon as you plug a printer in.

Having said that, the fact that Xcode is listed on the Mac App Store instead of just in the developer portal, I suspect that Apple will bundle Xcode 4 with Lion to try to encourage more app development.

> Apple already wastes gigabytes on printer drivers and extra languages you don't need.

No, they didn't. For example, Snow Leopard downloads printer drivers from Apple as you need them.

Extra languages are still there though. But I think this is good, mom uses her Mac Mini in Hebrew, my account uses English, dad uses our native Portuguese (I live in Brazil).
You likely don't need printer drivers or a developer tool chain to get your computer set up enough to connect it to WiFi or ethernet. You probably do need different languages if the one the computer defaults to is not one with which you are familiar.
I'm so down with an apt-get (or in this case, brew install) for build tools. That's really what I'm getting at. It'd be great if it were installed by default, but if it were just accessibile by any means it'd be a massive step up. Most people don't need all of Xcode.
I don't even use Xcode at all. I'd much prefer a `brew install` or even if they had their own *.pkg file or something that was just the toolchain.
So perhaps the answer is to allow Homebrew to bootstrap itself with a basic toolchain if one isn't available. It could even deprecate its toolchain if you later installed Xcode.

There's no technical reason why this isn't possible -- the Apple gcc toolchain is, by necessity, available as Open Source.

I use Xcode rather a lot, so this isn't a big deal for me, but it seems like a sane answer for "the rest". Sure, you'd still need Homebrew, but that plus a toolchain is a much smaller burden.

This sounds absolutely ideal. Homebrew bootstrapping itself using packaged builds of the xcode toolchain which, as someone else mentioned, apple has to provide as it's open source. Homebrew itself is pure ruby, which is already part of the OS.

It could be done as part of the homebrew install process. This would be a step forward for everyone. Most OS X devs use homebrew anyway, and for those that don't use xcode this would simplify things a lot.

I hate downloading that massive DMG. I can't even use wget easily because I have to be authenticated. Who cares about what apple decides to do or not do with the tools the community developed for itself? That's what the licenses are for, people. So we can look after ourselves.

If there was a package manager for os x that shipped binaries we wouldn't be in this predicament either. brew building from source is just as much to blame as os x not shipping gcc with default install.
(comment deleted)
The gcc version is, for all intensive purposes, identical.

"for all intents and purposes"

Also heard in the corporate world: "The ownness (sic) is on you" (onus).
(comment deleted)
Argument kinda falls flat. For starters, Xcode 3 is still free, at least for now. No need for Xcode 4.

Also, I'm certain that someone will package gcc for mac sooner or later now that there's an incentive to do so. There has not been much incentive to do so before now since it was included with Xcode.

I wasn't arguing that Xcode is expensive. I'm arguing that the barriers to entry are pretty offensive if you need the capabilities of only gcc. An hour-long process involving credit cards isn't very nifty.
It doesn't involve credit cards as xcode 3 is still freely available. If Apple does not include the developer tools on the Lion DVD, and if they remove all free versions of xcode for download, then I don't doubt someone will package up the "build essentials" for OSX and make them available. To date there has been no reason to do this, but if there is a reason, there is nothing preventing it that I am aware of.

edit: though I agree a smaller "build essentials" tool chain would be nice, but that was the case before you had to pay for xcode and nobody has bothered to create one. I can't think of a reason why it wouldn't be possible, only that it's probably not worth the hassle of setting it up and maintaining it (though Apple doing it would be excellent).

Xcode 3 doesn't solve the issue of it being a real pain in the butt to install. gcc by itself is much, much smaller and much less of an issue for a casual user to install.
Isn't it on the DVD that came with the computer? Double-click to install..
(edited my comment before I saw your reply)

I agree that a smaller (and free) tool chain would be great, but so far as I know there is nothing preventing anyone from making one.

Related, I realize it is now the case, but when did casual users start needing gcc? Time was, in my pre-OSX days, compiling things yourself if you weren't a dev was seen as somewhat pointless, you just get thousands of users all building the same binary instead of building one binary to be downloaded by thousands of users...

(comment deleted)
I have installed new versions of gcc on Linux systems. Installing XCode is much, much easier.

But, your point was about developers. When did casual users come into the discussion?

There's a scale of developers: from people who regularly do this sort of thing, to people who are more casual about it. That's the type of audience that I like to write for sometimes: they'll use my library (which may use compiled code), but they haven't been exposed to this area of software development before. Designers are the best stereotype for this. Having a massive Xcode install is what I'm saying is detrimental to these sorts of casual users (a lot of the time it wouldn't be appropriate to call them "progammers", really).
It's friction, but, really. It came with their computer. You click a bunch of buttons and it's installed. The size of the install is irrelevant.

But I still have difficulty believing these casual-developers-but-not-programmers exist in great numbers. Have people told you "I was going to try your thing, but it asked for this weird gcc thing"?

Absolutely. I run into that frequently with my own projects. It's such a bummer to have to tell someone to go through this whole process for such a small `gem install` command.
Anyone who hits the need for gcc is no longer a casual user by any average use of that term. A casual user rarely moves past opening a .dmg or .zip with an installer pkg.

A casual developer might be a different class of user ... but anyone who hits the point of writing code & installing libraries instead of applications has adequately stepped outside the role of user.

And even granting that, it is still not a firm enough basis on which to argue such an inflammatory statement as "OS X is not for developers"--when the casual developer is far better served by OS X's included toolchain than s/he is going to find in a default installation of Windows/Linux counterparts.

OS X is not "for" developers when it begins removing the tools that create the lowest barrier to entry for casual development I've seen in a default OS installation in the last 10 years (except maybe Gentoo Linux, one of the most "for developers" systems I've had the pleasure of using).

I define it as a casual user of my libraries. Designers are the best example: they're usually hooked into the development world and would be interested in a clever command line tool, but they normally don't have an entire build chain under their belt.
In my neck of the woods, a designer's tool chain rarely extends to anything outside Adobe tools. That's what developers are for ;)
I'm a designer, and a "user" of software, and I use several terminal commands on a regular basis. I don't consider myself anything approaching a "developer," but I code a little in Ruby, Javascript, etc. It's semantics, sure, but when you draw hard lines around what people are and what they "need," you potentially limit a lot of blurrier, less-stereotypical scenarios. And how is a designer (or a child, or a business-person, or a manager, or whoever) supposed to cross that mystical threshold into beginner developer if the tools are behind a financial or obfuscatory barrier?

I think that's the main argument. Getting started with command-line tools and developer-type stuff should be as easy as possible, so that people can try new things and break stereotypes and do more than they thought they could do.

That totally outside the scope of this issue, though. If you feel that having to install Xcode to get a gcc install on a Mac, that's fine, but that's the way it's been for a while now. Apple charging for Xcode 4 didn't change that.
What part of "XCode 3 is still free" do you not understand?
I was more reacting to the common argument that "$5 is not expensive". My apologies if that's not what they were addressing in this comment.

That said, Xcode 3 doesn't satisfy the requirement of being easy or quick to install for a casual user.

What isn't easy about installing from the disc given when you bought the mac? Don't have a your mac discs anymore? Download it or borrow someone elses. If you don't want the extra crud of iOS firmwares, disable it. To be honest it's quite "easy" to install for any user.

Quick on the other hand, how many 4.5gb installations are quick?

FWIW, it doesn't come with the new Air models.
I think the point wasn't that a 4.5gb installation should be quick. It was that it shouldn't require a 4.5gb installation if all you want is gcc. More like a 50MB installation.
What's this rubbish about Xcode 3 being hard to install? It's on your OS X CD. From there on, it's just a one-click install process. Even if you downloaded it, the process is the same. If a developer can't be bothered to do that, then they probably dont give a damn in the first place.

Casual users =/= developers

What it comes down to is a question of principle. The argument that development tools should be free and readily available is a principle of software freedom.

I don't want to paint this as black & white, because things rarely are, but on the continuum of free (as in freedom) vs non-free, you'd have to live in a cave on the moon to still cling to the idea that Apple is anywhere near the free side of the scale.

You, as a developer, have to make a decision about how you will support your principles. Apple has certainly made theirs. They view their entire platform as theirs to do with as they wish. That is the anti-thesis of freedom. Do not expect this to change.

Honestly, every time I see one of these articles with even a hint at criticism towards Apple, I cringe slightly before I click the comments link...because I know what's coming next. Not that you care, but I'm also tired of Apple hi-jinks, T's & C's, and just general unfriendliness toward devs and I'll stick with Win7/Ubuntu from now on.
Right, because Windows comes with gcc?
Last I checked, Visual Studio was WAY more expensive than $5.
VS 2010 is free if you sign up for their webspark program http://microsoft.com/web/websitespark/ -- so is MS Windows Server 2008, SQL Server, etc. Look, I'm no MS proponent. I'm an independent developer and I use all platforms, all tools, all languages. If you fellas watch the news, this URL is kinda like the Fox News of Apple fan-boi-ism. Fair & Balanced...it is not...tiresome...bah, let the downvotes begin.
You can download application and device driver SDKs which come with command line C++ compilers at no charge. Pretty much the same compilers MS uses to build the OS itself and its own products.

There's also a no charge "express edition" of the IDE, but it was heavily crippled last time I checked.

Perl, Python, Ruby, rails…
Do you think Xcode 4 will become free at some point? What happens when Xcode 3 is no longer supported or sufficient?
Yes. When Lion is released.
Free with Lion, or free by itself?
That's a moot point, because once it's free with lion, then it might as well be free by itself. Apple does nothing to prevent piracy of its dev tools.
Sure, anything's free if you choose to pirate. I was just wondering if they'd make it free for people who don't upgrade to Lion straight away.
Every version of XCode I've used has required the OS it is installed to be the latest one. 3.2 required Snow Leopard, 3.1 required Leopard, and so on and so forth.

4 might not require Lion but you can guarantee that 4.1 definitely will.

gcc version is the same as Xcode 3. Xcode 3 is free at developer.apple.com
I don't understand? Can't you release the ruby gems or whatever it is as binaries? You only need to spend the $5 if you want to change something, right?
Gems that use C extensions generally build them using native libraries.
That sounds fixable.
No, it's not even remotely fixable. If your extension requires natively compiled code for speed, you need a compiler, period. Going back to forcing developers to cross-compile binaries for every OS under the sun is not what I would call a fix.
No one's asking anyone to cross-compile binaries for every OS. You compile binaries for the few important platforms and provide source for the rest. As I mentioned in my other reply, open source projects have been doing this for a long while.
Almost every open source library on my Mac is compiled from source. Name your system: homebrew, ports, fink, they have all switch to compiling from source.

Every scripting extension repository I know assumes you have a compiler to compile native libraries for extensions.

And this has been true for "a long while". The change you are proposing is not trivial, and it has far-reaching implications. It is a step backwards, and one that every developer should oppose.

The end-user needs to have build tools installed on their system if your library uses C. Same for if you want to install some standard system packages like ImageMagick.
... or, you could just ship a binary instead.
Or ok. And what about your dependencies? Let's say you have a dependency on a library that is not shipped with OS X, what do you do? Link it statically and see your tiny gem becoming a monster of a few megabytes? Or do you simply link it dynamically hoping that somehow there will be a binary with the right version lurking somewhere for the user to download. Yeah, that's what happens when you develop OSS for windows. Or do you rely only on native windows libraries that you know will be there for sure, or do you have to compile against the latest version of the library you want to use that happens to have a binary available for windows users to download. Or then, you resort to some strange things like cygwin, MinGw. But didn't we all complained about that when windows was the only somewhat userfriendly OS out there? Didn't we all complained about how much it sucked that you couldn't have a free C compiler chain on windows. Well, now at least on windows you can download the Windows SDK and build code without Visual Studio. If and when Microsoft Windows C/C++ compiler, linker, docs, libs and headers are updated you can have a fresh and free Windows SDK download without having to shell out money to buy Visual Studio, would it be so difficult to apple to unbundle GCC toolchain from XCode and make it freely available?
Yeah, why not just ship binaries? Needing to install a compiler separately seems like far too high a barrier already.
Because then you'd need to ship binaries for every conceivable platform that your gem could be used on and you'd need to make some pretty fundamental changes to the whole Ruby gem distribution system (this probably applies to other languages and their libraries too).
Because then you'd need to ship binaries for every conceivable platform that your gem could be used on

You don't. You ship binaries for the top 2-3 platforms and provide source for the rest. That's how open source projects have been doing things for ages.

and you'd need to make some pretty fundamental changes to the whole Ruby gem distribution system

Meh, it isn't insurmountable.

You ship binaries for the top 2-3 platforms and provide source for the rest.

I wish it were that simple, but then you also have to worry about library versions (unless you really want to bundle all your dependencies too, bloating your little library from 10KiB to tens of megabytes, or more).

Also see this reply: http://news.ycombinator.com/item?id=2311455

Meh, it isn't insurmountable.

Yeah, because forcing a huge infrastructure change is what we want to do for the sake of having poor GCC distribution on OS X.

You have to deal with dependencies already. In fact, today you have to compile the dependencies. Why isn't downloading their binaries a simpler way to do it?

Whenever I type "{brew,port} install X" I spend the next few minutes watching a compile and muttering "why? why? why?".

You have N packages and M platforms.

For a well-organized ruby gems system, they're largely orthogonal (N + M resources).

Per-platform binaries expend resources proportional to the cross product (NM resources).

You also have to set up and maintain automated build systems for every platform and they form a whole additional set of dependencies for shipping every little point release.

Avoid it whenever possible.

edit: I always did think N should come before M

If Xcode 4 is on the Lion disc, I think we're all going to be juuust fine.

If it's not, I agree. Fuck. Until then, we don't know!

What a lot of people seem to miss is that Xcode 4 is still a free download on http://developer.apple.com/xcode/ for members of the developer program (which is a free membership).
Free ADC members still have to go through App Store and pay the $4.99.
Xcode 3 is free, but not 4. Either the developer program, or $5 on the app store.
No, this is wrong. A developer login is free. The developer program costs $99 a year.

You cannot get XCode for free unless you have ponied up your $99.

"for members of the developer program (which is a free membership)."

no, it's only free for members of the paid developer program. free members who try and download it are given a link to the appstore or an option to purchase the yearly membership.

I think the $5.00 is to deter the average user from seeing a free App made by Apple and downloading it, eating up significant bandwidth
...and then calling the support lines asking "why is my disk full?"
Then why not offer the download for free on developer.apple.com and charge the 5 dollars for the convenience of using the Mac App Store?
For many types of development, there's this:

http://vagrantup.com/

It makes VMs free and easier. It uses VirtualBox, an open source VM environment.

This.

We've got a mixed team of Ubuntu/Macosecks people, and _nobody_ does actual development work on OS X any more. It's a lot more convenient if your development environment matches your deployment environment. Working otherwise is swimming upstream.

Requiring an exact match between deployment and development is swimming upstream, as you'll quickly introduce unintentional dependencies on specific facets of your host OS.

Plus, having to use VMs for development is even worse, why slow yourself down with non-native tooling?

The way you phrase this makes it a pain to debate, to I'll try saying it a different way first. You give two reasons for not developing inside VMs:

* It forces you to deal with different configurations, which results in being able to move between systems more easily. * It's slow.

The problem with your argument about dependencies is it invites distraction. The cross-environment difficulties don't happen when you control; they happen on their own schedule. The proper way to make sure things are portable is to have a process for it.

As for the performance thing, that may or may not be an issue. It's not wise to just assume it's going to be an issue. Usually a VM is fast enough for development.

Isn't the llvm toolchain a free download, and doesn't it offer a gcc front end?
I don't get it. What's wrong with "sudo port install gcc46 ruby19 ruby186"?
Because requiring yet another third party tool is just an extra barrier. And not everyone uses MacPorts anyway, personally I don't want to see MacPorts anywhere near my computer...
Not to mention you need GCC to build GCC
Well,you would need some C compiler. You could build FCC with clang.
Assuming no other available build toolchain (e.g. Xcode 3), you won't have macports installed. How will you compile gcc, ruby if you don't already have a compiler?
Well, I'm pretty sure gcc can bootstrap and self-compile, but I don't know if macports is setup for that.

edit: apparently it's not self-compiling, at least not in the way I was thinking.

Even gcc is not that metacircular. There needs to be some compiler at the bottom of the bootstrapping.
You need an initial compiler for the boostrapping process.

Obvious question: how did the first C compiler exist, then? Answer: it was implemented in assembly. And the first assembler was written in machine code.

It's been long enough that I can't edit what I wrote, but I forgot my history. The first C compiler was grown by modifying a B compiler that was implemented in B. That B compiler, however, was originally implemented in assembly: http://cm.bell-labs.com/cm/cs/who/dmr/chist.html
It kinda makes you think. If we delete all compilers in the world, there would be no easy way to make new compilers. It also means that your compiler on your PC can trace its heritage back to the first machine coed compiler ever written, like life itself evolving from one generation to the next.
You're basically just saying that if you delete all copies of X software in the world it would be really hard to recreate X software.

Anyway, writing a C-- compiler in x86 ASM isn't really that bad. It'd probably be even easier to run the compiler in an interpreter.

I was thinking of a similar orign-of-life analogy, but unlike life, compilers have sprung up independently of each other many times over. That is, in the early days, it was common to implement everything over again in assembly on a new machine.
Got it...thanks. I didn't get that he was talking about the bootstrapping issue.
> You still won’t see PHP installed on Windows any time soon.

Not preinstalled because that would be undesirable, but http://www.microsoft.com/web/downloads/platform.aspx makes it pretty painless to install PHP and a whole whack of that style of crap.

Is there a real problem here? It seems like any compiler would do for the problems you're talking about. Yes, someone needs to package it, but I don't see that it really must be Apple.

In the past these kinds of midstream Xcode upgrades were only available to registered developers. So other developers should be grateful that this upgrade is available at all this time. And if 5 bucks is too much for you then I guess you'll just have to continue to use Xcode 3 and wait for Lion.
Compared to what other platform? Windows? Developer support out-of-the-box on Windows?

Linux, sure, but Linux is since its inception a developer's OS. Mac OS lies somewhere in between. There are many happy developers running OS X, and paying $5 for XCode doesn't make me mad enough to rant. Dude, it's $5. You paid nearly that for Angry Birds.

I'll pay $100 for Xcode and not use it and not even care. We're not the point. It's the casual users that want to get into a library that I'm concerned about. That want to use a C library on their machine. That want to use ImageMagick in their PHP site. Those are the ones that an unavailable gcc hurt the most.
It's the casual users that want to use ImageMagick in their PHP site?!

No offence intended, but I think we have different definitions of "casual user"...

(comment deleted)
Apple's gcc is freely available and open source. If you have a specific reason for non-programmers to need a C compiler on their machine, you can even make an installer for it.
(comment deleted)
Not every non-US developer have a credit card. Particularly if you are talking about young students. Windows SDK (That means: Compiler, Linker, Libs, Docs and Headers) is a free download from MSFT site. You only pay if you are a masochist and want to use Visual Studio.
It will make me mad IF Apple does not release Xcode outside the fucking App Store. I do not care paying for an IDE, that I do not use, but I still want a compiler, some assemblers (nasm and gas), and a working linker.
It's a ridiculous argument, first of all that $5 would deter anyone, secondly the clang/llvm binaries are available freely, which is the default compiler in Xcode.

http://llvm.org/releases/download.html#2.8

GCC is freely available in source form.

> GCC is freely available in source form.

But of course, source code is useless to you if your computer has no compiler.

I was pretty sure that at least part of Holman's argument was that Apple could easily do all of us a favor and just ship with gcc pre-built. ("All of us" meaning the devs who do all this for a living as well as the casual coders who might want to install a Ruby library with C extensions.) How would that possibly hurt Apple?

Then compile it with llvm (if you absolutely must have GCC specifically), llvm is the new default compiler in Xcode. The link above has binaries both for clang and the GCC front end.

Xcode 4 is still a pre-release, normally Xcode comes with the default OS X install disk. To make it available to non paying developers, it's been put on App store just one day ago. This is not a present problem, only a hypothetical future problem. That is another reason the argument is ridiculous. Apple do ship GCC pre-built, it's on the OS X install disk.

Then compile it with llvm (if you absolutely must have GCC specifically), llvm is the new default compiler in Xcode. The link above has binaries both for clang and the GCC front end.

GCC is still the default compiler; Clang is still immature.

Just a correction.

As far as I observed in my coworker Macbook gcc still is the default compiler in Xcode 4. Just compiled some software with it today, and it pops a lot of gcc's in ps aux.

If you spent 1% of the time you did writing this article researching your misguided accusations you would realize that xcode 4 is free and downloadable for registered (free to register) Apple Developers.

Exactly like most Apple tools. It's frustrating seeing all these people accusing apple of charging for XCode when it's really no different than before.

(comment deleted)
This doesn't actually seem to be the case. I just logged in to my (free) Apple Developer account and got the following message:

-- You must be an iOS or Mac Developer Program member to download Xcode 4 or you can purchase Xcode 4 from the Mac App Store. --

According to http://developer.apple.com/programs/ both the iOS and Mac Developer programs are $99 per year.

And you tried logging in with a free account and getting it? Didn't think so, because if you had, you would have kept quiet.
If you spent 1% of the time you did writing this comment researching your misguided accusations you would realize that xcode 4 isn't free and downloadable for registered (free to register) Apple Developers.
I'll toot my own horn and say that I saw the writing on the wall 4 years ago and moved to Ubuntu. Best decision ever. I lack for nothing. Apple is the new Sony - no thanks.
It's also possible that Xcode 4 is only on the App Store because Lion is going to be on the App Store, and people who buy a physical copy of Lion will get Xcode 4 on the disc.
It’s possible that this will change before OS X Lion ships, but it’s still a troubling prospect today.

Why is this a troubling prospect today? The Developer tools you need are on your install disk. You did buy the operating system right? Just install them. If you don't have the disc handy at least you have the option of downloading it for free.

You're arguing that spending AN HOUR of your time is offensive. Think of everything you DON'T have to do since it's built into OS X. If that doesn't convince you, then yeah, OS X isn't for YOU - not Developers.

No, he's arguing that asking somebody else to spend an hour of their time to install a gem is placing extra barriers to people experimenting with the software that came with their computer.
Which is where he loses me. If that person wants to deal with gcc, they're not casual, and spending an hour grabbing latest libs and tools is how they roll, Xcode or no. Any time I'm on CPAN I end up updating 50 other things and 3 hours later wonder what I was looking for in the first place.
I think the point might have been that there are some more casual uses (homebrew, rubygems, python eggs, etc) that aren't as hardcore as writing c but that have gcc as a dependency.
Installing Xcode to get gcc was already a requirement before this. I really don't understand the argument.

Funnily enough, I've never heard anyone mention it before this whole ruckus, even though installing Xcode was a requirement to get gcc in the past. No one has taken the time to build it themselves with the source that Apple gives out for free and host it for those that don't want to install Xcode.

I disagree with all of the OP's points, except for one. Yes, Macs are incredibly popular with developers.

1) The reason I have always liked Macs since I was a kid is they basically come with what they need, and its easy to install extra stuff if you need it. Just because many developers like Macs doesn't mean that most Mac owners are developers. Most are just normal people who would wonder what is eating up extra space on their hdd.

2) It is absolutely not a burden to install the dev tools. There's absolutely no need to include gcc or the other dev tools by default. Non-developer folks almost never open the Terminal, much less compile their own software.

3) At most, I have to download the latest version of Xcode every 4-6 months. Yeah, she's a fat beast of a .dmg, but downloading and installing doesn't take up more than a few hours a year. Say that for Visual Studio or Eclipse which aren't as polished in some aspects, crash frequently, or run on platforms that crash frequently. (I'm not saying that VS or Eclipse share all 3 of those properties, and the crashing bit refers to Windows).

4) Its been demonstrated many times that Apple charges these $5 fees for previously free tools and applications because of SOX compliance laws. Apple has been providing their dev resources free for years. They are not hurting for cash and this isn't a money grab. They're at their all-time height of profitability, developer influence, and customer and market reach. Its rather obvious its about SOX.

I don't understand. What does an accounting compliance law have to do with charging for previously free tools? And how were they able to release free tools in the years after 2002? What makes 2011 so special that they are compelled by law to start charging $5?
OS X ships with XCode. Apple has never released a major XCode upgrade in-between OS releases until now.
What about iTunes? Why don't they have to charge for iTunes?
You make a great point; there appear to be some contradictions in their accounting policies. The "App Store" didn't come with OS X, but was free. iTunes and Safari get major updates all the time, yet remain free upgrades. On iOS, you have iBooks, Remote, Find My iPhone, Apple Store, MobileMe Disk, and MobileMe Gallery, all free.

We're not sure what the litmus test is for their accounting practices. We're not even sure if Xcode falls into that category (e.g. maybe they're charging $5 for it now because they want to). It would be nice if Apple shared their accounting algorithm as that would clarify things.

Business Decisions != Accounting practices

Can you seriously imagine Steve Jobs being told they he has to charge for something he doesn't want to because of accounting practices?!

Because the whole "SOX accounting theory" is made up by people who don't know what they are talking about.

In its defense it was initially put forward as speculation ("what about this theory"), but now is being taken as fact.

It's the theory for xcode based on Apple claiming it was the reason to charge iPod Touch users for iOS 2 or 3 (I forget which). IIRC.
SOX became the trendy IT excuse for anything.

As an example from a few years ago, when I hired a contract developer, the company required a "Contractor Request Form". Fine. There's payroll to setup and so on. But then one day the form was renamed to be the "Contractor SOX Compliance Request Form".

I suspect this exercise was only so that some bean counter could show the outrageous costs of "SOX compliance".

If you know what you are talking about then you'll be able to tell us the reason why it can't be true.
Good question. My guess is it depends on what components Apple officially accounts for as being parts of OSX. Keep in mind Apple was under investigation by the SEC for many years so they are probably following the rules extra carefully. After the SOX rules were changed last year (IIRC) Apple immediately changed some of their accounting practices to provide free iOS updates for the iPod Touch so I tend to believe them.
Perhaps because they can claim iTunes, because of the iTunes Store isn't an end-product so much as a platform upon which people make purchases. They can account for the revenue from the greater iTunes app through each purchase you make in the store. Same goes with the App Store.

Not sure how they deal with people who never purchase anything, but perhaps they don't have to be 100% thorough about it.

Previous major upgrades to XCode released with new versions of OSX and required that newer version to install/run. OSX 10.7 (Lion) has not released yet, so upgrading from 3.6 to 4.0 (Major upgrade) is not considered a maintenance release by Apple's accounting department. Paying members of the Apple Developer network subscribe ($99 per year) and one of the benefits is access to Beta releases of OS and tools. XCode 4.0 was available to members of the Developer network prior to this official release, and after the release, non-subscribers are given access through the App Store. Apple is in no way preventing anyone from developing for Mac at this point since XCode 3.6.5 is still available for download and installation by any users of OSX 10.6 (Snow Leopard), and as evidenced by the availability of the iOS 4.3 SDK for XCode 3.6, they are not forcing anyone to upgrade to the new IDE just to develop for their various platforms.
Ok, but where in this scenario do the SOX compliance laws compel them to charge money for a "major upgrade"?
The problem is Sarbanes-Oxley requires compliance with certain accounting practices (to be set by regulators; these are not spelled out in the act). I'm not an accountant, but as I understand the problem arises in this situation:

2005: Company X sells product Y to person Z for $1000. Company's books show $1000 in revenue. 2006: Company X gives Z a free significant upgrade to product Y and records no revenue.

The argument could be made that what really happened was that the company actually made two sales to Z; one in 2005 and one in 2006 and that the revenue of $1000 should properly be split across the two years.

Not having such a rule apparently allows various accounting shenanigans in which totally unrelated things are treated as "free upgrades" to something else and revenue can be booked in whatever year you want.

So there are two important things here for all this to be an issue: 1) The initial purchase must have cost money. If you get something for free and then get a free upgrade to it, there's no problem. 2) The magnitude of the upgrade must be such that one could be accused of slipping an unrelated product in as a "free upgrade".

So for example security updates to safari would fail test #2 above. Major updates to iTunes may fail test #1, since iTunes is generally available for free to everyone (even if you don't buy a Mac or MacOS).

It's possible that something makes Apple's accountants feel that XCode is part of the OS in a way that means that when you pay for the OS you're also paying for XCode. And that XCode 4 is enough of a change from XCode 3 that if it were free it would fall afoul of the accounting stuff above.

Again, I'm not an accountant, so I could be getting all this totally wrong...

So, what you are actually saying, is that this is the cheapest major upgrade to XCode that's ever been released?
The following was said about Apple charging to unlock 802.11n in MacBooks.

Why don't they give it away for free, say with Software Update? Because of the Sarbanes-Oxley Act (which was passed in the wake of the Enron scandal). iLounge quotes an Apple representative: "It's about accounting. Because of the Act, the company believes that if it sells a product, then later adds a feature to that product, it can be held liable for improper accounting if it recognizes revenue from the product at the time of sale, given that it hasn't finished delivering the product at that point."

> Its rather obvious its about SOX.

To you, but obviously not to a lot of us. Please explain.

Yeah, I hear the "it's about SOX" comment a lot, and I hear the "it's about greed" comment a lot, neither of which make any sense to me... I'd love to get a real explanation.
The sox comment has been explained in numerous places. Basically because Xcode comes with a purchase of a new Mac or OSX it's considered to be part of the value delivered with that purchase. If they update it later, it is regarded as delivering additional value to the original purchase. I.e. Some of the money you paid originally is accounted as having paid for the upgrade. This means that the original transaction wasn't complete until they delivered the upgrade. This means that Apple can't record all of the 'incomplete' transaction on their balance sheet as revenue. They could work around this by holding back a percentage to cover later updates but this would be stupidly complicated and they'd still have the problem of not being able to declare it complete until they were certain of never shipping any new update. Much easier to just charge a nominal fee.

Obviously this seems like a Byzantine regulation, but it's not aimed at Apple - it's intended to stop certain kinds of fraud involving counting money received as revenue even though there is still a lot to deliver.

As for 'it's about greed' - well they do make a lot of money and that leads people to accuse them of greed. It's just a subjective judgement.

I don't buy the idea that SOX prevents 'loss leaders.'
Who said it did?
If XCode can't be 'given away' then I would say that SOX is preventing loss leaders, because that is essentially what XCode is. They are giving away the developer tools in an effort to attract developers to their platform. At the most basic level, it's not much different than advertising 'free after rebate' items in order to attract customers into your store.
But they did't give it away. It was part of the Mac people paid for. They are perfectly entitled to give stuff away. What they can't do is retroactively claim that part of what they sold you before was free.
Per your point #3: I spend a lot of time in both Windows 7/VS2010 AND OSX/XCode (along with a smidgen of time in Ubuntu as well) and crashes are just about a thing of the past in all three environments. That said, Xcode/OSX gives me the spinning beach ball of death at least as much as I get a crash to desktop in W7 and far, far more often than I get a BSOD in W7. The idea that windows crashes a lot is a myth hanging around from before they went to the NT kernel in XP. Granted, it's a myth that was well earned in the Win 3.1/9x days, but still. The reality is all the major OS vendors (I'm including Canonical here) have reduced crashes to maybe a once a week occurrence or better. Hardly an issue anymore.

As for the polish comment, it's really a matter of what you're used to and strictly a matter of opinion, but I find Xcode a nightmare to navigate compared to VS2010. Sure, Xcode is shinier and looks better, but the UX is far superior in VS2010 (again, just my opinion). I'm very much looking forward to a single window interface in Xcode 4.3.

As a developer, the killer aspect of OSX to me is the full blown *nix environment paired with high level commercial apps (like Xcode, photoshop, garage band, etc.). Not to mention I don't have to worry about my display card or wireless card working in OSX (like I still have to do with Linux).

As for the polish comment, it's really a matter of what you're used to and strictly a matter of opinion, but I find Xcode a nightmare to navigate compared to VS2010. Sure, Xcode is shinier and looks better, but the UX is far superior in VS2010 (again, just my opinion). I'm very much looking forward to a single window interface in Xcode 4.3.

Oh dear - you haven't been using the multiple-window layout in Xcode 3, have you? The single window layout is the only way to be productive.

Update: wow - I got downvoted for saying that? Someone must really like the multiwindow layout. If that's you, and you don't want to pay the $5 for version 4, have a look in View->Layout in Xcode 3. Try the single window layout. You'll like it. Really.

I'm definitely going to give it a look. For some reason I thought the single window layout wasn't coming till this version.

The multiwindow layout wouldn't be so awful if OSX were better at windows management && I had more than one monitor to work with on my iMac. As it is, it's a struggle for me.

Oh, and who knows about the downvotes. I thought for sure I'd get nuked for defending VS. Have an upvote.

I didn't downvote you, I can't downvote, but I like the multiwindow layout because then it's very easy to use an external editor in place of the Xcode editor. I liked using MacVim or TextMate when I first got into iOS development.
Xcode 4's single window interface is a huge improvement, IMO, even though I haven't been able to get my old project to package up yet... "schemes" and "run destinations", oh my.

But I know once I figure it out, it will be better.

Quality is in the eye of the beholder. That being said, my Windows 7 workstation crashes at least once a week, as does Visual Studio 2010. I just checked my uptime in my OSX workstation and it has been up for 52 days and I've just had one instance where Xcode crashed. In my eyes (and in my experience), Windows is just not as stable as an OS for development, although it's a lot better than the past crap they've released.

UI wise, I hate VS2010. In my head I cannot fathom why you would say it's UX is better than Xcode, but once again that's personal preference and opinion, which is - of course - respected. I always say: "Use whatever you need to get the job done..."

I do agree completely on what the actual allure of OSX is. My past platform of choice has been Debian, and I always thought it was painful to have to dualboot to be able to do my work (specially when on the move). Enter OSX, which gave me all my unix tools and also runs Photoshop.

I usually don't defend Microsoft, but I don't think your unstable workstation is the fault of Windows 7. Most likely it's a problem with one of the drivers, or maybe even a hardware issue.
Well, my other coworkers (some are windows fans, linux fans, osx fans, and one is a total freeBSD nazi) all agree that out of all our workstations, the Windows machines fail the most. Even the Windows fans acknowledge this. All other operating systems almost every time recover from errors (be them our errors or random errors on the OS side) without much trouble, while the Windows machines generally just blow up and need to be re-started.

Don't get me wrong, I do almost all my programming these days in VS2010 and I think it's a pretty decent piece of software (as is Windows 7), but it crashes more than any IDE I've ever used and the UI is just totally subpar. Windows 7 is a huge step up from Vista an XP, but I find it's nowhere near as stable as XP was. Our situation is not a hardware or driver issue, everyone had their preferences on which machines to buy, so they're all different machines.

All your points go off at a tangent to the original article.

1). Author doesn't claim that most Mac owners are developers. He attributes "a large part" of Apple's success to recommendations that began with developer mindshare.

2). It's not a burden to use the dev tools if you plan to use the dev tools, but it's a burden to install something on the scale of Xcode if some other tool you want to run just depends on the basic gcc toolchain.

3). For the author's points, you're not comparing Xcode installation to installing visual studio, you're comparing it to '[package manager] install gcc'.

4). Article author's preferred solution is not to stop charging, but to have a separate gcc package.

It boils down to the author thinking Macs would be more developer-friendly if more essential build tools (as opposed to developer tools, if you will) were bundled with the OS. It's an interesting point.

But they are bundled with the OS. They're just not installed by default.

Personally, I have a Mac, and I installed XCode for gcc. I've never used XCode itself. I did not consider it a burden; I did it once, over two years ago, as a part of setting up my MacBook. I have not thought about it since. Optimizing something that I do once everytime I get a new computer is of marginal value.

Its been demonstrated many times that Apple charges these $5 fees for previously free tools and applications because of SOX compliance laws... Its rather obvious its about SOX.

No, it's not at all. The only "evidence" for that is a bunch of uninformed developers speculating about things they know nothing about.

OTOH, there is quite a bit of evidence that this isn't the case:

1) Why didn't they charge before? They've used the same accounting standards since the iPhone was released, so if they "suddenly" discovered they'd been doing the wrong thing, they can't just fix it going forward. At the very least they would need to make a statement to the stockmarket they had discovered a problem.

2) There are a huge number of companies that have similar accounting practices to Apple and yet manage to give away their tools. RIM & Nokia are two obvious ones.

3) It would be trivial to work around the problem, if there were one (which I don't believe there is). For example, they could spin off developer tools into a wholly owned operating company that would receive income from Apple and release free tools. The accounts would be separate, and this wacky SOX accounting theory would not apply.

Edit: 4) (from further down the thread): Why don't they charge for iTunes?

I don't know why Apple pulled this move, but it's not about SOX compliance.

Edit 2: I think I might be wrong on this: http://news.ycombinator.com/item?id=2311934

Just a law student, but I can buy the SOX thing. Companies have very different approaches to compliance, get advice from different counsel, account for things in different ways, etc.

I feel like there is a Occam's Razor argument in here. What purpose besides SOX could Apple have in not giving away XCode 4? Could be pure greed as others are saying, but when Apple wants to make money they're incredibly good at it. How many people are going to download XCode? Tens of thousands? Apple might stand to make, what $100k off the venture? If they were really trying to monetize XCode why would they price it so they don't make any money off it?

They why $5? Why not 1c, or 99c, or make it $99 and include a year's membership?

I said it elsewhere, but I'll say it again here: can you really imagine Steve Jobs agreeing to charge for something he didn't want to charge for because of accounting practices?

When the have the force of law, and when they've been burned in the past, absolutely.
Given that the guy was personally in the hot seat a few years ago for an option backdating scandal, yes. I can imagine him agreeing to this.
You know what?

I think you might be right and I might be wrong on this.

After reading how Apple pulled this previously (on the iPod Touch upgrade) I now think it's possible they may use SOX as justification for this more.

I still don't think it's good a justification, and I still think Apple could have worked around it if they wanted, but yeah - you are possibly more right that I am.

(I know admitting you are wrong on the internet is unheard of, but Strong opinions, weakly held & all that.. )

The SOX rules are about products. Developer tools are a service that repays OS sellers in their being used, because without tailoring the tools developers use, they lose influence on the direction that

Lawyers are good at scaring people, but the SOX thing sounds too much of a stretch for something that is not a revenue item. Charging for it will complicate the accounting. I guess they want to simplify the way they run the ADC.

You could always get the dev tools for free* because they always came with some other purchase. That seems like it would cover the "SOX" compliance to me.

Examples: you bought a copy of Mac OS X (the dev tools were in the box), you bought an ADC membership (dev tools are included with your membership). Now, XCode 4 from the App Store is the first time you could get them standalone. And they charge for it.

Updates used to be free as well.
Only minor updates. Major updates were always bundled with new OS versions. If memory serves, Xcode 3 shipped with Leopard, Xcode 2 with Tiger, etc.
Dude. Calm down, you can download them for free, FREE! A developer.apple.com with a FREE account
Say that for Visual Studio or Eclipse which aren't as polished in some aspects, crash frequently, or run on platforms that crash frequently. (I'm not saying that VS or Eclipse share all 3 of those properties, and the crashing bit refers to Windows).

I've never used Xcode, but I do use Visual Studio everyday, on Windows 7. In the 5+ years I've been using Visual Studio I've been very happy with it as an IDE. Prior to 2008 there were definitely some quirks and stability issues, but as of 2010, I very rarely encounter any issues. I have lots of unix experience, and I can honestly say that Visual Studio is an excellent piece of software, and a pleasure to write software with.

As for your point about Windows crashing, I've never once seen Windows 7 blue screen or become unresponsive to the point where I had to reboot a machine. Disliking Microsoft and Windows are fine, but without some real evidence that Windows 7 is less stable than OSX, or any other OS I think this is a baseless claim.

You've used Windows 7 for 5+ years.
He said he's been using Visual Studio for 5+ years, not Windows 7.
Hmm I am pretty sure that was what it said when I commented. But I might be wrong
(comment deleted)
It's a legitimate point, but the linkbait title just irritates me. This is something that developers only have to deal with once every year or two. $5 is not a lot of money for a 4.5GB development package, regardless of whether you think it should be free. It certainly shouldn't be any kind of tipping point in platform choice for developers.
> It certainly shouldn't be any kind of tipping point in platform choice for developers.

It won't be. After the usual anti-Apple trolls have had their say, everyone will have forgotten about this phony "controversy" by next week.

I don't think so.

The article makes a very valid point that people download XCode not because they care about Mac/iOS development, but only because Unix systems assume you have a compiler available as part of the software installation process. Folks like Ruby developers and MacPort users will not be happy to have to pay $5 to install something, when the equivalent Windows binaries are available for free.

This is going to cause major disruption in how certain Mac software is distributed. The problem will not simply "go away" as trolls are distracted.

Most likely Macs will move to a Macs move to a Windows-like model of binaries instead of build-scripts. However, someone could recreate the Mac toolchain and distribute it for free in an easy to install package. That's a lot of work to save someone $5 however, so there will be a lot of bitching-and-moaning in the short term.

(comment deleted)
Steve Jobs wants me to sign up for his service and give him $5 for the privilege of downloading 3.5G to get gcc on my computer now. Didn't we see this coming?

http://www.jwz.org/blog/2002/10/oh-bitty-box-how-youre-grown...

"So rzr_grl had a zillion zillion files she wanted to download from a web site, using her OSX Mac. First she tries to use this program called Fetch, which is expirey nagware. (And it's just baffling to me that anyone would actually pay for software that does something as basic as "downloading files", but that's beside the point.) ...

So I say, fuck this, I've heard rumors that these are real computers now, just use wget. So I download it, configure… oops, no C compiler. Presumably it was on some CD that she doesn't have here. So we go looking for an OSX binary of gcc. (Brief conversation on how it's possible for compilers to need compilers occurs.) Apparenty the only binaries are on Apple's site, and it takes forever to find it, because their site sucks. Also they make you register in order to download gcc. It's gcc! WTF! "

Wow, that's a long complaint-blog for $5!

The cheapest new mac is $699 and the install DVD comes with XCode 3. Pretty sure new macs will come with XCode 4 preinstalled.

I don't see how this is a problem. Even if you are building a Hackintosh, you're pirating OSX anyhow so pirating XCode too doesn't seem so far fetched.

I have to use iPhoto'08 since that's what my Mac came with. But they just released iPhoto '11! Should I also write a long blog post complaining how Macs are not for normal people that take photos?

XCode is just another app: it costs money to create and maintain and they charge for major revisions. Same as OSX, iLife apps, iWork, etc.

OP isn't complaining about the price, or at least not principally. He's complaining about the 4gb download, the 15gb of HDD and the time of installing Xcode just to get gcc.

The price is just another barrier to entry to add to the list before you're up and running.

Well, technically this Xcode doesn't come just with gcc, it has the iOS SDK too. For example, on my machine I see this:

du -h -d 1 /Developer/Platforms/ 10M /Developer/Platforms//MacOSX.platform 4.4G /Developer/Platforms//iPhoneOS.platform 4.2G /Developer/Platforms//iPhoneSimulator.platform 8.5G /Developer/Platforms/

Of the 10GB the /Developer folder takes, about 8GB are the iOS stuff.

It seems normal they would bundle these since if you are downloading XCode, pretty sure you are doing Objective-C for iOS.

4GB is a big download and it does take space and it does take a while to install. But frankly, most people should be able to manage this quite nicely (and maybe even find a way to take back some of that space).

If anything, the whole thing deserves a tweet not a huge blog post.

You are missing the point, the only way to get gcc on your mac is to install some version of Xcode.
I see I keep getting downvoted but I'll bite: why should Apple distribute GCC in some other way?

The subset of people that need GCC on OSX but can't handle the whole XCode is probably pretty small.

Why not try Fink (http://pdb.finkproject.org/pdb/package.php/gcc45 ) instead of expecting Apple to provide that?

Direct quote from the post: It’s not about the money
I am not a GCC toolchain expert, but what is the trouble with someone hosting a GCC for OS X binary?
Then they would have no one to blame their incompetence on, of course.