1. 36
  1.  

  2. 7

    Anyone care to explain in what way support for LLDB in gud.el can be construed as an attack on GNU packages? I’m not entirely clear on the reasoning. Being worried about compiler competition is one thing, but there’s a big step from that to being worried about a systematic attack.

    1. 22

      It is systematic because there is more than one effort to replace various GNU packages that make up the GNU build toolchain. Apple has been funding LLVM and clang development precisely because they want to replace the GNU build toolchain.

      If constant funding to do it isn’t systematic, I don’t know what is!

      Remember, technology doesn’t get investment because it is good, it gets good because there is investment. The only reason LLVM is competitive to the GNU toolchain is because it has had investment from the richest American corporation. LLVM and clang would not be anywhere near as good without that investment.

      Apple invested LLVM and clang not because it was better than GCC, but because they could get it better than GCC for their purposes.

      As an example, apple has made it difficult to use GCC on their systems now. I have used GCC for Mac builds of Fire★ in the past, but switched to clang because each upgrade of the Mac would break my GNU toolchain. I have spend DAYS fixing these issues for them to keep coming back.

      1. 20

        “The only reason LLVM is competitive to the GNU toolchain is because it has had investment from the richest American corporation.”

        While corporate investment is certainly a factor in the quality of LLVM’s codebase, that ignores the academic roots of the project and its original design criteria. The first line of llvm.org states “The LLVM Project is a collection of modular and reusable compiler and toolchain technologies,” while GCC has an entire page dedicated to it being “too big and intertwined.” This did not happen by chance, but was an intentional move by the project to thwart development of proprietary extensions. Stallman himself put the foot down on any GCC-based tool similar to clang-format or the clang static analyzer. It’s hard to be competitive in an area where you intentionally don’t compete.

        1. 6

          I’m confused, that page outlines why being too big is a problem and how to improve it and make it more modular. I think LLVM and clang will also be a mess in 30 years and something new and shiny will come around that all the kids will jump to.

          By the way, I have come across bug after bug using clang and LLVM. Maybe in 30 years, despite the mess, they will be relatively bug free.

          1. 11

            “Maybe in 30 years, despite the mess, they will be relatively bug free.”

            Maybe GCC will be as well!

          2. 4

            LLVM always had a very anti-GPL attitude. The GPL hatred was a big driving force for LLVM. That they wanted to make it modular was one thing, but there’s anti-GPL jabs snuck into several places of the LLVM website.

            It’s clear that a big goal of LLVM was to foster the creation of non-free software, a goal it has met admirably.

            1. 13

              How does this jive with Chris Lattner originally trying to get LLVM merged into gcc then? http://www.phoronix.com/scan.php?page=news_item&px=MTU4MzE

              I think you’re spreading FUD here to be honest. The anti-GPL jabs need some citations and indeed, even if true, what does the website text have to do with anything? I can show anti-LLVM/IUIC jabs on gcc websites.

              Is it anti-GPL or anti-GCC? Note gcc already has been forked due to politics once.

              1. 2

                I’d be interested in reading some of the jabs. Can you link to them?

            2. 19

              Apple has been funding LLVM and clang development precisely because they want to replace the GNU build toolchain.

              Which was prompted because GCC switched to GPL v3.

              There’s some irony in RMS blocking these patches which prevent users from having the “freedom” to use the debugger they want, in the name of… “freedom”.

              1. 15

                There is nothing ironic here. Apple could have still used GCC with GPLv3.

                EDIT:

                Also, what does “freedom” mean in the context of an organization like Apple. Are its freedoms the same as what a person has? If they are, should they be?

                1. 3

                  Was it really prompted by GPL 3? I thought it was because the clang architecture had better support for integrating into Xcode than GCC, which is more batch oriented.

                  1. 6

                    Yes, it was GPL3. Your hypothesis can’t be correct because when Apple made the decision, Clang did not exist. Apple made the decision first, and then wrote Clang.

                    1. 14

                      They also wrote a new SMB server because Samba switched to GPL v3 and they are removing more and more GPL (2) licensed things with each OS X release. Definitely not a coincidence.

                      1. 5

                        Incorrect. LLVM existed for 5 years as a university research project before Apple took it over (hired its developers away).

                        https://en.wikipedia.org/wiki/LLVM

                        1. 17

                          LLVM existed, but Clang did not.

                        2. 3

                          It was not my hypothesis… I knew I read it somewhere, but couldn’t remember where. I might have found it on Wikipedia’s Clang article:

                          LLVM was originally intended to use GCC’s front end, but GCC turned out to cause some problems for both the LLVM developers and Apple. The GCC source code is a large and somewhat cumbersome system for developers to work with; as one long-time GCC developer put it, “Trying to make the hippo dance is not really a lot of fun”.[8]

                          Apple software makes heavy use of Objective-C, but the Objective-C front-end in GCC is a low priority for the current GCC developers. Also, GCC does not fit smoothly into Apple’s IDE.[9] Finally, GCC is GPL version 3 licensed, which requires developers who distribute extensions for (or modified versions of) GCC to make their source code available, whereas LLVM has a BSD-like license[10] which permits including the source into proprietary software.

                          Saying that, I personally stopped using GPL around the time GPLv3 came about, because the license is so long and complex that I can’t hold it in my head and understand it. I started using the BSD license because I can at least read it without toilet breaks. (I have since started using the MIT license because it has fewer variants & less ambiguity.)

                          1. 2

                            Mea culpa.

                          2. 2

                            If you want to be sure, just look at which packages are 3 years old on OSX. It’s the ones that have gone GPL3.

                        3. 14

                          I think RMS' sabotaging any kind of IDE support sounds a lot more like a systematic effort to attack GNU than anything else.

                          1. 13

                            No, that’s him grasping at straws as a means to defend from the GNU attacks. Apple’s anti-GNU campaign worked. It all has its roots back when the GPL pwned Jobs:

                            Consider GNU Objective C. NeXT initially wanted to make this front end proprietary; they proposed to release it as .o files, and let users link them with the rest of GCC, thinking this might be a way around the GPL’s requirements. But our lawyer said that this would not evade the requirements, that it was not allowed. And so they made the Objective C front end free software.

                            http://www.gnu.org/philosophy/pragmatic.html

                            That’s what spurred the brunt of the Apple attack against the GPL. Jobs does not like losing, so he worked very hard to remove GPLv3 from Mac OS X and pour as much money as possible into LLVM in order to remove any further dependency from gcc.

                            So what can rms do to defend against this? Remember, this is an attack that is creating a lot of non-free software, which is everything rms has ever worked against. You think he should just pour more money into gcc development? He doesn’t have that money. He should ask everyone to work harder on gcc? He already asks that and they don’t listen. If you had campaigned your whole life for free software and people kept trying to sneak ways to make your software facilitate the creation of proprietary software, how would you respond if your life’s work was at stake?

                            All he can do is exert the authority people still give him. And people don’t have to listen to him, it’s all free software. If we all disagree so strongly, we can fork Emacs and put this very useless and minimal lldb support into it. People have already said they might do that.

                            1. 7

                              I’m still slightly confused, if apple has an anti-gnu campaign, how could Chris Lattner have even gotten the permission while working at apple to merge llvm back in the 2005-2006 timeframe?

                              It seems to me Apple has more of an anti gplv3 stance given they had at the time about 58 pieces of software included with osx around the 10.4 timeline. Now its down to about 18 with 10.10, and anything that was gplv2 or higher hasn’t been updated.

                              Given that jobs was at next in the early 90’s I find it a bit of a stretch to extend that to how apple is operating now honestly.

                              Honest question, llvm with say clang-format provides a distinct benefit to me as a developer (even in emacs), this is one example of things that for this whole time gcc hasn’t been able to provide. Is it an attack on gcc/gnu that a more open source, and not necessarily copyleft, licensed program helps developers get work done? Honestly I just want to get work done, and some of the recent talk of no refactoring plugins in emacs as an example, no lldb in emacs as an example are just the FSF/GNU folks saying we don’t like your type anymore.

                              For lldb its even more amusing because gud has debugger support for proprietary debuggers. The clang helpers that exist for emacs as addons are HUGELY useful. I understand the stance gcc/fsf has, I just think it might end up in the category of cutting off your nose to spite your face. I’m an old school bsd fan so honestly my whole view is biased there just to be up front about it.

                              From what i’ve heard through the grapevine apple is more worried about the requirements to divulge things like hardware signing keys etc.. and explicitly allow security bypasses than the rest of gplv3. Talking with lawyers here I get similar apprehensions. Given their security stance I think its a reasonable position to take, even if it disagrees with the FSF position. Unless anyone can point me to Microsoft or Google using gplv3 code in a hardware module context I think its one that a lot of legal people aren’t a fan of.

                              1. 2

                                so he worked very hard to remove GPLv3 from Mac OS X…

                                Was there ever any gpl3 software in osx? I know there was gpl2, and for the projects that went gpl3, they were basically frozen at their gpl2 version (bash, samba). Then replacements were found or written.

                                gpl3 has additions that apparently some developers (such as Linus) and businesses (such as Apple) that were comfortable with the gpl2 but were unwilling, or unable, to use gpl3 due to various reasons – patent grant clauses, clauses that may conflict with DRM, “anti-tivoization” clauses, etc.

                                1. 9

                                  In a world with DRM in coffeemakers, the need (from a user’s perspective) for GPL3 has never been more clear.

                                  It was bad enough when DRM meant that by using computers we gave up interoperability that we’d taken for granted in analog contexts for decades; but now we are expected to put up with this stuff in contexts where where most people wouldn’t consider a computer to be involved at all. How long do we have before you have to buy a certain brand of lightbulbs to work in your lamp? Or a certain brand of cookware for your stove? I don’t have much faith in the FSF’s ability to stop this, but they’re the only ones who are even trying.

                                  1. 2

                                    In a world with DRM in coffeemakers, the need (from a user’s perspective) for GPL3 has never been more clear.

                                    I also dislike DRM, so we agree there. However, I think the both laws and the market ( dont buy things that are drm'ed ) are the appropriate venue for stamping it out, not free software licenses.

                                    1. 6

                                      If you allow the use of patents or code signing to prevent the user from exercising the rights the GPLv2 grants them, why make your code GPLv2 (as opposed to LGPL/BSD/MIT) at all? Anyone who thinks GPL is important should think GPLv3 is important, for the same reasons.

                                      1. 1

                                        Anyone who thinks GPL is important should think GPLv3 is important, for the same reasons.

                                        Linus is an example of someone who likes gpl2 but not gpl3. I am sure there are others.

                                        1. 1

                                          Do you have a transcript? The headline is very contra my thoughts so I’d be interested to know his reasoning.

                                          1. 1

                                            I don’t have a transcript, no. I just watched the original video (full “town hall”), and later found this video which is just this particular audience question and answer – about 9 mins.

                                2. 1

                                  People have started to use alternatives to my software, because my software sucks in some parts where the alternatives don’t. The best answer to this is to keep my software at this state of suck to somehow hurt these alternatives.

                                  RMS logic.

                            2. 3

                              Because that’d enable use of LLVM (which is bad, as it competes with another GNU package) in yet another way.

                            3. 7

                              IMO gdb and gcc are pushing themselves out by not being competitive.

                              It’s one thing to argue against non-free and closed source software. But in this case lldb and clang are more free. On top of that, they’re better in many ways.

                              Instead of arguing against supporting alternatives, rms should focus on how to make gdb and gcc better.

                              1. 8

                                LLDB and Clang are free softwares, but whether they are “more free” is precisely the contentious point. Stating the contentious point as given is a bad manner.

                                1. 2

                                  minor nitpick: LLDB and Clang are not free software, they are open source software. The difference between free and open source software is the contentious point you are talking about.

                                  1. 10

                                    The funky BSD-alike license Clang/LLVM and related tools are under is most certainly free, but not copyleft. (“Open source” as used negatively by the FSF refers to software which allows users to read the source code but not to modify or redistribute it, and thus is not free software.) The contention goes the other way: some non-copyleft adherents insist that copyleft licenses like the GPL (under which GCC is licensed) aren’t free or aren’t sufficiently free.

                                    1. 4

                                      The whole “free” thing breaks down because you need to look at it based on the needs of who is trying to use the library/code/application.

                                      RMS is referring to the freedom of the User. They don’t need to worry about someone taking the application they really like and making it better and throwing a paid for license on it. Derivative works need to comply with the GPL as well, ensuring that the end user is always protected.

                                      Developers/Entrepreneurs don’t like this because they want to take a library and use it to do whatever they want, which isn’t always in the best interest of their users. If their project gets abandoned or the business disappears, a skilled user is not free to take the product or library and fix it to meet their needs.

                                      1. 1

                                        BSD licensed software also (hopefully) forms a “minimum level of quality” in the greater software ecosystem, as if there is a well done version that is BSD licensed and runs on the platform, why not use it? Common example: openssh

                                        “A rising tide lifts all boats”, or something like that.

                                        1. 1

                                          WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

                                      2. 1

                                        They may be free but they are not free software. That is the nomenclature. As far as I remember (from reading slashdot and lwn 10 years ago) the term Open Source Software was not coined by the FSF but was a move by the OSI (Eric Raymond and Linus Tovalds come to mind as proponents of the term). In an effort to distance themselves from Stallman and argue about the technical merits of open source for software development. As opposed to Stallman’s moral argument.

                                        nomenclature aside, I’m aware of the BSDs argument.

                                  2. 5

                                    What I think this whole GCC vs LLVM issue reveals is how terrible competition is. It destroys communities and pits groups against each other. Competition wastes resources and is one of the most inefficient ways to improve something. And most of all, there is a loser.

                                    I truly hope that we can go beyond competition, as it is a true blight on humanity.

                                    1. 10

                                      Friendly competition is good, look what speed wars between Chromium and Firefox did to the web. Competition doesn’t allow you to stay in your lovely ivory tower where everything is fine and dandy: you actually have to start listening your users and learn from your rivals. Although rivalry is best when it is friendly, as that will bring benefits from one project to other faster and pushes both projects forward faster than neither could do alone.

                                      Other option is to ignore benefits that competing project gives to their users and become obsolete. Sadly this seems to be the route various GNU-tools have picked to themselves.

                                      1. 6

                                        Friendly competition is an oxymoron. For every benefit you can claim competition has, I can show you 10 deficits it creates.

                                        The speed war is a perfect example. Why didn’t google contribute the V8 technology to mozilla instead of writing their own browser? How many resources were wasted reinventing and rewriting the same sort of thing?

                                        Lets look at another war, the browser war in the 90s. Competition made a MESS out of the web. Each browser vendor creates their own technology. Standards have made the situation slightly better, but not by much. There are still portability issues writing a Javascript app.

                                        For every benefit competition has, cooperation has the same but more efficient. Cooperation also has the benefit of building community instead of destroying it.

                                        When I am asked what level of competition is good, my answer is always “zero, none”.

                                        Unfortunately most of us are trained to compete at a very young age and really don’t have as much opportunity to cooperate. So those skills are not as developed.

                                        Let me tackle you main point, which is that competition drives motivation. That without it there is no motivation to improve. My response to this is that competition takes motivation that is internal and externalizes it. It weakens peoples intrinsic motivational muscles where they don’t have any unless there is an external motivation such as competition.

                                        Cooperation would strengthen intrinsic motivational muscles where people work towards a goal for their own reasons, instead of a threat to existence that competition brings.

                                        1. 7

                                          Why didn’t google contribute the V8 technology to mozilla instead of writing their own browser? How many resources were wasted reinventing and rewriting the same sort of thing?

                                          You seem to be very focused on what other people choose to do with the code that they write. RMS makes the same mistake a lot.

                                          1. 2

                                            No man is an island.

                                          2. 9

                                            It’s more complicated than simple cooperation vs. competition.

                                            Intergroup competition with infragroup cooperation can produce higher levels of intrinsic motivation (cf. http://psych.wisc.edu/cmsdocuments/TauerHarackiewicz04.pdf), and is arguably the evolutionary milieu of the human species.

                                            1. 1

                                              got 404 for that link.

                                              1. 3

                                                works for me, but i’ll rehost it for you: https://mega.co.nz/#!acxnXQhQ!C1Jj3wgdGIAZNEfOI0ZTobnd9dI9wkdGGjbladwP_DA

                                                There isn’t anything about copying on this doc, so I assume sharing it verbatim is ok.

                                                1. 2

                                                  Thanks for the link.

                                                  The first problem with that study that sticks out to me is that the activity they used, free throwing, was chosen because there is no interference between people.

                                                  Wouldn’t that nullify or even redefine what cooperation is? The benefits that i see with cooperation, like sharing resources, talents, helping each other out, are not tested here and even deliberately prevented.

                                                  How can this study test if cooperation benefits or not when they explicitly removed what most would see as benefits of cooperation.

                                                  Only thing they tested here, imo, is if cheering for your fello man improves their performance.

                                            2. 5

                                              Why didn’t google contribute the V8 technology to mozilla instead of writing their own browser? How many resources were wasted reinventing and rewriting the same sort of thing?

                                              What I have gathered from people working on the SpiderMonkey that time: they didn’t think it was an problem. Or to be more precise: they didn’t think making such level speed increase would be possible. Most likely it would not have been with architecture at that time! The fork was actually so good that V8 cranksaft was pretty much directly copy-pasted into SpiderMonkey: some classes has been renamed and the static analysis improvements in SM has made code divert, but the common ancestor is clearly present.

                                              Cooperation also has the benefit of building community instead of destroying it.

                                              In case of FF/Chrome (or gcc/clang), the problem is that the original project that has been “forked” or “copied” because the parent project has decided to ignore their community. People wanting to see their own vision are stomped down by existing project leaders and have left with no other option than to create competing project.

                                              Personal anecdote:

                                              I am young and I haven’t seen the age of proprietary compilers, but to me gcc feels like proprietary project because it listens my needs even less than some company I pay money for! I could try to add features I want to have in my compiler into gcc, but those wouldn’t go through because project leadership. So I cannot use gcc based tools to do static analysis to my C or C++ project in my editor or I cannot get AST/IR out of the gcc to build my own tools. And I wouldn’t get such changes to gcc because of RMS.

                                              To the old beards in the gcc mailing list gcc probably is savior that saved them from the shackles of the proprietary compilers. To me clang is savior that has saved me from endless headache of hatemail from people who want stab me because I forked their precious gnu compiler toolchain. Alas, I wouldn’t have lived with those awful error messages and lack of tools for much longer.

                                              1. 1

                                                If you are using XCode then you are using a proprietary compiler.

                                                If you are using clang directly from source then what advantage does it have over gcc for you? Are clang people more likely to take your changes upstream?

                                                Also, you clearly haven’t used the latest gcc releases, which have better error messages in my opinion than clang.

                                                1. 4

                                                  If you are using XCode then you are using a proprietary compiler.

                                                  The world is not divided into only gcc and XCode. Many of the BSDs were stuck using the last gpl2 version (I think GCC 4.2.1) of the compiler toolchain, and clang has been a huge improvement there. example

                                                  If gpl3 had been different, I wonder how things would be different today.

                                                  Also, you clearly haven’t used the latest gcc releases, which have better error messages in my opinion than clang.

                                                  How many years before that were they bad?
                                                  Why did they finally improve? Was it only after clang became viable?

                                              2. 3

                                                Cooperation like that sounds great, but the reality is that in many cases it’s easier to start over than to contribute to a large existing project.

                                                Imagine if the LLVM/Clang guys hopped onto the GCC mailing list and said, “We’re going to throw away a lot of your work and create a more modular architecture.” It would have never happened. The GCC devs would have shut it down immediately. They’d never get a single patch submitted.

                                                The same thing with V8 and Firefox.

                                                Honestly, I don’t care about GCC or Clang, I just want to compile and debug my code. Whichever tool allows me to do that the best is the tool I’ll use. The competition here is being created by GCC. Clang is off doing their own thing, and GCC is in the corner whining about it. As far as I’m concerned, the GCC guys can do whatever they want. Ignore Clang and become irrelevant for all I care.

                                                1. 1

                                                  Except that GCC has huge efforts to become modular and firefox rewrote thei js engine many times. The latest is in a new programming language called rust.

                                                  1. 3

                                                    Yeah, after their core developers realized they were losing users because other projects were doing those things.

                                                    My point is, it was less effort to create Clang than it would have been to deal with the politics of overhauling GCC. I mean, you can create a compiler that does what you want, or you can argue for years with RMS about whether GCC should be modified in a certain way.

                                                    1. 1

                                                      “My point is, it was less effort to create Clang than it would have been to deal with the politics of overhauling GCC.”

                                                      There was a part of GCC that Apple could not overhaul, which is the GPL. In terms of just technical issues, clang is several million lines of code. I highly doubt it would have taken more effort in GCC politics than writing millions of lines of code.

                                                      1. 4

                                                        It’s a lot more than just the GPL. As far as I know, RMS has been arguing against making the syntax tree and inner data structures of GCC available for plugins since before Clang existed. To think Apple could have waltzed in and said, “Here are the patches we need in GCC that make the syntax tree available for our proprietary IDE” and then the GCC guys would have just said, “Okay, thanks!” and pushed the changes along is ridiculous. It never would have happened. It’s not happening for Emacs, it sure as shit isn’t happening for XCode.

                                            3. 7

                                              The origin of LLVM is that some academics wanted to make a better compiler backend infrastructure. gcc’s RTL-based backend was pretty outdated at the time and didn’t support a lot of modern optimisation techniques very well. It was pretty much a nightmare to work with too - a vast amount of very intertwined code which really needed drastic refactoring. Releases were getting slower and slower as maintainers struggled with the ugly code base.

                                              LLVM was designed from the ground up to make a nicer compiler backend without all the historical code mess which was weighing gcc down. They did a good job of this. This all predates Apple’s involvement by many years.

                                              In this case competition really helped because it spurred the gcc developers along to improve some of their techniques. gcc has cleaned up its act a lot, largely as a result of this competition.

                                              1. 5

                                                In the interest of historical and technical accuracy:

                                                LLVM backend is not less C-centric, not now, never was. When LLVM first came out, its primary technical advantage was SSA-based IR. Soon after, tree-ssa project added SSA-based IR to GCC.

                                                In general, GCC backend is more language neutral than LLVM backend, because GCC supports or supported compilers for Fortran, Ada, and Java, and those were in production use. LLVM’s advantage in language neutrality is that it is easier to write frontends for LLVM. But that does not mean LLVM optimizes non-C languages better than GCC, and as I understand precisely the reverse is true.

                                                Edit: the parent comment edited “less C-centric” out. Thanks!

                                          3. 8

                                            Perhaps the FSF could support its child projects like GnuPG and improve gdb over supporting RMS' zealotry.

                                            1. 3

                                              If it is an attack is the code the weapon ?

                                              1. 2

                                                That’s kind of a GNU centric view though. There’s an effort to create a toolchain with different features and a different license. I’m sure many of the actors involved have different motives, which mostly revolve around furthering their own interests, rather than some kind of anti-GNU conspiracy.