Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Reposted here since it seems the page linked is no longer visible (at least for me).

------------

Apple’s great GPL purge

Posted on 5 February 2012 by meta Apple obligingly allows you to browse and download the open source software they use in OS X. Since they have listings for each version of OS X, I decided to take a look at how much software they were using that was only available under the GNU public license. The results are illuminating:

10.5: 47 GPL-licensed packages. 10.6: 44 GPL-licensed packages. 10.7: 29 GPL-licensed packages. This clearly supports the idea that Apple is aggressively trying to remove all GPL-licensed software from OS X. While the removal of Samba and GCC got some attention, the numbers show that there’s a more general purging going on.

The 29 remaining GPL-licensed packages aren’t too healthy either. Lion apparently ships with bash 3.2. That’s from 2006. The current version is 4.2.10. Why no upgrade? Because Apple’s shipping the last version of bash that was under the GPL version 2.

The message is pretty obvious: Apple won’t ship anything that’s licensed under GPL v3 on OS X. Now, why is that?

There are two big changes in GPL v3. The first is that it explicitly prohibits patent lawsuits against people for actually using the GPL-licensed software you ship. The second is that it carefully prevents TiVoization, locking down hardware so that people can’t actually run the software they want.

So, which of those things are they planning for OS X, eh?

I’m also intrigued to see how far they are prepared to go with this. They already annoyed and inconvenienced a lot of people with the Samba and GCC removal. Having wooed so many developers to the Mac in the last decade, are they really prepared to throw away all that goodwill by shipping obsolete tools and making it a pain in the ass to upgrade them?



Make no mistake, Apple could give a rat's ass about the developer community, and why should they? We represent a vanishingly small fraction of the total consumer space and we are orders of magnitude more demanding.


That isn't necessarily true. Xcode is a very awesome IDE, it has had its growing pains but with the new clang based backend it can go far and fast. Not being reliant on older and more stagnant and more tightly coupled GCC to get there.

It is in Apple's best interest to have a compiler that is also used to do the checking of code in real time within the IDE be the same. It makes more sense because otherwise you get differing results in the IDE versus compile time. It is within Apple's best interest to help developers develop and make it easy to find issues, clang's output for errors are absolutely fantastic. If you type something wrong it provides suggestions for what you may have meant (and most of the time they are accurate).

I think Xcode is one location where Apple is showing that it does care about developers by building a better product with better integrated tools (git for example ...). Are there things we miss from the old Xcode, sure, but overall it is clear that Apple understand they need to provide developers with tools that help them get their job done.

---

Clang though is helping the ENTIRE development community. It is an BSD licensed compiler with some absolutely awesome features.

1. Their human readable error messages. I've spent a lot less time Googling random compiler failures or trying to parse GCC's or MSVC's output so that I can understand it and fix the error (especially in heavily templated C++ code) just by having the compiler give me human readable errors. This goes a long way for a developer that misplaced a semicolon or is attempting to use a const variable into some Boost code that expects a non-const variable thereby causing thousands of lines of template errors to be thrown. 2. The LLVM allows for very interesting "languages" to be easily prototyped and tested, and JIT compilation and a few other things can be created. 3. clang can read incomplete code files and make code completion suggestions. Not just tied to Xcode, but as a library. clang_complete for Vim is absolutely fantastic and by far my favourite Vim script.

---

Why exactly should Apple be required to ship GPL versions of the software when they could ship BSD licensed utilities without having to worry about being GPL compliant. Just because a few people prefer the GPL version they can't remove it from their system? They believe the GPL licensed tools to be inferior (and with the GPLv3 causes more legal headaches than it is worth) and thus they are replacing them with a set of tools that fit their requirements. Why does that mean that they "could give a rat's ass about the developer community"? Why exactly would they continue to develop clang/llvm as an open source project?


"I think Xcode is one location where Apple is showing that it does care about developers by building a better product with better integrated tools (git for example ...)."

I guess this is a matter of opinion. Every time I am forced (read: paid) to use Xcode for some project, not only do I dislike the fact that I have to dig out my macbook because Apple's tools don't work on any other platform, but I find actually using them painful. It's been a few months since I've used it so maybe times-are-a-changing.

The last time I used Xcode (4.0.1?), it still basically seemed that it was using the iTunes container. Of course, I have no idea how much actual codebase Xcode shares with iTunes. Apple is probably just trying to be visually consistent between their products here. But I've never been a huge fan of iTunes either. I find the menus and configuration painful.

Though it's apparent that I'm not a huge Apple fan, I'm not trying to troll anyone here. Reading your statement, I saw your praise for their developer tools and it really made me think about the fact that, while a lot of Apple's hardware is competently designed, I'm not really a fan of their software whatsoever.

Off the top of my head, I can't think of a single app they've written (besides mail.app) that I like.

And kudos for them integrating git? Since pretty much every other developer tool includes support for it, I wouldn't say this is all that exceptional.


"I guess this is a matter of opinion. Every time I am forced (read: paid) to use Xcode for some project, not only do I dislike the fact that I have to dig out my macbook because Apple's tools don't work on any other platform, but I find actually using them painful."

I think it all depends on what you compare XCode with, and what kind of applications you are developing.

Personally, I find all IDE's painful to use, compared to just editing with gvim and building/testing using command-line tools. The fundamental problem with IDE's is that they are supposed to integrate a complete development workflow, which is never the same workflow you are used to, and which adds layers of complexity that are usually completely unnecessary if you write your own build & test scripts, customized for each project.

That said, of all the IDE's I've used over time, XCode is easily the best. There has been a regression from XCode 3 to XCode 4 in some ways, but it's getting better. I'd say the quality of the total XCode package is on par with Visual Studio, which is saying a lot. Environments such as Netbeans or Eclipse don't even come close to XCode 4 in terms of user friendlyness, speed, and integration.

If it were even remotely possible, I'd develop iOS and OS X applications using just gvim and command-line tools, but it simply isn't possible to get all the UI work, storyboarding, CoreData model creation, etc. done without something like XCode.

Personally, I think it's very hard to maintain that XCode is not a great tool for the problems it is supposed to solve, especially if Apple gets around to fixing all the (minor) regressions they introduced with XCode 4.


The tools not working on other platforms isn't an Apple only problem, though. Visual Studio is Windows only, and unless I'm missing something, there are no good cross platform IDEs for C/C++ development. At least many of the underlying XCode tools uses are cross-platform (clang, git, ...). It's more than can be said for any MS dev tool.


     unless I'm missing something, there are no good 
     cross platform IDEs for C/C++
For C++ there are no good IDEs period.

Not only are the IDEs buggy, not knowing what to do on even simple cases of auto-completion, but working on huge code-bases like that of Firefox is completely unfeasible, unless you deactivate all features that you'd expect from an IDE, which is why many people working on such huge code bases are better off with simple text editors, such as Vim and there are Vim/Emacs enthusiasts even on the Visual Studio team, which says a lot.

Also, when comparing XCode to Visual Studio, well Visual Studio at least runs on more than 90% of all desktops / laptops out there. And you are allowed to install Windows in VMWare or other virtualization tools. And so you can do development in Visual Studio even if you are on OS X or on Linux, granted with some hoops along the way, but it is doable. AFAIK you are disallowed by the license of OS X to install it as a virtual machine and even if possible, companies such as VMWare / Oracle / Microsoft don't even make attempts at fixing the problems with OS X, as that's not a use-case they can support.

     At least many of the underlying XCode tools 
     uses are cross-platform (clang, git, ...)
Visual Studio has one of the most potent plugins ecosystems out there.

There is Git integration with Visual Studio available: http://gitscc.codeplex.com/ ; Also, you can build your Visual Studio projects with GCC or clang for example. There's even commercial support available for debugging with GDB: http://www.wingdb.com/


"AFAIK you are disallowed by the license of OS X to install it as a virtual machine"

That changed with OS X Lion - you're now allowed to run it in a VM, and the various VM providers have support pages about it:

http://kb.vmware.com/selfservice/microsites/search.do?langua...

http://kb.parallels.com/112121


Apple now allows full virtualization of its operating system, provided that it is installed on Apple hardware which is also running OS X 10.7.

Great!


Sigh, Apple makes most of their money on hardware. Deal with it, or not. (My latest laptop is Linux only.)


> For C++ there are no good IDEs period.

I challenge you to try KDevelop, which likely has the most complete C++ parser outside gcc, clang and EDG, and uses it to great effect for things like semantic syntax highlighting, smart code-completion and useful information tooltips, plus other features. It also does reasonably well on large codebases like its own, or kdelibs, or Qt - or all of those within the same session, for that matter.

Its development version also has respectable C++11 support that is probably second only to gcc.


eclipse? netbeans? intelliJ? (editors: vim? emacs?)

edit: it's also easy to load a windows VM on pretty much any other platform and develop for windows, if that's what you're after. full-screen 2560x1440 virtualbox windows VM performance is actually quite nice.

if i want to use my linux laptop to develop for OSX, I am violating Apple's EULA by having a hackintosh virtualbox image. though it does work pretty well, i'd rather not have to deal with it. but i guess this is a bit off-topic.

your point is a good one. but, i guess what i'm getting at is that if i'm doing windows or linux development, i have many choices about what my hardware can be. with apple development, officially, i have only one choice: apple hardware.


Qt Creator is quite good for C++, cross platform, +free. http://qt.nokia.com/products/developer-tools/

IMHO it is the best there is for Linux, and better for C++ than XCode.


Clang is one side, but the other side is things like bash. Apple isn't developing a superior, BSD-licensed shell; they're just planning to ship the same old version of bash until the end of time. Some parts of OS X are getting better but other parts are stagnating.


What crystal ball are you looking at that says they are going to continue shipping bash? zsh is a viable replacement that is MIT licensed ...

There are plenty of other shells out there as well that they could replace bash with. Bash isn't the end all be-all of shells.


The good side is that with zsh and some other software getting their place in OS/X; Linux and OSX communities will diverge away from each other. I kind of like this as a Linux user and developer. With OS/X or Apple we share so little in principles (read a lot of comments here), vision and development(now) and it is good if we end up being 2 mutually exclusive ecosystem similar to Windows/Linux.

Being a former Apple employee and having enjoyed Apple's ditching of the classic Mac OSes for OS/X, both worlds have had pretty much similar environments. After 2012 the Apple and Linux development communities appear to be totally accelerating in different directions.


OS X and Linux never shared a common parent or converged. The BSD heritage is what makes it Unixy. BSD has been oil to Linux's water for a long time.


For Linux and OS/X, noone said they share common parent; the shared common tools such as bash, samba and a lot of stuff removed as mentioned by this article will create diverging ecosystems (and before replying watch out, noone says diverging kernels).


You can still install those common tools if you wish. Just like on FreeBSD you don't get bash by default...


They're not developing a BSD-licensed shell because they already ship zsh.


In early versions of OSX (I think till Panther?) tcsh was even the default shell. They should revert to that again if they are shipping bash support only as a legacy kind of thing.

Edit: But I guess shells are boring business. According to Wikipedia Bash 4.0 brought support for "associative arrays". shrug Those who care about that are able to get the most recent version by their own.


XCode is actually pretty horrible as IDEs go. It doesn't even have a solid plugin architecture. When will you see vi/vim plugin for XCode? That makes it pretty much a toy and unusable.

Honestly, XCode is pretty horrible when compared to even Eclipse.


Not entirely true. Xcode does have a plugin model; just explore the Xcode developer install and you'll find it is entirely built up via plugins. Unfortunately, Apple have chosen not to document it or make it public.


is this really an argument against what super_mario says? when he says it doesnt have a plugin architecture of course he means extendibility by everyone.


Developers are also disproportionately useful for a platform, since they're the ones who build the stuff people want to use; for more on that, see http://joelonsoftware.com/articles/APIWar.html , as well as the bazillion other writers pointing out similar things.


Although there is some truth in it, I think that Apple is following a different strategy. They don't really attract developers by a developer-friendly environment, but by the number of worthy users of their platform.

Regarding the embedded devices (i.e. iOS, App Store, etc.) you could even call this a developer-hostile environment. Yet there are lots of developers taking this hassle just to get access to Apple's user base.


> Apple could give a rat's ass about the developer community, and why should they? We represent a vanishingly small fraction of the total consumer space and we are orders of magnitude more demanding.

This is a popular refrain, but I don't think it holds up well at all under scrutiny:

1. By your logic, who should care about developers? Only open source projects or ISVs? And yet everyone does, a lot.

2. iOS platform developers buy Macs (and often multiple iOS devices) to develop iOS apps.

3. Xcode, warts and all, is basically free. Same with all of the OS X and iOS developer documentation. Have you priced Visual Studio or an MSDN subscription lately?

4. No one who feels this way has had Quinn the Eskimo answer a Core OS or Networking question for them in the Apple Dev Forums. If you don't care about developers, you don't pay folks like him to dispense wisdom to a bunch of yahoos who each paid $99/year.


1. Pretty much just open source projects or ISVs, and I think you'll find "everyone" gets a lot smaller the further you get from the Valley.

2. No disrespect intended but BFD? Are you proposing that developer hardware purchases represent anything besides a rounding error in Apple's hardware sales?

3. I see Xcode's pay-to-upgrade model and $99/yr developer subscriptions as a variation on the MSDN/Visual Studios theme.

4. Wait, what? Cult of Personality issues aside, we're talking about a company that's pulling in billions in profits quarterly nickle-and-diming their developer community. How is this beneficial to developers again?


1. I think you underestimate the amount of dev talent being consumed outside of "software companies", for a wide variety of platforms (including desktops).

2. Fair point, but are you proposing Apple doesn't care whether devs buy Android and WinMo devices instead? None of these platforms are fighting for developer attention in a vacuum, but they are fighting for developer attention.

3. Xcode charging $5 to upgrade is quite a "variation" on that theme indeed. $99/year dev subscriptions, again, are outside MSDN theme-level fees by an order of magnitude.

4. My point is that if you're paying $0.30 per day to rent a Ferrari, Ferrari is not "nickel-and-diming" you. Is "totally free" the only fee level at which you're interested in consuming tools and developer support? Do you make such decisions for an organization with money riding on the results?


Developers make the software that goes on their platform. Microsoft didn't gain their huge market share in the 90s through magical spells; they won by being extremely developer-friendly. Without a "developer community", Apple wouldn't exist as a company.


How many billions have Apple already paid out to iOS and Mac App Store developers? How many attendees did they have at WWDC? Getting rid of GPL in now way means getting rid of developers.


> So, which of those things are they planning for OS X, eh?

Fairly, clear I would have thought. There is substantial overlap between the OS X and iOS codebases. Having anti- TiVoization clauses in code central to OS X poses problems whenever they want to use a funky feature in iOS, or indeed on the AppleTV. It makes things much simpler if this type of code can be avoided.


are they really prepared to throw away all that goodwill by shipping obsolete tools and making it a pain in the ass to upgrade them?

Apple has made fantastic amounts of money and become the daring of the media & tech world since they went down the route of the closed iPhone/iOS buisiness.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: