Posted
by
Unknown Lamer
on Wednesday November 07, 2012 @10:33AM
from the rms-weeps-quietly dept.

An anonymous reader writes "Brooks Davis has announced that the FreeBSD Project has now officially switched to Clang/LLVM as C/C++ compiler. This follows several years of preparation, feeding back improvements to the Clang and LLVM source code bases, and nightly builds of FreeBSD using LLVM over two years. Future snapshots and all major FreeBSD releases will ship compiled with LLVM by default!"

It isn't necessarily an issue with the GPL (aside from 3 being invasive, which I personally have an issue with and so do the lawyers I work with) - I have a problem with Stallman's (aka RMS) model, which says charge for hardware and give the software with source away for free.

I worked for a CAD software company (we were bought by a huge multinational conglomerate, so I technically still work for them, but I moved around and rarely touch CAD these days). In our former incarnation, we sold exactly no hardware and were bundled with exactly zero hardware, but ran on pretty much every platform imaginable (9 at one point, but much fewer now, since our customers are mostly moving to Linux or Windows). Giving away our software (not to mention the source code) would be a really bad business model, but to appease those in RMS's dream world, we'd need to find hardware partners and give it away for free with the hardware and be paid by the hardware vendor - but since we have to give away source, we'd more than likely use an in-house developed proprietary language to make porting as difficult as possible. This, in fact, is a BAD and not very open business model - if we'd been bought by our current owner, we'd almost certainly be proprietary software for their hardware and not run on platforms like Linux or even Windows. This happens in the console world all the time - when Microsoft bought Bungie, they basically shafted what Bungie was known for - mac games (and took a year to release Halo on Windows/Mac to keep it XBox exclusive as long as possible to the ire of Steve Jobs - later releases became XBox exclusive). If you think that is a good thing, great for you - I don't. Incidentally, the part of the company I work for has an open data model as well - that makes it easy for customers to switch, but we are doing our jobs well because few actually do.

With BSD software, not only are you giving away the source code, but you are giving it away with even fewer restrictions than with GPL.

What's that you say? You want to take the software that other people have released and use it in your closed source product? Well then of course you like BSD software better. But you can obviously see why many people who write the open software prefer a GPL style.

With BSD software, not only are you giving away the source code, but you are giving it away with even fewer restrictions than with GPL.

But you're not forced to give all of it away, as you effectively are with the GPL.

If you've created something that you'd like to give back to the community, you can. -And it's very often in your own best interests to do so. If however, you've created something that, at least for now, you'd prefer not to give away, well you're free to do that instead.

I think a lot of people miss the point. The copyright owner chooses the license. If you don't like the license, don't use it (as FreeBSD did).

Whether you are forced to share or not should be one of thing things the project/company should decide on early. If it's not important, then it doesn't matter. If it *is* important, then select the appropriate license.

It is not like you can pay Microsoft for a windows license, and then violate their license (remember hacking windows NT workstation to run IIS serve

It seems to me that the ability to "lock up" formerly free software has enabled the worst actors in the global market for computer software to accumulate wealth and power which they have then used to distort the market to the detriment of free software authors. The GPL is a response to this perception.

And frankly, while I support your freedom to release your code under any license you wish (a freedom many BSD people don't seem to like) I find these "GPL tekks away mah freederms" sound bites laughable. You

It seems to me that the ability to "lock up" formerly free software has enabled the worst actors in the global market for computer software to accumulate wealth and power which they have then used to distort the market to the detriment of free software authors. The GPL is a response to this perception.

The software is always free. What they do is not make their changes free, but the original is still free as ever.

An idea cannot be "stolen" or "taken away". The original will always remain.

Personally, I think most people's ability to think breaks down once "infinite" is involved. I have no qualms with GPL, but your argument is full of holes. You are as bad as the RIAA claiming others steal their work and every stolen copy is a lost sale. Please revise your argument, it makes the GPL look like a bunch of zealots use it.

The 'lack of interest' argument applies to both BSDL and GPL projects - go the the GNU software page - how many of those projects do you think are very actively pursued? In either case, the authors can die, and the archived copies, despite being 'free', can go offline. The only thing ensuring the success of any open sourced project is a combination of developer interest in developing them, and corporate interest in promoting them.

But you're not forced to give all of it away, as you effectively are with the GPL.

Utterly false.

You can license just part of your own code as GPL and release as much or as little as you want.

You even still retain complete control of your code that you have previously released as GPL, so you can then take it and change it or use it in your closed software, or license it out for a price to someone, or release it as BSD.

Yeah, but this right is denied downstream, ironically under the very copyleft clauses that claim to preserve the 'software freedom'.

The BSD model has proven that you don't need to twist peoples arms

GPL is not twisting anybody's arm. I challenge you to find a single example of a GPL project which has engaged in predatory patent trolling, deliberate compatibility breakage to harm competition, or format or protocol obfuscation to lock in customers. Things which some closed software companies engage in regularly is completely against the nature of open source development, but also open source makes it pretty hard for any of those techniques to be effective.

Not saying it would never happen, but there is nothing about the GPL license that twists anybody's arm.

Oh, you meant "you twisted my arm" as-in, "I want to use your code that you own the rights to, but under the terms I set. Waaahhh.". In that case, fuck you, that's copyright infringement and have fun destroying people's livelihood, hypocrite.

It's not an issue of mere taking the code and changing the terms - let's say I took something that the GP had written and modified it, and then distribute the modified version, that's where the differences start. With GPL, I'm forced to release the source code of my modifications. With BSD, I don't have to - only the original BSD source code has to be given, but I still have the option of keeping the source code of my modifications to myself, even while distributing.

GPL... Among many freedoms it takes away

Stopped reading there. You're either a massive troll or a clueless friggin nincompoop.

Read the 4 freedoms on the home page of the FSF. GPL violates every one of them.

If I take BSD licensed code and incorporate it into my commercial product, and don't release the source, it is NOT stealing. It is totally within the requirements of the license. The BSD folk want (and this is what the GPL peeps DON'T get) ANY project to have a library of well tested, standards compliant code available for use as the project author sees fit. We DON'T want to force people to reinvent the wheel to circumvent licensing restrictions if they decide they want to build a closed source project

The GPL doesn't force you to give the software away. You can sell it. Indeed, RMS himself used to **sell** tapes of GPL software to fund the FSF. RedHat make *billions* on per-seat licensing of GPL software. Nor does GPL software force you, as an author, to GPL all the software. As the author you are completely free to draw the line as you wish between which bits of your software are GPL and which proprietary. You just grant yourself an exception.

Hu? Let say you release a part of your software under GPL and "draw a line" for the rest, I'm entitled to ask you to release the whole thing under GPL, unless you're able to prove that the part you put on the other side of the line is not a derivative work of GPL'd part.

Only if you wrote part of it. If I write a program and release half of it under the GPL, the only person who can sue me over it is me.

The GPL is only an issue if you want to steal other people's code. It doesn't force you to do anything with code you write, unless you mix it with code you didn't write and don't have a license to use (other than the GPL).

Hu? Let say you release a part of your software under GPL and "draw a line" for the rest, I'm entitled to ask you to release the whole thing under GPL, unless you're able to prove that the part you put on the other side of the line is not a derivative work of GPL'd part.

Only if you wrote part of it. If I write a program and release half of it under the GPL, the only person who can sue me over it is me.

The GPL is only an issue if you want to steal other people's code. It doesn't force you to do anything with code you write, unless you mix it with code you didn't write and don't have a license to use (other than the GPL).

That's a non-sequitur to what the parent had written. What he is pointing out is that if you had written a GPLed program, and he added his own part but did not want to release the source code to his modifications - under GPL, which the combined license would have to be under, he couldn't. That's not a problem in BSDL - there, since it is not a CopyLeft license, he could take that software, add his modifications and sell only the binaries. Or, if he wis

It has little to do with "liking" or "disliking" the GPL. It has more to do with the GPL being incompatible with BSD's own license (and just about any other license). It's true there is a compile firewall with gcc, but it is still a less than ideal situation. BSD is also going to bring out a GPL-free C++11 stack.

is there a reason for not making the front ends dynamic libraries which could be linked by any program that wants to parse source code?

Quoth the Stallman himself:

One of our main goals for GCC is to prevent any parts of it from being used together with non-free software. Thus, we have deliberately avoided many things that might possibly have the effect of facilitating such usage, even if that consequence wasn't a certainty.
We're looking for new methods now to try to prevent this, and the outcome of this search would be very important in our decision of what to do.

Not only is the poor design true, it was very intentional. This is why we need the LLVM project. KDevelop and such shouldn't have to write their own compiler front ends to get feature parity with Visual Studio; but right now they do.

It's also hell on people who want to make a better debugger than gdb. I have always been frustrated by how terrible gdb is at handling threaded code, and amused that it was endless threading bugs that kept Hurd from ever reaching a usable state.

unlike GCC, Clang/LLVM was designed to ensure the optimizations are the same each and every build. This means you can compile from source and check the md5 sum of your binary against the master md5 and know if the source has been modified before compilation. Critical for signed binaries.

Another benefit is the support for older hardware that's been dropped by the GCC team along with ease of debugging. I've had compiler optimizations introduce unexpected bugs/failure mode in the Linux kernel itself that disappeared when the No Optimization flag was set. Simply put, if the kernel isn't stable, I don't give a damn how stable the rest of your system is, it's not stable because you can't trust the kernel and that's why Clang/LLVM is all about.

If both were proprietary software, I'd agree, but given they're open-source, I don't think so.

GCC is an open-source project. How are they going to hire extra developers to keep the edge over LLVM? And to what end? Once LLVM takes over the crown I believe it makes more sense for a lot of GCC developers to just continue their work on LLVM instead, and GCC will shrink to irrelevance. But it's still good for all involved, as everybody gets a better compiler:)

No its just good for your agenda, although the heavy involvement of Apple without the support of a tit-for-tat license is going to major offputting for many developers. The irony of FreeBSD switching to Clang/LLVM is not lost on me. Personally the thought of a two-level development of a browser quite disturbing.

The reality is GCC still moves forward, and Clang/LLVM has a long way to catch up, perhaps if develops stopped developing Clang/LLVM for that everyone would again getter a btter browser, and everyone would be on an equal playing field.;)

but like I say I prefer a world where some do not get a better browser than others:(

Well, better for some people. I suspect that the first fallout of any industry shift to LLVM will be that the public compiler will be significantly lacking in optimizations while the expensive, proprietary versions will have all the good optimizations.

Not just that.

I remember the bad old days where every venduh and his dog had their own "extra proprietary super awseome dongle controlled extra awesome super cool" compiler.

Vendors of hardware *LOVE* proprietary compilers. And by love, I mean love to break in mysterious and subtle ways.

Once gcc took off in the embedded world, life got a lot better since many of the cheaper vendors would just use as close to stock gcc as possible (though usually with a little bit of extra internal compiler errors added), rather than some extra super proprietary extra messed up version.

This isn't a business issue. There is no sane business case for taking a commercial compiler front end and a commercial compiler back end, filling it with extra bugs and shipping it. But hardware vendors love to believe that they have an awesome proprietary advantage in software for some reason. Even though they sell hardware. They don't, of course. I'd just say "whatever" except that turns rapidly into invective if one is forced to use their "tools".

Once GCC came along, they believed that they no longer had such an advantage (presumably) so they stopped introducing their extra proprietary bugs into compilers, and limited themselves to a few extra miscellaneous bugs. But it was still mostly gcc and still mostly worked.

If LLVM comes to dominate, the hardware vendors will jump right back on that attitude and make the life of the humble developer hell again.

This isn't a religious, or philosophical issue. It's a "hardware vendors are mental" issue.

You're completely wrong with LLVM domination provides a gateway for Vendors to break stuff. The very manifesto of LLVM/Clang is being tested right now with Intel wanting to dump their Cilk Plus Extension into the source and getting major backlash from the core developers who refuse to put it in as it breaks with the intended foundations of LLVM/Clang. These are just a couple of the more kind remarks from Google and Apple where others are more sardonic regards to maintenance and impacting on the modularity a

Well, it seems to me the major forces driving the development of a compiler are the chip manufacturers and the developers of operating system. Both have an intrinsic desire to have a good compiler available to them. But what vested interest do they have that this compiler be GCC? If at some point in the future LLVM were to be become the one generating the most efficient code, and if the LLVM codebase is the more maintainable one, then why not switch?

i thought the BSD license was a "do what ever you want with it license". So the intent of the author is as is understand it is for you to do what ever you want with it including make it a different flavor of free.

True, except the GPL claims to be even "freer" than free by the advocates who love to point how closed-source projects "steal" BSD source. The irony is that the GPL is doing the exact same thing which is legal, except the GPL forces are claiming it's superior and freer.

And for those projects I guess the FreeBSD ports system will just install gcc, so it will continue to build on FreeBSD. GCC is available in the ports tree, they just don't want to include it in the base system.

For one thing, LLVM isn't copylefted, making it available for use as part of non-free software. (There are some major categories of software that for economic reasons cannot be released as free software; I can explain in more detail if you wish.) For another, it's designed to allow just-in-time compilation of bytecode, such as what might be seen in a Flash, Java,.NET, or JavaScript VM, in addition to standard ahead-of-time compilation of source code into native code.

None of these, games, DRM crippled video players, tax software need to be proprietary. You even mention why: what would these software packages be without their WAD files, tax definition files and encryption keys.

You even mention why: what would these software packages be without their WAD files, tax definition files and encryption keys.

A video game licensed as free software could be modified to leak the decrypted WAD files. Furthermore, console makers forbid use of a copylefted engine [slashdot.org]. This means a copylefted game can't run on consoles, which means it can't use the large monitor and multiple gamepads that the player already owns for the console but wouldn't consider buying for a PC. (There are some major genres of video games that for economic reasons cannot be released as PC exclusives; I can explain in more detail if you wish.)

A DRM crippled video player licensed as free software could be modified to leak the decryption keys, something that Disney, Fox, Paramount, Sony, Universal, and Warner Bros. forbid.

A tax program licensed as free software could be modified to leak the decrypted tax definition files.

Ah, but we should also point out that closed software on open hardware does little to achieve the above restrictions or protection of data. As long as the user has access to the underlaying machine they can still access the raw form of the program and the data. It's harder than having clear-text source code and unobfuscated data, sure, but it's doable.

The only environment in which closed-source code works is putting it on locked-down hardware, a "black box" of sorts with no external clue as to what's going

Think of it another way: If it's feasible to make money on a video game with a free engine and proprietary data, then why aren't there more popular video games built on engines that have been free from day one?

Not sure what you're asking, the first part of this question is completely disconnected from the second.

Then let me rephrase the question using grammatical parallelism [wikipedia.org] to reconnect the first part to the second: If it's feasible to derive a source of revenue from releasing a video game with a free engine and proprietary data, then why haven't companies taken advantage of this feasibility and released popular video games with a free engine and proprietary data?

And they both completely disregard what I've said above.

Which is why I introduced that question with "Think of it another way". I was trying to establish the criterion of whether or not a particular business m

A lot of graphics software infringes on existing patents, but that isn't a reason you can state without risking treble damages in a lawsuit, so most of the graphics driver writers tend to just look the other way and hum as they dance past that particular graveyard. Practically, it's impossible to write genuinely competitive graphics code without infringing some East Texas idiot's patent.

There are also cases where code has specific strategic value to a company, and they want to amortize the cost of development over some period of time before they let their competitors use the code. For example, the Soft Updates code that Kirk McKusick, Julian Elisher, and I worked on for FreeBSD was licensed under a free-for-non-commercial-use license for a period of two years before we opened it up for general use. This was to allow us to recoup the investment on developing the code by allowing us to run our hardware without a UPS, while everyone else in the market had to have a UPS to deal with power failure and recovery. If you don't have it, you have to treat a power failure as a kernel panic and do a full fsck in order to return your disk to a known good state, since you can't otherwise guarantee that it wasn't a crash followed by a triple fault, which might have written bad data to some portion of the disk. So all the competing border router/SOHO server devices had to have batteries, which increased their cost relative to our product. It's one of the reasons IBM bought our company.

Yeah, it'd be great if some idiot were to spend 10 years of their free time neglecting their families so that all this stuff could be free, but no one really wants to be that idiot: people work on free software for love, and they work on the hard problems and productization in exchange for money, since no one is going to do scut work for free unless they're a masochist (if you happen to know one, though, I have a project or two they could tackle if they really wanted to suffer).

There are also economic reasons that Android replicates a lot of internal Linux APIs in order to get out from under the EXPORT_SYMBOL_GPL() so it can have faster/closed source graphics drivers.

Look, I most recently worked for Google on the ARM ChromeBook that Samsung recently announced. In the process, I did bring-up on the cellular modem and the camera, fixed the PMIC code, and did other things that ended up in the Linux Samsung 5250 board support, as well as rewrote the i8042 keyboard driver in u-boot in

Also, LLVM isn't actually designed for JIT: some people have managed to make it work, but not without problems. GCC isn't designed for JIT either, of course; it's outside the problem space of both.

WTF? Apple's first use of LLVM was as a JIT for OpenGL. When compiling OpenGL to code for various graphics cards became a maintenance nightmare, they used LLVM: OpenGL compiles to the internal representation of LLVM, same code for all graphics cards, and LLVM compiles to code for the graphics card, all at runtime.

Apple actually had to stretch some definitions on that project. The actual technique they used is more akin to what the original JVMs did: ahead-of-time compilation that happens to be just before the code is run, but ahead-of-time nonetheless. JIT implies something different, and it's not really in LLVM's problem space.

> There are some major categories of software that for economic reasons cannot be released as free software

Yet despite of this the world has survived for a rather long time using a Copyleft compiler without the heads of any Robber Barons exploding.

It's kind of on par with GNU finally using it's own kernel after 20 or so years instead of using the Linux kernel. It's interesting but far less significant than some might want to assert. We managed to get along quite well without it.

Who would put a compiler as part of their software (either FOSS or otherwise)?

Implementations of the Java virtual machine, the Common Language Runtime (.NET virtual machine), the ActionScript engine in an SWF player, the JavaScript engine in a web browser, or a shader engine in an OpenGL implementation need to compile platform-independent bytecode into platform-specific native code.

GPL is for people and companies that think "I wrote this software [together with X, Y and Z] and if somebody else makes it better they must share it with all the world, as I did."

BSD is for people and companies that think "I wrote this software [together with X, Y and Z] and I accept the loss that somebody else makes it better and keep it for themselves because I want to have the option of getting somebody's else software, make it better and keep it for me without sharing it back."

I think we can argue forever on the ethic merits of the two approaches (I feel in the GPL camp). Anyway both GPL and BSD make economic sense and we won't be talking about them if they didn't, one or both would be dead long time ago. If a company wants to include some big secret in its code, it must go BSD and occasionally regrets it can't use some GPL code and rant about it. Sometimes the GPL people rant about not being able to include BSD code in their projects.

By what reasoning? I would have labelled this oppositely:
- With BSD, a good networking stack made it into (earlier versions of) Windows thereby helping user choice.
- With GPL, services companies are the norm which encourage convoluted software that's hard on users.

GPL -> User has access to source code so (in theory) has less risk of vendor lock-in.
BSD -> Developers can create lockin

Well, it depends. Here on my FreeBSD system I have the source code to the entire operating system under/usr/src, it is included with the installer and can be installed during installation. Companies like Apple can use it to improve their products, and sometimes they contribute back even if all their products aren't open. However that doesn't make/usr/src go away.

While a developer can be a user, not all users are developers. Availability of the code means squat to someone who does not know how to write code.

That's ridiculous. If you have the code, you can *hire* someone to fix the thing, ten years after the original supplier went bankrupt or whatever.

I need the plans for my house, even if I'm not licensed to fix the bathroom -- I need them in case I hire someone to do improvements here.

Most every place I've been paid to work with software, the ones with budgetary responsibility have *not* been able to code themselves out of a wet paper bag. They've been readily able to get something fixed, if the source is available -- if needed by hiring someone to do it.

No, what you suggest is ridiculous. If the software is "free" to begin with, why would I want to spend a lot of money to hire something that nobody is going to bother to maintain? That would be throwing good money after bad. You are better off looking for an alternative and choosing a product in the first place that has adequate export facilities for your data should you decide to migrate to another system later.

You appear to be ignorant of how much software development costs to suggest that someone "hire

This really depends on developer's interest. When releasing the software, developer has way more freedom to choose the software licence, then the user, who buys the software. Therefore, I'd argue that user's freedoms are in more need of a protection.

If not for the users, what is the point of software? If you insist on treating users as if they were developers then you will quickly lose them and destroy the relevance of your software. Software without users is nothing.

GPL is for people and companies that think "I wrote this software [together with X, Y and Z] and if somebody else makes it better they must share it with all the world, as I did."

That is quite misinformed. Organizations can modify and use GPL'd code internally, make a lot of money off of it, and not share with anyone. I believe Google does so.

BSD is for people and companies that think "I wrote this software [together with X, Y and Z] and I accept the loss that somebody else makes it better and keep it for themselves because I want to have the option of getting somebody's else software, make it better and keep it for me without sharing it back."

Beyond misinformed, merely a spouting of FSF spin.

In truth the BSD folks want the widest possible distribution of their software because they believe that will ultimately provide the computing world the greatest benefit. BSD Unix arguably did provide quite a benefit to both hobbyists and corporations.

Perhaps more importantly is that BSD Unix was a product of the University of California, a taxpayer funded entity, and they felt that all taxpayers should have equal access to their work. That the politics of picking good users and bad, approved uses of the software and unapproved, etc was wrong.

There is a simpler explanation: BSD is about freedom of the code, GPL is about freedom of the user.

Actually I think you can't have both kinds of freedom at the same time: the freedom to do whatever you want with the code (and its license) allows you to limit the freedom of your users to do the same. This can be considered a minor problem (as BSD does) or a major one (as GPL does).

For example, we wouldn't have an Objective C compiler if NeXT hadn't been forced to release it in order to comply with the GPL.

Speaking as the person who wrote and maintains the GNUstep libobjc and the clang support for it: Bullshit. The GPL forced NeXT to open source half of the implementation (the compiler support, not the runtime), and their implementation was such a pile of crap that it set back GCC's support for a long time. Open source support for Objective-C in clang is so much better than in GCC that it's not even worth comparing the two.

Clang is in the order of 10 times faster than GCC (compilation speed) and the generated binary is 1% faster than GCC (so essentially the same but saves hours of compile-time per day on 50MB+ C-files).

Bullshit. It's compilation is at most 1/3 faster, and on most cases I checked, the result executes between 5-25% slower. The former seems to be pretty constant everywhere, the latter strongly depends on the code base in question, with huge outliers both ways.

on most cases I checked, the result [with Clang] executes between 5-25% slower.

I recompiled a large audio processing code base in Clang and the result was about a 2-3% speedup, with no problems. I immediately switched to using Clang for all release builds. (I still use GCC for debug builds.)

I know of LLVM, but haven't used it, and it really seems like very few hardcore Linux/OSS devs have a clue about it. Is there really a clear advantage, or is it just an excuse to write a new compiler to solve a problem that doesn't exist?

The actual reason, from what I remember, is licensing. They want to build a fully BSD-licensed OS from the ground up, with zero dependence on GPL-licensed stuff.

They want to build a fully BSD-licensed OS from the ground up, with zero dependence on GPL-licensed stuff.

Not really true. Everyone was pretty comfortable living along-side GPLv2-licensed software for many, many years. But NOT the new GPLv3. Organizations all over the place are running away, screaming, from anything using that extra-restrictive and incompatible license. The FSF, developing the GPLv3 license, has done more to promote BSD/MITX licensed software than anyone else could have ever hoped to.

I know of LLVM, but haven't used it, and it really seems like very few hardcore Linux/OSS devs have a clue about it. Is there really a clear advantage, or is it just an excuse to write a new compiler to solve a problem that doesn't exist?

Much better modularization, so that the tokenizer used by the compiler is easily available to other tools, so that your editor does not have to (try to) re-implement all the intricacies of C++ syntax, so that parse tree & symbolic info is available to your IDE, so that it does not have to try to re-implement parsing of all the intricacies of C++ templates & namespaces in order to give you cross-referencing or even re-factoring functions (not to mention support for a debugger that can actually figure out types in a complex inheritance hierarchy).

Incremental parsing means that you don't re-lex/re-parse the entire text stream from the beginning every time a character or two get inserted because of user typing something. Which means that you have to have a lexerthat's smart enough to correct just the few affected tokens, and then a parser that looks at those changed tokens and updates only the affected part of the AST. Which, generally speaking, is not at all a trivial thing, especially for a language as complicated as C++ (where a single token change

You should definitely try compiling something with LLVM/Clang sometime.
The error messages that you get are quite nice and stuff normally compiles much faster compared to similar optimization level with GCC. For a source-based distribution like FreeBSD or Gentoo that might be a nice boon. Some developers (the Chromium ones if I am not mistaken) have switched to LLVM/Clang for their development, but they still ship the final binaries built with GCC.

I don't see anybody addressing this question adequately. Here goes for a start.

1) g++ has simply awful error messages for template code. clang++ has MUCH more helpful error messages. Of not quite so much importance, all clang/clang++ error messages are significantly better than those of gcc/g++. Looks like clang++ has spurred g++ to improve error messages in 4.8 though. They NEEDED to be improved.

The main advantage of LLVM is that it will provide much needed competition for GCC which for the last decade has only had VCC to spur it on. Note that LLVM code can be freely transplanted into GCC while the reverse is not allowed, probably enough in itself to ensure GCC's continued preeminence even with Apple's fat checkbook backing LLVM.

FreeBSD might not be anywhere near as popular as linux but its a damn good system, and whats more there arn't endless ever-so-slightly incompatable distributions of it. Ok, its never going to threaten Linux but its good to have a proper alternative free Unix system available that is actually interested in its end users and isn't just a pet project of the devs (unlike certain other BSDs I could mention).

1) Clang(++) produces better error messages. This is a mere nicity when dealing with C code, but it's an absolute requirement when dealing with template based C++.2) Clang has a much more comprehensive set of warnings that get into static analysis of your code than gcc.3) Clang is modular, and can be used to develop other tools using the same parser/type checker/...3.1) Because of this, it's been used to develop a static analyser that can be seperately invoked (because it runs substantially slower tha

Nothing has stunted the computer/software industries more than the introduction of the 8086 and the GPL.

Having lived with the the safe Duopoly of Microsoft/Apple [Years of IE6 was only part of the problem] dominate everything absolutely for so long. Other than providing a viable competitor, where commercial companies have failed to compete, and are swallowed up by these larger companies as the bundle all the profitable software I fail to see their relevance. The only effective competitor seems to have been GPL for obvious reason [its almost immune...although buying off key people and handing out free hardware

Odd how the most used *nix is GPLed -Linuxodd how veteran companies from the unix war (oracle, ibm, hp,) are pushing the use of LInux and other GPLed software.

maybe they figured out that sharing is best but if that were it they could have simply shared and setteled on a BSD. Or they realize that working where there competitor can't simply fork and close at will is best for everyone involved thus settling on a GPL licensed stack

You'd need a reference for that. I would submit that BSD code is more prevalent than GPL in actual use by an order of magnitude or better.

Every copy of windows has BSD code in it (No, not the tcp/ip stack). But libraries to do things like zipping files, displaying GIFs, etc etc. Mac OS and iOS is based on BSD as well. Even linux has BSD code in it. So does the PS3, Xbox 360, and FreeNAS.

If I remember correctly, OpenBSD was looking at PCC as alternative compiler. It would in a way fit their philosophy better considering that it is simpler/cleaner and pure C, so C++ does not have to become a systems dependency. In fact, PCC has also made some rather nice advances lately, like building a FreeBSD kernel, and there is always the challenge of building a Linux kernel with pcc (http://bsdfund.org/bundle/).

The FSF has always granted an exception for compiling non-GPL3 software, but they don't like it. Others (like me) have feared they may pull such licensing sometime in the future, so having an alternative is a good thing - we shouldn't put too much power in the control of one relatively radical group.

I think it comes down to what you define as free software. The Stallman approach is of course very popular, but some say that's actually a bit more non-free since it restricts users of the source code and using BSD is in that sense more free. And it works well. Apple for example is using lots of FreeBSD in their operating system, and they contribute back.

Yup. In many ways, FreeBSD probably has more desktop users than Linux does; it's just that FreeBSD is renamed "OS X", and has a bunch of additional software dropped in. In many ways, OS X is FreeBSD with a set of additional proprietary userspace interface and API's dropped in.

And yet, in spite of OS X being a 'closed fork', Apple still voluntarily contributes a substantial amount of code back to FreeBSD. To me, it's proof that the BSD license works well, and that compulsory contribution isn't the only way t