GNU Grep and Sed Maintainer Quits: RMS and FSF Harming GNU Project 476
In a scathing rant posted to a GNU project mailing list, the maintainer of grep and sed announced that he was quitting the GNU project over technical and administrative disagreements. Chief among them: He believes RMS is detrimental to the project by slowing down technical innovation (the example used was RMS's distaste for C++, not exactly a strong point against RMS). Additionally, he noted that the FSF is not doing enough to help GNU "Projects such as gnash are bound to have constant funding problems despite being (and having been for years) in the FSF's list of high priority projects.". Finally: "Attaching the GNU label to one's program has absolutely no
attractiveness anymore. People expect GNU to be as slow as an elephant,
rather than as slick as a gazelle, and perhaps they are right. Projects
such as LLVM achieve a great momentum by building on the slowness of
GNU's decision processes, and companies such as Apple get praise even
if they are only embracing these projects to avoid problems with GPLv3."
The author is quick to note that he has no philosophical disagreements with GNU or the FSF.
Distaste of C++ (Score:5, Insightful)
I knew about Linus Torvalds's distaste of C++, but not Richard Stallman's. What is it with open-source leaders and their irrational hate of C++?
Re:Distaste of C++ (Score:5, Insightful)
It's not irrational, or at least probably isn't. C++ is a horrible language, and I say this as a professional C++ programmer.
Re:Distaste of C++ (Score:5, Insightful)
> I knew about Linus Torvalds's distaste of C++
And for good reason, C++ in kernel space is a recipe for disaster. Some parts of it may be useful, others would be highly inappropriate.
> What is it with open-source leaders and their irrational hate of C++?
There is nothing irrational about it. C++ is one of the most powerful compiled languages ever conceived, but it is very ugly. It also supports just about any programming paradigm, badly, making the choice between them especially hard. Every other language out there has more focus and more style, except maybe perl.
Re:Distaste of C++ (Score:3, Insightful)
Yes, it does:
Re:I often disagree with RMS, but... (Score:4, Insightful)
You're full of shit. Ever hear of RAII? (Score:5, Insightful)
When using RAII [wikipedia.org] sensibly, C++ does offer excellent support for babysitting your memory usage. In fact, it offers superb support for managing any sort of a resource that needs to be allocated and later deallocated. There is no good equivalent in C.
These days, C++'s modern smart pointer classes make memory management a complete non-issue. You get very predictable and effortless freeing of memory, all without having the performance of your app destroyed by garbage collection like you do when using a language like Java, C# or Ruby.
This is just the power of C++ in action. It lets you easily build minimal-cost abstractions upon C.
Re:I often disagree with RMS, but... (Score:4, Insightful)
That's why all of the leading DBMS's and most Triple-A video games are primarily written in C++, as well as the guts of Google's search engine, Amazon's order and fulfillment system, Microsoft Office and Exchange server, etc.
Because these people don't realize that C++ sucks that's why!
Re:He sounds like a whiny teenager (Score:5, Insightful)
That isn't quite what he said.
He said that GNU isn't attractive because the leadership isn't effective. It takes too long to make decisions. Sounds to me like "analysis paralysis", or at least typical management where people are too busy playing politics instead of trying to create something awesome.
yosefk is a Pussy (Score:1, Insightful)
He didn't master the tool called "C++", so he got himself a toy called "C#". Now he bitches about the tool when in reality his own conceptual and practical incompetence is to blame.
Re:Who Gnu (Score:4, Insightful)
It's like I just got out of a hot tub time machine and it's 1995.
Glacially slow development in GNU projects? That's not new.
Linux would not exist without the annoying aspects of GNU and the FSF. They would have made their own kernel in a timely fashion and Linus may never have been motivated to make his own.
In other news: water is wet and apples fall out of trees.
Re:Why does C++ matter? (Score:3, Insightful)
True, but those few people who use C++ correctly seem to have learned their lessons with C.
That may be, at least in part, because many of the less than ideal aspects of C++ come from its C heritage.
I don’t understand some of the arguments made against C++ by certain “elder statesmen” of the OSS world. It seems they don’t like some of the extra functionality available in C++, seeing it as overcomplicated or too readily able to hide behaviour. In itself, that’s a reasonable concern. But then they use C, and reinvent the same wheels using crude text substitution macros that could be doing or interacting with anything.
On another forum discussion a few days ago, I saw someone argue that the Linux kernel is very readable, citing this C file [linux.fm] as an example. I’m still not sure whether their comment was meant to be sarcasm.
Re:Stallman is the original neckbeard of computing (Score:5, Insightful)
No, that would be Thompson and Ritchie [wikipedia.org]. Stallman's neckbeard has spread horizontally to try and compete, but it's still no match for the epic reach into the neck Thompson's has in that shot.
Horribleness in C++ (Score:5, Insightful)
For me, the major issues in C++ are not even the lack of features, although most people start there; I point to the difficulty with writing reliable code in C++ as the most important problem. C++ exceptions are only useful in cases where there is no possible way to recover from an error. There are situations in C++ where exceptions are the only way to signal an error; thus there are situations in C++ where recoverable errors become unrecoverable for no reason other than deficiencies in the language. Worse still, the very situations where exceptions are the only way to signal an error also happen to be the situations where throwing an exception is dangerous: constructors and destructors. Beyond handling errors, there is the lengthy list of undefined behavior in C++, much of which could have been defined without any ill effects. The C++ standard even fails to rule out programs that could not possibly make any sense; for example, having a non-void function without any return statements (yes, most compilers will warn you about that -- but warnings are not part of the standard, and if most compilers can detect this there is really no excuse for the standard not explicitly forbidding it).
It is not hard to understand why "C++ is horrible" has become the go-to response to any comment about C++. It is a horrible language, and it is likely a culprit in the billions of dollars wasted on software bugs each year (buffer overflows, dangling pointers, etc.). It is a horrible language because it is inflexible, it lacks expressive power, and it makes things that are simple in other high-level languages needlessly difficult (how do you give the user a macro system that allows them to extend any feature of your program in C++? In some languages, that is as simple as giving the user access to a REPL, from which they can override or extend any behavior.). We are, unfortunately, stuck with this language, and will likely be stuck with it for a while (though I am hopeful that the need for reliable healthcare software will ultimately kill C++, MUMPS, and other awful languages).
Re:Horribleness in C++ (Score:5, Insightful)
I think the most revealing comment about C++ comes from Stroustrup himself, in the first line of the preface to the first edition of The C++ Programming Language.:
I suppose if you enjoy connecting car batteries to your testicles you might enjoy programming in C++ as well. But for the rest of us, this line adequately demonstrates how little self-awareness Stroustrup brought to the language design process.
Re:grep -p (Score:2, Insightful)
As an IBM employee, I am equally without words.
Re:I often disagree with RMS, but... (Score:4, Insightful)
Yeah, and here are some applications that run in demanding environments, that were not written in C++, and that you would probably be hard-pressed to write in C++ (at least with the same results):
Example 1: a DSL. Nice, but for demanding environments, go check ADA - full blown OOP - and generally slower than C++.
Example 2: A FTT routine, how nice. Having worked with assembly implementations on several architectures, hardly a good example - except if you look at all that "demanding" software that also uses FFT in C++. And its not like C++ is a black container unable to use 3rd party libraries.
Example 3: A fringe functional language. Don't get me wrong, I actually like some of the concepts of Haskell, but it is not a mainstream language, nor is an "industry standard" (except some specific companies), And Haskel is actually SLOWER than C++. A lot.
Why are you bitching about "demanding environments"? Can you enumerate which companies RMS has worked for? Because what I see is a guy completely out of touch with reality. And you may like him a lot, thats your problem, but if he had his way, you'd be compiling your ghc with EGCS today. If you think C++ is so broken, tell me - what is the size (bytes) of an unsigned int in C? Why promote so shamelessly such a defect-prone language - specially after a decade of vunlerabilities related to the poor implementation of the standard library? Why don't you bitch about that?
And you have *tons* of demanding environment examples done with C++, Python, PHP, Java, Ruby, C#/.NET, etc. and only a few done in pure assembly. Even most operating systems try to use as little assembly as possible. So your point is?
Disclaimer: I don't even like C++. It has most of the atrocities of C coupled with a half-assed OO support.
Re:Software liberation not necessary for open sour (Score:4, Insightful)
He needn't have said squat about re-distribution rights.
Except that redistribution rights are important today. Why should a company be able to restrict me giving away copies of programs?
Open-source, as defined by OSI, has some of the same issues by insisting on the freedom of re-distribution. Since they are not leftist fanatics like Stallman, one would hope that at least they would see it this way, and allow for a total non-free software to get open source endorsements as long as source code accompanied the binaries. That would achieve all the OSI goals of promoting better software, while also earning it the broad based support of the software industry.
As far as Stallman is concerned, it's the philosophy that comes first, not "industry support" of whatever the current fad is.
Stallman screwed a fantastic opportunity here - maybe deliberately, given his Marxist world views.
Your political dog-whistling really doesn't have any bearing on the merits of Free software.
Re:grep -p (Score:4, Insightful)
As someone who administers AIX but am historically from the Linux side of things, I have seen quite a few oddities on this supposedly-stable OS of IBM's, AIX.
I have seen the kernel get clobbered by authentication systems and PAM, repeatedly. It doesn't handle OOM conditions nearly as well as Linux does (though you can tune it to a similar degree, if only because Linux borrowed a lot from their implementation). I've seen a great deal more erratic behavior (eg. daemons crashing, lack of responsiveness, etc.) on AIX when approaching OOM conditions (with or without swap - just whenever the slab space is almost all used) than I ever have on Linux.
If it were so stable, it wouldn't need patching primarily for stability as regularly as it does from IBM. Sorry, but from where I'm sitting, AIX has a lot more patches being released for a great deal more things than RHEL does, for very basic things. IMO, the biggest reason AIX is even used specifically is due to legacy, and institutional knowledge - AIX knowledge doesn't go as stale as quickly as Linux distro-specific knowledge does, because nothing ever changes - ever - on AIX, they just add more stuff.
And, of course, the hardware AIX runs on is pretty much just pure awesomeness. That's the biggest reason AIX should even be considered.
(Funny enough, the VIO and/or HMC on most "AIX" equipment appears to be some neutered and highly customized version of SuSE, so technically, AIX can only really be as stable as Linux is.)
Eheh, explain Linux vs BSD then (Score:4, Insightful)
Microsoft LOVES BSD, they can take code from it and never contribute anything back. But it is Linux that got popular not BSD.
BSD has its supporters, like MS, who don't actually do anything to support it. Linux has supporters, like IBM, who do massive contributions.
The GPL has won, the only ones who hate is who want stuff totally free and not contribute anything back. Well, for those people there is BSD. Enjoy.
The fact that Linux is on its way to become the biggest OS, the most used and the most installs (thanks to Android) says enough that the GPL works a LOT better then BSD in encouraging industry AND consumer adoption.
And still kiddies who never will amount to anything claim that all the Linux users and contributors are wrong. OPEN YOUR EYES!
Re:You're full of shit. Ever hear of RAII? (Score:4, Insightful)
I hear this a lot - that it is faster, and my observations ( of a fair few GC-based language systems) are that is is tosh.
It is faster to allocate - any system that doesn't care about memory usage is, and given an infinite block of memory that you always allocate from the end is super fast. The problem comes when you have to compact - this is a pretty slow operation. You'd never think about writing an app that copied large blocks of memory about every second, yet this is exactly what the GC does once your app gets going. De-allocation is also slower that most other systems as it has to consider finalisation (which, as you noted is shite) but it is necessary - you cannot have the system deallocate an object while it contains other resources that require freeing, and you cannot have a high-level language that mandates you to manually free those things (C does that, its a fine language for its purposes, but its not considered as high a level as you want).
Then locality of reference, this is also mostly meaningless. I know you want memory blocks to be contiguous (imagine a string where each character was in wildly different memory locations), but compare what the GC gives you compared to the C style of allocating a block of memory and filling it with data - in a GC system you can allocate memory all over the place, and the GC will compact it to a point, but those blocks will never be exactly next to each other - which is what you want for the performance benefits. If you have a c style array, or a c++ vector, then you do get this kind of performance gain (at a cost of having to copy the memory into the pre-allocated buffer, but that's still no slower than the GC copying the same data when it does a compaction).
So think about what the GC really gives you - the ability to pretend you don't care about memory.
I'd say they made a huge mistake when designing GC systems, in that they always make it work with memory, but then apply it to objects. Object lifecycle is different to memory, you want objects to disappear when they're no longer used, only in some cases can you tell the system to destroy the object when it feels like it, but in most cases you want the object to clean itself up properly. There's no real reason why they couldn't have put RAII style semantics in (ie by making the system generate automatic calls to a destructor - like Microsoft now does with the using() syntax) and let the GC manage the memory allocation only.
But still, for performance, a GC is nowhere near as fast as a deterministic program. Just look at the performance counters in a .NET app to see the GC going bonkers. I've seen it compacting the heap hundreds of times a second in a decently written large app.
Re:Eheh, explain Linux vs BSD then (Score:2, Insightful)
I was going to reply with something along the same lines... GNU GPL won. The world runs on GNU as well as other respected FOSS licenses. You're point that Linux is becoming the world's most used OS is quite relevant. Linus continues to make software easier to write and share, with tools like git. However, the most popular GNU/Linux distros went the other way - binary incompatibility, complex and out dated package managers, and gate-keepers who revere the stability of their distro to the detriment of progress. With Android, Google wiped GNU off of Linux and started over, with a far simpler. more secure, and stable computing model. Then they opened it to developers who could publish any crappy app they like. The result is hundreds of thousands of apps, most of which are useful to someone.
Free software developers like me need a new home, where we can share code and apps as easily as people sell binary-only apps on Android. Computing continues forward, but GNU/Linux lags behind. Last night, I watched my daughter using an iPad with a keyboard, and I had the sudden realization that I was watching the future of computing: touch screens with keyboards where all the software is rewritten or massively customized for this environment. She was moving her hands like lightning, zooming and panning, and then hammering out text on the keyboard, faster than any keyboard/mouse combo could allow. With the Minecraft PE app, she showed that creating 3D content on a tablet is faster than the best desktop environment, and even first-person-shooters are more natural. I remain pessimistic that we can build successful free software tablet environment starting with GNOME or KDE. A free (as in freedom) software app store for Android would be awesome. I'd love to see a free software Android fork with a modern package manager and native development tools.