Slashdot Mirror


GNU Grep and Sed Maintainer Quits: RMS and FSF Harming GNU Project

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.

35 of 476 comments (clear)

  1. Why does C++ matter? by PhrostyMcByte · · Score: 4, Interesting

    the example used was RMS's distaste for C++, not exactly a strong point against RMS

    So RMS doesn't like C++ -- this doesn't stop people who can use it properly from writing their projects in it, does it?

    Does RMS actually have control over what GNU projects are implemented in? If so, I'd say that's quite a strong point against GNU -- throw the whole "right tool for the job" bit out the window because one dude doesn't like it?

    1. Re:Why does C++ matter? by Anonymous Coward · · Score: 5, Informative

      From TFA (I know, I know, cardinal sin, but I read the article yesterday on LWN):

      However, all Stallman had to offer on the topic was "We
      still prefer C to C++, because C++ is so ugly" (sic). As a result of
      this, the GNU coding standards have not seen any update in years and
      are entirely obsolete.

      So, RMS wasn't involved in the C/C++ switch, but his refusal to acknowledge it has lead to a lack of "C++ is a real thing, we should have a coding standard" across GNU.

      I saw another comment somewhere (that I can't find now) about how, prior to LLVM, RMS *was* opposing many things (I believe, but can't be sure without the source, that the switch to C++ was one of these things), and since LLVM came out as a competitor, RMS has been compelled to be more amicable to change he doesn't personally like.

    2. Re:Why does C++ matter? by Anonymous Coward · · Score: 5, Interesting

      True, but those few people who use C++ correctly seem to have learned their lessons with C. I'm thinking of Sam Leffler, I've held up his clean programming in his HylaFAX software as examples of *how* to do C++, instead of merely holding up the numerous examples of how not to do it.

      Unfortunately for comparisons, Sam is one of the authors of BSD UNIX. Not NetBSD, OpenBSD, FreeBSD, or invent-yet-another-pointless-license-scheme-BSD. But original BSD. *Brilliant* programmer. Junior programmers should review Sam's code to unlearn the bad lessons taught by people who don't understand how object oriented work should be used.

    3. Re:Why does C++ matter? by dalias · · Score: 4, Funny

      The GNU coding standard for C++ should be that you use only the subset of C++ that's also valid as C... :-)

    4. Re:Why does C++ matter? by marcovje · · Score: 4, Informative

      Leffler moved on to FreeBSD afaik, and even was FreeBSD Foundation president for a while

    5. Re:Why does C++ matter? by Sir_Sri · · Score: 5, Interesting

      throw the whole "right tool for the job" bit out the window because one dude doesn't like it?

      Imagine a conversation goes like this. (Imagine that this is a shop that does C development right now).

      New guy: This project that needs doing. I could do it in C++, I could do it a lot faster than in C.

      Old manager guy: If we do it in C++ it means we have to keep C++ capable people on around. Even if you stick around 10 years from now you might be out of practice coding.

      New guy: Ok, but if we don't do it in C++ we're probably not going to get it done at all, because we don't have the resources to do it in C at all.

      Old manager guy: If it means we lock ourselves into a future of more skills than we have, it's not worth doing, because we can't guarantee being able to support it, and I don't want our name on abandonware.

      They'd both be right. And that would be why GNU still doesn't consider itself to have a stable release. If you demand everything be done exactly perfectly you'll never even finish one thing, and if you accept 'good enough' you can easily end up with bits of code clinging to life that you will eventually have to just rewrite.

      I just was on a project where one of the other software guys took all of the function names of a MS windows package, and completely rewrote how quite a lot of them behaved (not just implemented the same API differently, he actually completely changed what the functions do), but that was about 10 years ago. Now, to try and update that code and use the new version of the actual MS api we had a nightmare of a time, trying to figure out what he changed, and why was actually really hard and wasted a lot of money. And yet, it meant he had a working piece of software out the door 10 years ago that kept him in business for 10 years.

    6. Re:Why does C++ matter? by Zero__Kelvin · · Score: 5, Interesting

      "The GNU coding standard for C++ should be that you use only the subset of C++ that's also valid as C... :-)"

      That would not be a very good idea, since certain valid C constructs that are also valid C++ constructs behave differently.

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    7. Re:Why does C++ matter? by swillden · · Score: 5, Informative

      So RMS doesn't like C++ -- this doesn't stop people who can use it properly from writing their projects in it, does it?

      Yeah, after they enforce a company-wide ban on multiple inheritance, exceptions, and 95% of the publicly available libraries.

      Google doesn't ban multiple inheritance, though in most cases multiple inheritance of anything but pure interfaces is discouraged, and there's rarely any need for Google engineers to use all of the BOOST libraries, given Google's extensive internal libraries.

      I do wish that exceptions were allowed, but I understand the rationale for avoiding them (it's spelled out in the style guide), and can't disagree with the decision.

      (I write C++ code for Google.)

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  2. Distaste of C++ by BenoitRen · · 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++?

    1. Re:Distaste of C++ by russotto · · 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++?

      It's not irrational, or at least probably isn't. C++ is a horrible language, and I say this as a professional C++ programmer.

    2. Re:Distaste of C++ by Anonymous Coward · · Score: 5, Funny

      My distaste of C++ cannot be expressed as a fraction.

    3. Re:Distaste of C++ by Animats · · Score: 5, Interesting

      C++ is a horrible language, and I say this as a professional C++ programmer.

      C++ stands alone as the only major programming language with hiding but without memory safety. Strostrup is in denial about this, which prevents fixing the problem.

      Templates don't help. Trying to make templates into a compile-time programming environment results in a language that makes Perl look readable. Just because templates are a Turing-complete term-rewriting system doesn't mean you want to use them that way. Papering over the safety issues with templates doesn't help; the mold always seeps through the wallpaper. Usually at system calls that demand raw pointers.

      (Somewhere in the 1980s, low-level programming took a wrong turn. We had Pascal, the Modula family, and Ada. Things seemed to be getting better. Then Modula crashed and burned along with DEC, and Ada declined due to its bulk and overly expensive compilers. We all had to go back to C. That we're still stuck there is embarrassing. It's probably the worst major engineering standard since the British buffer-and-chain coupler from 1830 still in wide use.)

    4. Re:Distaste of C++ by thsths · · Score: 4, 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.

    5. Re:Distaste of C++ by Trepidity · · Score: 5, Interesting

      If anything, the dislike for C++ from people who use C++ regularly is much deeper than the more casual dislike that C programmers have. C programmers just think C++ is too complex and unnecessary, but C++ programmers find themselves so consumed by their dislike they end up doing things like writing a point-by-point rebuttal to the entire C++ FAQ.

    6. Re:Distaste of C++ by PhrostyMcByte · · Score: 4, Interesting

      What is it with open-source leaders and their irrational hate of C++?

      I don't think it's irrational. It's just for different reasons than many individuals may have.

      It is perfectly possible for someone extremely competent in C++ to write code that someone else, with an equal level of knowledge and experience, can't make heads or tails of without some serious review time.

      And then there's an additional problem that, because C++ is such a complex language, it's possible for people with more experience to write better code that people with less experience simply can't yet understand. And by less experience, I mean someone who understands the problem and the general solution, but only has 5 years of heavy C++ use. This problem of pure language complexity and a huge ramp-up time may not be unique to C++, but it's something C does not really suffer from.

      I say this as someone who absolutely loves C++ and uses it daily. I love the complexity. I love to play around with templates to do some micro-optimization that I'd probably never put in live code. But I must say, the idea of being a maintainer -- reviewing and committing a diverse set of patches like Linus has to do -- for a C++ project sounds incredibly daunting for the reasons given above.

      Often, this leads to atrocious usage guidelines that significantly hamper the flexibility and power of the language in an attempt to make it more accessible.

    7. Re:Distaste of C++ by darkHanzz · · Score: 4, Interesting

      On the other hand, it's the only mainstream language I know that supports both very low-level and very high-level programming style. This can be a real plus for compute intense signal processing, were a small minority of the code really requires low-level implementations. Being able to mix that with high-level abstractions (e.g. linear algebra factorizations) can give both efficient and maintanable code.

    8. Re:Distaste of C++ by VortexCortex · · Score: 5, Interesting

      Agreed. There are edge cases in the language where the bolted on features don't work together because the implementation issues weren't fully considered before the feature was adopted, and efficiency is a higher priority that not having exceptional cases in syntax. Since most of the language works with itself you only develop this hatred if you've got experience in other nicer languages with syntax isn't broken in places, or until you've mastered the language and been prevented from using it by its own design. The crux of the problem is two fold: C++ tries to distance itself from implementation details, while accepting implementation details as limitations for language constructs (polymorphism + multiple inheritance + template class + method & operator overloading == uninstantiated functions and indeterminate or uncompilable code) C++11 has addressed some of this, but IMO the language just isn't complete! Furthermore the strain is compounded due to C++ being forced to squeeze the substance of its syntax out of the meager scraps of symbol space left over from the voracious host language, C (without support for which the language would have never seen widespread adoption).

      Thus, the hatred graph is like a bathtub curve: It seems irrational to those intermediately knowledgeable about the language, but perfectly sane to many new comers and seasoned veterans of C++. A large amount of adoption is due to ease of code migration from C to C++, as opposed to say, Java, and is thus won on no real merit of the language itself, but by it's martyrdom at the altar of compatibility with C. Many of the C to C++ converts never "move the furniture", so to speak, and thus the missing paneling in the corner or dark stains under the rugs is never known to them.

      That said, I still use the language, it has its merits, but never all of its features at once -- That's impossible, unlike with most every other language that exists. This is where the hatred has its roots.

      Imagine a great Enchantresses who can open their spell book and can command the full fabric of her reality, then imagine a Powerful C++ Wizard who's book of spells has contradictory elements and seemingly arbitrary restrictions based only on the syntax of the spell definitions, they've each trained a mighty Sorcerer who's now well versed in both arcane books of magic, and its his turn to take on an apprentice. The sorcerer advises against C++ for the most serious of wizardry since more elegant alternatives exist. However, the young apprentice can't fathom why... The simple C++ spells she learned seem to work fine, a natural extension of the C illusionist lessons she learned; Did not re not her object oriented magic of mops and buckets allow cleaning the kitchen floors with any sort of bucket and mop? It's unthinkable that this spell shouldn't be applied to every floor -- NAY -- every surface and abolish cleansing chores forevermore... Soon the Sorcerer arrives to dispel the tangled templated abominations of multi-inherited broom-mop-bucket hybrids so overloaded they're smashing stacks of dishes with their many scrubbing appendages, and overflowing the tower with heaps of infinite buckets.

    9. Re:Distaste of C++ by Xordin · · Score: 5, Informative

      Reading Linux Torvalds on C++ might be instructive:
      http://harmful.cat-v.org/software/c++/linus

    10. Re:Distaste of C++ by TrekkieGod · · Score: 5, Interesting

      If anything, the dislike for C++ from people who use C++ regularly is much deeper than the more casual dislike that C programmers have. C programmers just think C++ is too complex and unnecessary, but C++ programmers find themselves so consumed by their dislike they end up doing things like writing a point-by-point rebuttal to the entire C++ FAQ.

      I think they're just more vocal. Not everyone hates C++. My job involves writing in C, C++, and C#. I love C++. In my ideal world, I'd have C++ with all the .net libraries (and no, managed C++ isn't that. C# is far preferable to writing in managed C++, as C# is actually a pretty good language and managed C++ doesn't give you any of the cool features of C++ that C# doesn't have).

      I find people's arguments against C++ to be quite illogical. For example, one of the reasons I really like the language is because it can do true multiple inheritance. People everywhere will then immediately correct me with, "multiple inheritance is bad, mmk?" Then they'll back up that statement by talking about the diamond problem, and how I should use interfaces. I do use interfaces, but they're not a replacement for multiple inheritance because it's still forcing me to duplicate code when I wouldn't otherwise have to. Besides, the language handles the problem in a reasonable way (the order in which you define the inheritance matters), and, as a programmer, if you're inheriting from two classes that have a method with the same signature, then those methods should be virtual, and you should override the method to do exactly what you want. The diamond problem isn't this beast for which there is no reasonable solution. It's just something you need to be cognizant of when coding.

      There's also the people who complain about all the incredibly hard to debug crazy stuff people do with templates. You're really just complaining about bad coding. Templates allow you to build more reusable code than generics, and that's how you should use them. If you're going beyond that just because they're turing complete and you can do more with them, well...you might as well complain about C after looking at last year's winner of the obfuscated C contest.

      --

      Warning: Opinions known to be heavily biased.

    11. Re:Distaste of C++ by celle · · Score: 4, Funny

      " the string handling alone is worth its weight in, well, gstrings..."

            If they're empty gstrings that's not saying much.

            capcha: adorable

    12. Re:Distaste of C++ by Kjella · · Score: 4, Interesting

      This sort of reasoning is what gets us bloated and slow desktop apps.

      No, it's what keeps people from ever getting around to fixing those issues because they're still busy chasing down application crashes and memory leaks, combined with a fear of throwing out bad code in favor of new code with equally severe bugs. Do any kind of profiling and you will see it's all long tail, a few sections of code are called extremely often and the rest rarely if ever during normal operation as they're error handlers and such.

      Except that CPU you're wasting is CPU you can't use for other things. It's expensive to build a data center twice as big because your code performs poorly.

      More expensive than the time and cost spent developing, maintaining and dealing with the fallout of bugs in your high performance delicate code? And again it's the long tail, you probably have 10% of the software you use taking 90% of the capacity leaving 10% for the other 90%. Even if their execution time doubled you'd need 110% capacity, not 200% capacity. All I'm saying is write your slow code as clean, safe and maintainable as possible and optimize the few things that really matter.

      --
      Live today, because you never know what tomorrow brings
  3. "Pointed criticism", but hardly "scathing rant". by Anonymous Coward · · Score: 5, Informative

    I advise people to read the actual message; this summary is exaggerated.

  4. Holy slanted summary, Batman! by murdocj · · Score: 4, Informative

    The posting is NOT a "scathing rant", it's a pretty clear, calm and well-reasoned explanation as to issues that the author sees with GNU and GNU software development. There's no flamebait, no ranting, no name-calling.

  5. Re:I often disagree with RMS, but... by Anonymous Coward · · Score: 4, Funny

    Except C++ isn't crap.

    Pshaw. Well, I guess we can't really blame the Inferiors. Until you mature, I suppose you won't have a lush, fully-grown neckbeard whispering in your ears the dark secrets of why any programming language invented past 1972 is inherently worse. Trust me, everything will make so much more sense once you've heard the beard. Then you'll understand why we ONLY decided to grudgingly tolerate C after we made it more baroque than necessary to ensure our own job security. This entire "easier to write code" fad will certainly pass.

  6. You're full of shit. Ever hear of RAII? by Anonymous Coward · · Score: 5, Insightful

    When using RAII 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.

  7. Re:I often disagree with RMS, but... by Anonymous Coward · · 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!

  8. Re:grep -p by jedidiah · · Score: 4, Funny

    > lol AIX who uses that shit

    Employers.

    --
    A Pirate and a Puritan look the same on a balance sheet.
  9. Re:He sounds like a whiny teenager by KermodeBear · · Score: 4, Insightful

    3. It simply isn't "cool" to be associated with a GNU project anymore

    That isn't quite what he said.

    3) 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.

    Being part of GNU is not an emblem of technical leadership anymore, either. "If it is done poorly in Unix, feel free to replace it completely with something totally different and better". Is this still true of today's GNU?

    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.

    --
    Love sees no species.
  10. Re:Stallman is the original neckbeard of computing by greg1104 · · Score: 5, Insightful

    No, that would be Thompson and Ritchie. 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.

  11. Horribleness in C++ by betterunixthanunix · · Score: 5, Insightful

    It is not hard to find examples of why C++ is bad. C++ is statically typed, but fails to deliver the sort of type system power that ML gives programmers. C++ is object oriented, but provides no metaobject protocol and forces programmers to resort to its clumsy templates system to do things that are not hard in languages with MOPs. C++ programmers are expected to figure out whether or not they should use a shared_ptr, weak_ptr, or unique_ptr, or if they should just give up on smart pointers and try to manage memory deallocation on their own (and, of course, there is no garbage collector, not even an optional one). The fact that "move semantics" and "r-value references" are considered to be highlights of C++11 speaks volumes about C++.

    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).

    --
    Palm trees and 8
    1. Re:Horribleness in C++ by Man+On+Pink+Corner · · Score: 4, 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.:

      "C++ is a general purpose programming language designed to make programming more enjoyable for the serious programmer."

      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.

  12. Re:Define horrible by betterunixthanunix · · Score: 4, Funny

    If C++ were a car, the accelerator would be a pedal located under the passenger seat, a dial on the radio, and a lever in the trunk. Most users would just shift into neutral, which would be a 14 step process, and push their car around the block; they would then point to this as a major accomplish, and would note that once the car is in neutral it is powerful -- after all, you can always shift into drive if you really need to!

    --
    Palm trees and 8
  13. Re:slightly off topic by WaywardGeek · · Score: 5, Interesting

    The comments below seem no more relevant than this "slightly off topic" thread... I find that unfortunate. Of people who have made the world a better place, I list RMS near the top. He's done so in a selfless manner that makes me proud to be human. Sure, I don't agree with him half the time, but if I could trade my life for one where I could do as much good as he's done, yeah... I'd do it. Have you ever heard of Gandhi? Ever read about that flake? He slept (as in sleeping - not sex) naked with young girls to prove to himself he could control his animal impulses. Yet few argue about what Gandhi did for the world. It kills me to hear about people complaining about RMS's views on C++, on which he happens to be mostly right, and even if you disagree this is not naked girl territory. We should acknowledge the outcome of his life's effort: the world runs on free software. Standing ovation for RMS! Imagine how much harder it would be to write awesome code if we didn't have all this free stuff!

    That said, RMS both promotes and harms the goals of the free software movement. As the "Cathedral and the Bazaar" pointed out, RMS brings a central control view to free software that is counter to the whole environment that made GNU/Linux awesome. Debian, IMO, epitomizes this flaw. Rather than helping young new programmer share code and ideas, you have to pray to the Debian Gods and hope they take pity on your pitiful new package before it can be share across the Debian universe. Sure, Debian has it's place... deep in the innards of server racks where 99.9% up time is required, but not on a bright young programmer's desktop. If you want to be part of the new innovative group of coders, go learn about programming for Android.

    I hope this message can finally be heard by RMS and those most central to the free software movement: we volunteer programmers are sick and tired of dealing with the wall of red tape you've built. Please get out of the way and let us do our thing. But you're right about C++.

    --
    Celebrate failure, and then learn from it - Nolan Bushnell
  14. The takeaway for me is... by mccrew · · Score: 4, Funny

    I guess the big news here to me was that GNU grep and sed were being maintained. :)

    --
    Hey, Windows users, there is no such thing as "forward" slash, there is only slash and backslash.
  15. Re:grep -p by toastyman · · Score: 5, Funny

    I worked with a Russian programmer of very few words, who willingly ran AIX as his desktop OS. When asked why, he said "I enjoy the strict confines of AIX."

    I had absolutely no idea how to respond to that.