Hacker News new | ask | show | jobs
by ChuckMcM 4702 days ago
Ok, that is a pretty compelling argument in favor of non-open source software.

I read it to say that GCC is so open source that it cannot converge on a stable release. Further there isn't a non-commercial (aka free) incentive for making it stable, so it doesn't converge. Rather it trundles along from new optimization strategy to the next constantly in a state of minor bugginess. The economics of 'sold' products uses the loss of revenue as the incentive to maintain quality, without that incentive its hard.

Google has (had?) a pretty good sized team that did nothing but maintain GCC. I'm sure it cost them easily $1M/year to keep that team going. There is no incentive for them to fund a team like that in a third party such that everyone else benefits from their work. Sure they offer the changes back into the base product, and somewhere else there is another team working for company Y that is taking those, porting them into their effort. In this article from Marc he mentions himself and 5 other developers who are the "compiler people". 5 developers, $120K each, that is .6M/year before you add insurance and office space.

And those 5 have their lives made more difficult by the dozen or so folks who are committing in changes that destabilize parts of the code or require side ports.

It makes me wonder how many people there are like me who would be willing to pay $100/year for a bespoke C compiler that was supported by a single source and stable.

8 comments

I think the following quote from the article is more compelling:

While one would like to expect a minimum level of correctness and trustworthiness from a modern compiler, we can't, regardless of the compiler we use.

Notice he doesn't say "open source compiler" - he means all compilers will have issues. Much as it sounds like it would be nice to just pay someone for good tools and not have to worry about it, that's not the case (and never has been). The reason I look for open source solutions first is precisely because I know nothing is perfect, but at least when I have the source I know I might have a chance of fixing it, or if need be, pay someone more expert to. Just paying someone upfront for something I can't tinker on in no way guarantees an incentive to make it stable. I know this from experience. OTOH, I'm more than willing to pay (and have) for open source software. I often wonder if something like kickstarter (without as much fanfare or pressure) might be a good way to fund LTS releases of open source software.

> Ok, that is a pretty compelling argument in favor of non-open source software. [..] I read it to say that GCC is so open source that it cannot converge on a stable release.

Nothing of the sort is true.

There are plenty of open source projects with stable releases, for example Debian, Ubuntu LTS, Firefox ESR.

Some open source projects focus more on stability than others. The same is true for closed source software.

Stable in what way? Unless you want some new C++ features or something provided by the newer compiler, use debian's version or something.

The compilers are basically ABI stable right now.

If your complaint is support, well, yeah, nobody is going to prioritize fixing your bugs over someone elses if you don't pay them.

GCC does converge on stable releases, in the same way debian/ubuntu/everyone else does.

They declare they will not ship until there are less than X P1 bugs, X P2 bugs, etc.

These bugs get fixed, and the compiler ships. Non-primary platforms and miscellaneous bugs are simply an artifact of life.

> It makes me wonder how many people there are like me who would be willing to pay $100/year for a bespoke C compiler that was supported by a single source and stable.

Did you look at ICC / XLC / MSVC? They typically outperform GCC by about 20%, although I haven't checked in a while.

You should probably check again, but in any case MSVC shouldn't be compared to gcc/icc/clang - it can't even compile code written for a 14 year old language specification (C99), so no sane person should use it for C development these days.
FWIW, Microsoft hasn't made an effort to support much of C99 because almost none of their users (Windows and XBox developers) use C. I don't know any Windows or XBox programmers who uses C.

Your point is still valid: if you want to compile C99 code, MSVC is not even an option.

It depends on the features you use. If all you want is variadic macros, long long, __FUNCTION__, and stdint.h, it has those things.

If you don't care about sticking to C, you can usually get what you want with a C++ feature anyway.

http://stackoverflow.com/questions/3879636/what-can-be-done-...

Up to some point in the past, MSVC produced better code than GCC, but most recent benchmarks have them roughly equal. MSVC has actually gotten slower in the last couple iterations, but not by a lot.
I have ICC-ARM which has out performed GCC for a while. I still use arm-none-eabi-gcc for things which I expect other people to build.
I'm not sure MSVC produces faster code than gcc. Icc does, but MSVC doesn't.

Note: our build system uses three compilers.

Actually, more like The Portland Group: http://www.pgroup.com/
In my experience gcc has fewer bugs than icc or xlc.
Google fund things for all sorts of reasons. Other people having gcc is not a business risk, and improving security by maintaining a stable gcc might be worthwhile.
This isn't necessarily an open-source problem, but a politics and leadership problem.
> I read it to say that GCC is so open source that it cannot converge on a stable release. Further there isn't a non-commercial (aka free) incentive for making it stable, so it doesn't converge.

I don't see how not having a LTS version supports that argument. Lack of support for previous versions doesn't really imply anything about the stability of the past, present, or future releases. I think they're mostly orthogonal concepts.

I thought that clang was open source? I don't pay a single penny to use clang & llvm. I've been using clang in FreeBSD for a few months now and it seems to build faster than gcc.
I've recently been playing around with it, so it will be an interesting comparison. As others have pointed out if you don't like the change rate in open source you can always stabilize a version and just use it. Which I have done in the past. (Ubuntu 10.x on an EEEPC is a good example of that)