|
|
Subscribe / Log in / New account

Stallman on GCC, LLVM, and copyleft

Stallman on GCC, LLVM, and copyleft

Posted Jan 25, 2014 1:13 UTC (Sat) by silvas (guest, #87887)
Parent article: Stallman on GCC, LLVM, and copyleft

As an LLVM developer, I'm pretty confident in saying that there isn't a single one of us who likes maintaining private branches, and if we had our way with things we would do everything in the public tree.

The reason is that LLVM's development practices create a strong disincentive for keeping any code private because LLVM's C++ API's (which is where 99.999% of development happens) has no backwards compatibility and changes very rapidly, which means that anything that isn't upstreamed bitrots. We've heard tales of it taking months to merge the changes in a single release, or straight up abandoning private branches.

We don't do everything in public purely because of internal constraints of the companies that we work for and those won't go away without significant *societal* changes (i.e., the necessary changes vastly transcend the developers' own attitudes on the issue: we're talking changes at the levels of entire business models).

Now, you may say that "that's the wrong reason" to be pushing things upstream (i.e. it's pragmatic, not dogmatic), and I won't argue with that: it *is* pragmatic. Nonetheless, it is *very* effective in minimizing the deviation of the derived proprietary programs from the fully-free equivalent that you can build on your own from the public repository[*]. Realistically, this means that it maximizes the competitiveness of free programs with their proprietary counterparts[**]. I think is a win for free software.

[*] Note that copyleft has nothing to do with freedom. If you download the LLVM source code from the public repository and build it yourself, you can verify that the resultant program satisfies the Four Freedoms <https://www.gnu.org/philosophy/free-sw.html> and is therefore free software.

[**] Realistically, they are just as competitive along every technical dimension. For example, you'll never see an Apple compiler with better C++1y support than the public Clang.


to post comments

Stallman on GCC, LLVM, and copyleft

Posted Jan 25, 2014 9:20 UTC (Sat) by lkundrak (subscriber, #43452) [Link] (3 responses)

> As an LLVM developer, I'm pretty confident in saying that there isn't a
> single one of us who likes maintaining private branches, and if we had
> our way with things we would do everything in the public tree.

Why wouldn't you want your licensing term to reflect this practice then?

> [**] Realistically, they are just as competitive along every technical
> dimension. For example, you'll never see an Apple compiler with better
> C++1y support than the public Clang.

What about better ObjC support? What about iPhone platform support?

Why wouldn't you want your licensing term to reflect this practice then?

Posted Jan 25, 2014 10:28 UTC (Sat) by Wol (subscriber, #4433) [Link]

Because he has no say in the matter, maybe?

Just because you WRITE the code, doesn't mean you OWN the code. In the case he describes, the code is a "work for hire" so belongs to his employer.

Cheers,
Wol

Stallman on GCC, LLVM, and copyleft

Posted Jan 26, 2014 0:28 UTC (Sun) by silvas (guest, #87887) [Link] (1 responses)

> Why wouldn't you want your licensing term to reflect this practice then?

Because keeping private branches is a necessary evil. They are a pain, but the alternatives are much worse.

> What about better ObjC support?

As far as I've seen they just work on it in the public tree.

> What about iPhone platform support?

I assume you mean that the platform is locked down?

Well, that's their platform. They make the rules for who gets to compile for it. Now, you may say "well, they shouldn't restrict who gets to compile for their platform!" and that's fine, but it's a different issue, one which goes to the core of Apple's business model and the society that enables it and the individuals that make up that society. Even if LLVM/Clang were to magically become GPL'd tomorrow, the platform would still be locked down.

Stallman on GCC, LLVM, and copyleft

Posted Jan 26, 2014 18:25 UTC (Sun) by pbonzini (subscriber, #60935) [Link]

Is the ObjC runtime library public? AFAIK Apple open sourced the compiler but not the runtime library, and as a result two competing runtimes existed from GNU and NextSTEP.

Stallman on GCC, LLVM, and copyleft

Posted Jan 25, 2014 9:52 UTC (Sat) by coriordan (guest, #7544) [Link] (12 responses)

> For example, you'll never see an Apple compiler with
> better C++1y support than the public Clang.

You're probably right. Apple wouldn't have any interest in a proprietary fork with better C++1y support.

But when they (be it Apple, or IBM, or whoever) have some super new optimisation, or support for their latest platforms, or some other feature that can't be found in GCC, then they'd have an incentive to only offer it in their proprietary version.

Knowing them, I can't see why they spurn such an incentive.

With GCC, I know that forks will never be non-free, and I can say "never" with confidence.

Stallman on GCC, LLVM, and copyleft

Posted Jan 25, 2014 20:21 UTC (Sat) by Wol (subscriber, #4433) [Link] (4 responses)

You miss one very important point. Neither Apple nor IBM are *software* companies. Apple sells hardware - why should they care that a software company takes their innovations closed - so long as it sells more hardware.

Likewise IBM is a service company nowadays - if their innovations are taken closed but it lets IBM sell more hardware, then fine. And if IBM get paid to create these innovations as a "work for hire", then equally fine.

This "free/open" kerfuffle has most relevance when we're worried about software companies. As far as hardware or service companies are concerned, I think we've won the argument - write the software, plonk it in the public domain, and walk away.

We just need to win that argument in Hollywood, and the big software companies are toast.

Cheers,
Wol

Stallman on GCC, LLVM, and copyleft

Posted Jan 25, 2014 22:27 UTC (Sat) by jwakely (subscriber, #60262) [Link] (3 responses)

I think coriordan's point is not that an Apple or an IBM would be worried about another company taking their innovations closed, because that presumes the innovation was in the open in the first place. I think his point is that if their innovations never make it to the open version and are only in their own closed version, which only runs on their own hardware, then you have an incentive to buy their hardware to get their super-duper-improved version of llvm.

e.g. if the Xcode compiler has clever optimisations not available in the upstream llvm then that is an incentive to use Xcode, which is only available for Apple hardware, so it sells more Apple hardware. If the clever optimisation is in upstream llvm then it's available to GNU/Linux users on non-Apple hardware and doesn't help sell Apple hardware.

Stallman on GCC, LLVM, and copyleft

Posted Jan 25, 2014 22:48 UTC (Sat) by raven667 (subscriber, #5198) [Link] (2 responses)

That sounds fundamentally the same motivations that drove proprietary UNIX through the '80s and '90s. Just like today every hardware vendor grabs Linux as the first step in getting their widget to market but today, unlike then, there is pressure to push changes upstream, both from the GPL (which is a fantastic license) and from the complexity of maintaining an in-house fork compared to an '80s UNIX.

Stallman on GCC, LLVM, and copyleft

Posted Jan 26, 2014 14:35 UTC (Sun) by jwakely (subscriber, #60262) [Link] (1 responses)

> Just like today every hardware vendor grabs Linux as the first step in getting their widget to market

Except Apple :-)

They have a proprietary OS based on FreeBSD (and also iOS, whatever that's based on), and a proprietary compiler based on LLVM, and the rest of the community does not get to enjoy the goodies they add to their proprietary versions.

Stallman on GCC, LLVM, and copyleft

Posted Jan 26, 2014 18:12 UTC (Sun) by raven667 (subscriber, #5198) [Link]

To be fair Apples code base predates the existence of Linux, being from the 1980s, and they just did what many did before Linux which was to grab BSD off the shelf and start with that.

Stallman on GCC, LLVM, and copyleft

Posted Jan 26, 2014 0:58 UTC (Sun) by silvas (guest, #87887) [Link] (6 responses)

> But when they (be it Apple, or IBM, or whoever) have some super new optimisation, or support for their latest platforms, or some other feature that can't be found in GCC, then they'd have an incentive to only offer it in their proprietary version.

Basically, you're saying that GCC would rob them of an opportunity to gain a business advantage. I'm all for software freedom, but even to me that doesn't sound like a compelling argument to adopt GCC.

It's myopic to think that the software is somehow the key factor here: the assault on freedom in this situation is the incentive to keep it proprietary, and that is a much larger issue. There is a similar assault on freedom from the fact that their hardware designs are proprietary as well, and the incentives are similar.

I'm amazed that so many people are up in arms about software freedom when it is such a small part of larger issues with broad societal ramifications. As a simple example, many/most people (and in particular the people "in power", and our predecessors who made today's laws) think that you can own a sequence of 0's and 1's and prevent somebody else from having that sequence of 0's and 1's on their computer (or charge them money/send them to jail for doing so).

Stallman on GCC, LLVM, and copyleft

Posted Jan 26, 2014 17:18 UTC (Sun) by coriordan (guest, #7544) [Link] (5 responses)

> you're saying that GCC would rob them of an
> opportunity to gain a business advantage.

I didn't say that. GCC would require them to play by the same rules as everyone else. It prevents parasitism. Some (big) companies might be disappointed that they can't parasite GCC. I think it's twisted and inaccurate to repaint this as "being robbed of a business advantage".

> when it is such a small part of larger issues
> with broad societal ramifications

This is misleading for two reasons. The first is that it suggests that we should give up on one fight simply because other fights exist. There will always be other fights, so that logic would just lead to giving up on every fight.

(Some people love finding excuses to do less.)

Secondly, it's missing the point that we are actually winning this fight. Human rights and sensible tech policy have been retreating in almost every domain in the last twenty years. The free software movement has actually made progress. It hasn't won, and there's a mountain of work left to do, but it's stronger now then it was in 2000, and it was stronger in 2000 than it was in 1990.

If you want to campaign against other abuses of copyright, that's great! I wish you success. But you're not helping those causes by telling people to go limp on free software.

But you're not helping those causes

Posted Jan 26, 2014 21:26 UTC (Sun) by Wol (subscriber, #4433) [Link] (4 responses)

By telling people what they are and aren't allowed to do with their own work.

Regards,
Wol

But you're not helping those causes

Posted Jan 26, 2014 23:28 UTC (Sun) by coriordan (guest, #7544) [Link] (2 responses)

No one's telling anyone what they're allowed do.

We're discussing the effects of licensing strategies on free software's future. Some people are pointing out that copyleft helps free software more.

You're ignoring the substance of the discussion and instead saying that people who express their opinion on this matter are fanatics that are trying to boss people around. I disagree, I think this is important and should be discussed.

But you're not helping those causes

Posted Jan 27, 2014 19:58 UTC (Mon) by Wol (subscriber, #4433) [Link] (1 responses)

And what dragged me into this discussion was people expressing the sentiment that Google should not be contributing their code to LLVM/Clang. Why shouldn't they? It's their code!

And Google has never been particularly enamoured with copyleft.

Especially when a certain person expressed the desire for one free software program to triumph over another! :-) As I said, I'm no fan of monoculture. You only have to witness my diatribes about the brokenness of First Normal Form to know that !!! :-)

Cheers,
Wol

If they want to own it, they can keep it.

Posted Jan 28, 2014 3:58 UTC (Tue) by coriordan (guest, #7544) [Link]

> contributing their code to LLVM/Clang. Why shouldn't they? It's their code!

The point was if they want to help free software, they should contribute to copylefted projects. You're saying everyone should stand idly by while Google does whatever they want with "their" code. That's a recipe for failure.

Like any push for social change, getting to a society where computer users have freedom and control of their computers involves direct action (writing our own code), lobbying our governments, and pressuring companies.

> It's their code!

I don't agree. If they want to own it, they can keep it to themselves. Same for music, same for food.

Years ago, food was sold without the ingredients being listed on the wrapper. When food labeling was proposed, the food industry complained, "It's our food!", but governments decided that when you distribute food, you have responsabilities. It's no longer "your" food, it's food that's circulating in society.

I view software (and cultural works) similarly.

But you're not helping those causes

Posted Jan 27, 2014 21:48 UTC (Mon) by jwakely (subscriber, #60262) [Link]

There's a big difference between telling you what you should do with your code and telling you what you are allowed to do. Use whatever license you like, but don't expect everyone to agree with your decision.

Stallman on GCC, LLVM, and copyleft

Posted Jan 25, 2014 14:06 UTC (Sat) by robert_s (subscriber, #42402) [Link] (1 responses)

> As an LLVM developer, I'm pretty confident in saying that there isn't a single one of us who likes maintaining private branches...

Just have to point out the selection bias here. No, of course you don't like maintaining private branches, because you consider yourselves LLVM developers.

The people who _will_ be maintaining private branches won't consider themselves LLVM developers, just developers working on their proprietary projects (who probably don't talk about it much).

And since they wouldn't really care about the health of the wider LLVM project, strict "maintenance" of their branch would probably be a lot slacker ("do we care if we break obscure feature x? nah...").

Stallman on GCC, LLVM, and copyleft

Posted Jan 25, 2014 14:14 UTC (Sat) by Wol (subscriber, #4433) [Link]

But I think any developer - asked by his employer to maintain a private branch - is likely to kick back hard (if not that successfully).

Because one of two things is almost inevitable ... either

(1) the private fork will rapidly stagnate, or
(2) 90% of the developer's work will be make-work, trying to keep up with the Free version, for which the employer will be reluctant to pay.

In either scenario, I don't think the Free version has much to worry about. In scenario 1, the private branch won't be competitive. In scenario 2, the employer will have difficulty retaining staff.

Cheers,
Wol

Stallman on GCC, LLVM, and copyleft

Posted Jan 25, 2014 14:40 UTC (Sat) by pboddie (guest, #50784) [Link] (3 responses)

Note that copyleft has nothing to do with freedom. If you download the LLVM source code from the public repository and build it yourself, you can verify that the resultant program satisfies the Four Freedoms <https://www.gnu.org/philosophy/free-sw.html> and is therefore free software.

But what if you modify the software and distribute it only as a binary to other people? Which of the four freedoms remain for those people?

The whole point of copyleft is that the four freedoms remain, and it seems disingenuous to claim compliance with those freedoms by just observing the software at a given snapshot in time (when you were able to take advantage of those freedoms) and to disregard the process that guarantees them for everybody.

That's what copyleft has to do with freedom.

Stallman on GCC, LLVM, and copyleft

Posted Jan 25, 2014 15:46 UTC (Sat) by drago01 (subscriber, #50715) [Link] (1 responses)

> But what if you modify the software and distribute it only as a binary to other people?

Then this specific software is non free same if said vendor has written one from scratch.

> That's what copyleft has to do with freedom.

Copyleft just ensures that derived work is free as well. (which isn't a bad thing at all) but this in itself is a restriction so you cannot really argue that copyleft is free while non copyleft open source isn't (which actually allows the user to do more).

Stallman on GCC, LLVM, and copyleft

Posted Jan 26, 2014 14:18 UTC (Sun) by pboddie (guest, #50784) [Link]

Copyleft just ensures that derived work is free as well.

Yes, that's what I wrote.

but this in itself is a restriction so you cannot really argue that copyleft is free while non copyleft open source isn't (which actually allows the user to do more).

Yes, it has to be a restriction in order to guarantee something: the continued availability of the four freedoms for any future form of the code and for any recipient. Without that, the immediate recipient can enjoy the benefit of shipping a binary at the expense of the subsequent recipients who may then only get one or two of the freedoms. So much for user freedoms then!

(I'm not arguing that copyleft-licensing is the only way to release Free Software: that's a classic misportrayal of copyleft advocacy and isn't even a position of the FSF.)

Stallman on GCC, LLVM, and copyleft

Posted Jan 25, 2014 15:47 UTC (Sat) by dakas (guest, #88146) [Link]

An optimist is one who believes himself to be living in the best of all conceivable worlds.

A pessimist is one who knows it.

Copyleft has shown itself to be an effective and robust tool against software freedom either getting eroded or evaporated. Since it has to balance conflicting goals, one has to adapt this tool as the world changes and reevaluate the compromises taken and their respective drawbacks.

That involved both the license itself as well as how to make sure that its coverage of "the work as a whole" manages to actually affect what it is designed to be good for. That will always remain an issue, even though the current facts are, uh, not quite the state that Eric Raymond assumed to be working with.

Stallman on GCC, LLVM, and copyleft

Posted Jan 25, 2014 16:00 UTC (Sat) by Del- (guest, #72641) [Link] (99 responses)

> As an LLVM developer

Thanks for sharing! I really mean it, and in advance apologies for my rather confrontational approach.

> The reason is that LLVM's development practices create a strong disincentive for keeping any code private because LLVM's C++ API's (which is where 99.999% of development happens) has no backwards compatibility and changes very rapidly,

This sounds incredibly stupid. Stable API's is the back-bone of any successful open project. If this is your way of copy-left, then I suggest you use licensing instead. It is already causing a lot of pain for legitimate usage of LLVM:
http://savannah.gnu.org/bugs/?41061
as long as you have rich uncles with an invested interest in sabotaging community influence, I guess you can get away with it, but breaking API may chase away open projects that want to contribute to an ecosystem around LLVM/Clang.

> We don't do everything in public

Thanks for confirming my suspicion. I seems like LLVM/Clang is well on its way down a slippery slope. I predict that it is only a question of time until either the likes of Google give it up, or they fork it.

The real problem with projects like LLVM/Clang is that they attract developers that otherwise would have contributed to a sustainable open ecosystem. The idea of forking LLVM/Clang into some copy-left project is a pipe dream, there are very strong forces that will fight against it. Building open communities is heavy lifting and takes time, it is vulnerable (as the khtml story demonstrates).

Unfortunately few developers seem to know the legal implications (I am referring to patent protection here) of the license their project has. They may very well take you on your word and see contributing to LLVM/Clang is just as good for the open ecosystem as contributing to GCC. I am afraid that is very far from reality, and I am terribly afraid that it will become clear to all of us within a decade, or maybe not, many seem to see webkit as a success story for permissive licensing. I just hope that GCC manages to keep up, anything else will most probably be a catastrophe for all of us.

Stallman on GCC, LLVM, and copyleft

Posted Jan 25, 2014 23:45 UTC (Sat) by silvas (guest, #87887) [Link] (59 responses)

> This sounds incredibly stupid. Stable API's is the back-bone of any successful open project.

That's a different discussion... It's an interesting dynamic to be sure :)

> If this is your way of copy-left, then I suggest you use licensing instead.

It isn't done with the goal of being a form of copyleft. It's just how the community operates, and as a byproduct it creates a strong disincentive for keeping code private.

> Thanks for confirming my suspicion. I seems like LLVM/Clang is well on its way down a slippery slope.

Like I said, it's not the developers that make this choice. The people who write our paychecks make those rules. It's really disingenuous to talk about this as a property of LLVM/Clang: it's a property of the businesses that finance the project, their business models, and society as a whole.

In my experience, Stallman's view is extremely myopic because the real impediments to free software are larger societal issues[*]. Within the hacker community these issues don't really exist (Eric Raymond's essays cover this well), and so the default is that code is free software (four freedoms), but the other 99.99% of society is still stuck with archaic principles, and any time that a hacker's paycheck comes from "the rest of society", they are subject to a world where these issues exist.

> The real problem with projects like LLVM/Clang is that they attract developers that otherwise would have contributed to a sustainable open ecosystem.

Not exactly. We have to eat: somebody has to pay our paychecks. That's the reality. LLVM/Clang's development model has a nice balance of accommodating the demands of the people who have the money (so that they will pay (lots of) hackers to hack on it full time) while maximizing the competitiveness of free software alternatives to their proprietary offerings (which are just slight modifications of the free versions).

[*] The GPLv3 "anti-Tivo-ization" wording is a perfect example that shows that confining your view just to software is myopic. Why shouldn't we want the entire device and all its chips to be free also? Why shouldn't the company's internal discussions be done in public? The answer to these questions is the same as the answer to "why does non-free software exist?".

Stallman on GCC, LLVM, and copyleft

Posted Jan 26, 2014 12:16 UTC (Sun) by dvdeug (subscriber, #10998) [Link]

RMS's focus has been extremely successful at making a Free operating system available. Without RMS and the FSF, it's entirely possible that Linux as we know it would not exist, that sans GPL, the Linux kernel would never have grown the way it did, that sans FSF, the body of software that makes Linux usable (like a serious web browser, a decent word-processor, etc.) would never have existed.

Calling him extremely myoptic is absurd; there is no reason to think that him attacking a broader problem would have brought him nearly the success that he has had.

Stallman on GCC, LLVM, and copyleft

Posted Jan 27, 2014 11:38 UTC (Mon) by pboddie (guest, #50784) [Link] (4 responses)

In my experience, Stallman's view is extremely myopic because the real impediments to free software are larger societal issues[*].
[*] The GPLv3 "anti-Tivo-ization" wording is a perfect example that shows that confining your view just to software is myopic. Why shouldn't we want the entire device and all its chips to be free also? Why shouldn't the company's internal discussions be done in public? The answer to these questions is the same as the answer to "why does non-free software exist?".

So what's your point here? Stallman is just focusing on stuff he knows a lot about: it's pretty unreasonable to expect him to reform all aspects of society; I think that's actually down to other people if they think his ideals are compatible with other domains.

And in fact, people including Stallman have tried to encourage open hardware, arguably with less success because the development of hardware is somewhat different to that of software, because "the demands of business" combined with rampant patenting conspire to put hardware producers on the defensive, and because it is difficult to translate some aspects of copyleft into hardware and not have people complain about the translation. But it remains very possible that we'll see similar changes to the way hardware is made and licensed over time as well.

What you seem to be saying is that businesses have reasons for doing things a certain way and that they should be able to call the shots. What Stallman is doing is basically "consumer advocacy": when people buy a product, he's saying that it should really be theirs and they should be able to use it mostly as they wish and not how someone else dictates it should be used. Even then, he's only arguing on the basis that the hardware producer is reneging on a deal that they made with the authors of some software that gave them a viable product in the first place.

And people are demanding more transparency in business and society, and consumer rights groups have been active for decades. Telling people that "this is how things are done" and expecting them to just live with it is becoming an increasingly inadequate excuse for the status quo.

Stallman on GCC, LLVM, and copyleft

Posted Jan 27, 2014 21:39 UTC (Mon) by ibukanov (subscriber, #3942) [Link] (3 responses)

> So what's your point here? Stallman is just focusing on stuff he knows a lot about: it's pretty unreasonable to expect him to reform all aspects of society; I think that's actually down to other people if they think his ideals are compatible with other domains.

Yet GPLv3 anti-Tivo provisions are exactly the example where FSF tried to expand its influence to another domain (hardware design) with bad results. Consider Chromebooks. They use a verifiable boot where Google holds a private key. Yet a user can replace the bootloader with pretty doable hardware tinkering without any need for special tools. So Google does not take away the freedom, but the code cannot be GPLv3 due to that anti-Tivo provision.

Stallman on GCC, LLVM, and copyleft

Posted Jan 27, 2014 21:58 UTC (Mon) by mathstuf (subscriber, #69389) [Link] (2 responses)

That fits with the GPLv3. What isn't OK is where the key is what's preventing you from using your own binaries. The Chromebook has an escape hatch whereas others don't. Sure, you can't use the same verification infrastructure with your own key, but the GPLv3 doesn't say you need to be able to either.

Stallman on GCC, LLVM, and copyleft

Posted Jan 28, 2014 7:47 UTC (Tue) by ibukanov (subscriber, #3942) [Link] (1 responses)

> That fits with the GPLv3.

I was not talking about enabling developer mode on the Chromebook that disabled kernel verification, I meant a possibility to install a custom boot loader. The developer mode still does not allow that, one has to tinker with the hardware. And I do not even see how enabling developers mode fits with the “Installation Information” section in GPLv3:

“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.
Note the requirement that modified code is not interfered. This is not the case with the Chromebook as after activating that mode I cannot deactivate it and keep my changes. And if the mode is activated, then booting is clearly affected with a rather annoying message precisely "because modification has been made".

To stay within GPLv3 either the Google should provide a way to sign the code with their keys or Chromebook should allow to install custom keys (like with Windows 8 x86 hardware).

In any case, hardware changes to get a custom boot loader are outside “Installation Information” as otherwise anybody can claim that one can always disable a verified boot using a probing station or something to change a value in the register at the runtime.

Stallman on GCC, LLVM, and copyleft

Posted Jan 28, 2014 10:24 UTC (Tue) by khim (subscriber, #9252) [Link]

In any case, hardware changes to get a custom boot loader are outside “Installation Information” as otherwise anybody can claim that one can always disable a verified boot using a probing station or something to change a value in the register at the runtime.

Are you sure that argument will be bought by layman in court? Because this is where such things are determined. And I'm pretty sure Joe Avarege will see the difference between step-by-step instruction published on verndor's website and vague allusions to some complex and obviously illigal procedure.

Stallman on GCC, LLVM, and copyleft

Posted Jan 27, 2014 14:28 UTC (Mon) by Del- (guest, #72641) [Link] (51 responses)

> The people who write our paychecks make those rules.

Well, only partly true. An increasing number of individuals are full-time paid for making copy-left code. It seems you are taking the "nothing I can do about it" approach. Please do not degrade yourself like that. There is a good chance that somebody is willing to pay you the same amount you receive today to work on copy-left software. Maybe even your current employer. GPL is as much about putting the power into the hands of developers (i.e., out of the hands of managers) as anything else.

> In my experience, Stallman's view is extremely myopic because the real impediments to free software are larger societal issues[*].

Not at all sure why you can reach the myopic conclusion here, but I assume what you are saying is that GPL is too restrictive for society to accept it. You may be correct, but then again we are starting to see a rather overwhelmingly evidence of copy-left being a success for everybody, particularly those companies who made it big time the last decade (not thinking of Microsoft here). Let us look a bit closer at the anti-Tivotization expample. Linus repelled GPLv3 over it (which I believe was very unfortunate, because he lost the patent protection part too). One may of course speculate that he was in a tough situation, possibly seeing important backers of linux pull out. The most important of those had to be Google I guess, since they are the ones who took linux to its ultimate success. It may of course be that Google would not use linux had it been GPLv3, but I really struggle to see why. If any, it would help some of the litigation chaos we see now. Heck, even Microsoft puts patent protection into its most popular open license. The lack of any patent protection in BSD has made everybody with knowledge jump on the Apache bandwagon for their permissive license (including Google with Android), so it is clear that Google would prefer GPLv3 over GPLv2 on the patent part. Hence we are down to the Tivo story as the only problematic point. What exactly does it do for Google? Nothing, they make all their devices hacker friendly, even to the point where they are now the most prominent backer of coreboot, and open source bios. HTC provided some shitty tools to circumvent their own Tivo solution based on popular demand. Their market performance went from bad to worse when the pulled the tool back. Samsung and the rest sees their most popular devices getting hacked, so anybody so inclined can install Cyanogenmod on them. It is all a display of human stupidity, creating unnecessary obstacles for your own customers. Does anybody really believe that iphones sell better because they are locked down? I am pretty sure Google would have gone with linux even with GPLv3, and I do believe it would make the world somewhat better for all of us. It is also very clear from the Android example that we do need to use the license to make these things happen (i.e., open devices). I am sorry, but Stallman is not myopic here. Permissive licensing on the other hand is. The real question is, do you want to be part of the solution?

Stallman on GCC, LLVM, and copyleft

Posted Jan 27, 2014 20:39 UTC (Mon) by khim (subscriber, #9252) [Link] (50 responses)

Hence we are down to the Tivo story as the only problematic point. What exactly does it do for Google?

Makes it non-starter. Google does not mind GPLv3 for the developer tools, but (L)GPLv3 is not something they ever want to consider for the Android (that's why Android comes with no libstdc++.so.* and there are talks about switching to LLVM and libc++: this will make it possible to actually ship shared C++ library).

Nothing, they make all their devices hacker friendly, even to the point where they are now the most prominent backer of coreboot, and open source bios.

This is true, but they also know that they need phones lockable by carriers to be successull in the smarphone market (they only company which gets away without such lock-in is Apple and this partially because it offers it's own lock-in which means that tethering is still not allowed if carriers don't want it to be allowed).

Does anybody really believe that iphones sell better because they are locked down?

Oh yeah. Lock-down is vital for iPhone success. No, not directly, but indirectly: without carrier subsidies iPhones are too expensive in many parts of the world and carriers will not support them if they can not gurantee they'll not work as carriers want. Carriers want to control everything and Apple is adamantly against some changes (e.g. with most phones carrier's logo is placed on the phone case while Apple is ready do abandon particular carrier if this is the price it'll pay for the subsidies) and this is why they talk long and hard about the exact terms which are imposed on user, but fully-user-controllable device is not something they ever want to contemplate. And that's Apple! It drives hordes of most profitable customers to carriers! Android will not get such treatment, that's for sure.

I am pretty sure Google would have gone with linux even with GPLv3, and I do believe it would make the world somewhat better for all of us.

Really? Why are you so sure? We know that Google tries to reduce amount of GPLed code in Android and GPLv3 is banned in principle, why do you think GPLv3 kernel would make a difference? I think they would have just picked GPLv2 fork or even BSD kernel.

It is also very clear from the Android example that we do need to use the license to make these things happen (i.e., open devices).

Really? From Android example we see that all such tries will lead to rejection of software (most GPLed software is already removed from Android except for kernel and GCC is well on it's way to deprecation partially because of the same issue). Is that the result you want to see? Just how it'll help developers or users?

AFAICS GPLv3 gambit was risky and it failed. Failed quite spectacularly. I don't see how you can advocate “more of the same” after such a failure. It a pity. I for one, expected for this gambit to work. But it didn't. It's time to accept new reality and think about it.

Stallman on GCC, LLVM, and copyleft

Posted Jan 27, 2014 22:34 UTC (Mon) by Del- (guest, #72641) [Link] (30 responses)

khim, I am really struggling with making sense of all your statements. Even with a lot of goodwill and creative interpretation, I have a hard time making sense of your post.

> Google does not mind GPLv3 for the developer tools

OK, but the gambit failed, so I guess it is everybody else that saw GPLv3 as a little too much for GCC then. Exactly who are we talking about? Apple? From all I have found it was the copyright transfer of LLVM to FSF that stopped them from collaboration, before GPLv3 was a reality. AFAIK, Apple going for LLVM outside GCC had nothing to do with version 3. Do you have *any* information to back up your undocumented stream of statements?

> that's why Android comes with no libstdc++.so.*

Care to enlighten me, exactly what legal issues are there related to using libstdc++? AFAIK it is linked in just about any proprietary application out there.

> there are talks about switching to LLVM and libc++

Yes, but that may have many reasons, and may or may not materialize, and if it does, it will be because somebody regards it as technically superior. The license of LLVM is about as primitive as BSD, and lacks any reference to patents. With Google opting for Apache, I am pretty sure any switch to LLVM will be despite its license, not because of it.

> they need phones lockable by carriers to be successull in the smarphone market (they only company which gets away without such lock-in is Apple and this partially because it offers it's own lock-in which means that tethering is still not allowed if carriers don't want it to be allowed).

Please provide documentation that HTC lost carriers over offering tools to root their phones. I don't believe you will find any, and that basically nullifies you theory right there. Next time read my post before answering, I have provided explicit examples documenting my statements, I really appreciate if you counter them in a more scientific manner.

> Oh yeah. Lock-down is vital for iPhone success. No, not directly, but indirectly: without carrier subsidies iPhones are too expensive in many parts of the world and carriers will not support them if they can not gurantee they'll not work as carriers want.

It seems most of the world has the opposite conclusion, that Apple with Iphone demonstrated that they could strip carriers of their demands and make a great commercial success of it. I would actually say that not allowing carriers to control software on Iphones is the main reason why Iphone was a success. I want you to document your claim here, and tethering just doesn't cut it. It is a really minor point in this setting, nothing that anybody seriously believes would cut Iphones out of the market.

> From Android example we see that all such tries will lead to rejection of software (most GPLed software is already removed from Android

Google choosing linux as kernel has been a tremendous success for both Google and linux. Choosing any other kernel would be plain stupid, we have enough driver issues on Android as it is. I think Google would have done the smart thing and gone with linux whether GPL2 or 3. Would be good if somebody from Google could comment on that though, since we seem to be in a dead-lock on this one.

> most GPLed software is already removed from Android except for kernel and GCC is well on it's way to deprecation partially because of the same issue

This is getting very annoying. Have you changed the whole subject from GPLv3 being a mistake, to claiming that copy-left/GPLv2 is a mistake, and that GCC should be permissively licensed? This is starting to look like drivel.

You seem to believe GPLv3 failed, while arguing that GPLv2 also is a failure when it comes to Android, making the whole v2, v3 discussion moot. Make up your mind, do you believe that copy-left makes sense? If not, then your whole gambit comment is just stupid deception. For your information Black duck posts statistics on license usage, here:
http://www.blackducksoftware.com/resources/data/top-20-op...
Unfortunately, they do not distinguish between GPLv2 and GPLv2+, but as you see, the GPLv3+ projects are just as popular as Apache 2.0 (which is by far the most popular permissive license). Counting in GPLv2+ projects (which is also available under GPLv3), I believe you are looking at GPLv3 being the most used open license in the world. Chew on that one for a while.

Stallman on GCC, LLVM, and copyleft

Posted Jan 27, 2014 23:46 UTC (Mon) by Cyberax (✭ supporter ✭, #52523) [Link] (21 responses)

Basically, FSF said to industry: "F**k you, moochers. Let's see how you'll do without our precious GPL software"

Turns out that industry can do just fine without GPLv3 software. So now we have lots of non-GPL tools that are comparable or better than FSF's ones. Exceptions exists, like Samba, but even that gets worked around.

Stallman on GCC, LLVM, and copyleft

Posted Jan 28, 2014 9:22 UTC (Tue) by Del- (guest, #72641) [Link] (19 responses)

> Basically, FSF said to industry: "F**k you, moochers

No they did not, there were several drafts and the industry was consulted. In particular, the anti-Tivo clause was changed to only protect ordinary consumers. As already mentioned, the patent clause is already adopted by the whole industry. The only indication I have seen of GPLv3 being one too many, was Linus refusal and consequently linux and git using a GPL2 only approach. I am sure there are other following that example, but I have yet to see any. Maybe you can provide some examples of GPL2 only projects?

> Turns out that industry can do just fine without GPLv3 software. So now we have lots of non-GPL tools that are comparable or better than FSF's ones. Exceptions exists, like Samba, but even that gets worked around.

Did you just wake up or something? The industry has *always* done fine without GPL software regardless of version. BSD and Apache have been around for quite some time you know. However, it seems GPL has opened the minds of corporations towards open development. They basically want the developers, but not the commitments, hence permissive licensing. Hence, many companies are now investing in open software. Software houses tend to like permissively licensed code or dual licensing, since they want both ends of the deal. Customers and communities are typically best served by copy-left. Both have their place, and there is no drama in it. In fact, you and khim more and more appear to me as astroturfers. Exactly what is your take in this? Are you here just to sabotage copy-left, or do you actually believe that the world is best served by abandoning copy-left altogether?

Stallman on GCC, LLVM, and copyleft

Posted Jan 28, 2014 13:12 UTC (Tue) by Cyberax (✭ supporter ✭, #52523) [Link] (18 responses)

> No they did not, there were several drafts and the industry was consulted. In particular, the anti-Tivo clause was changed to only protect ordinary consumers.
Sure, and the industry said that it's unacceptable.

> Did you just wake up or something? The industry has *always* done fine without GPL software regardless of version. BSD and Apache have been around for quite some time you know.
Not really. GCC, gdb, glibc, busybox and others used to be indispensable. So indispensable that RMS used to call Linux as GNU/Linux.

Well, not anymore. Gcc is being replaced by clang+LLVM, gdb is being replaced by lldb and so on. All of the replacements are under permissive licenses (Apache or BSD).

>However, it seems GPL has opened the minds of corporations towards open development.
Be that as it may, it's not the point of the argument. Large organizations figured out that collaborating on non-essential software is better than reinventing the wheel all the time. They are also absolutely allergic to GPLv3 which denies them ability to keep ESSENTIAL software controlled.

>The only indication I have seen of GPLv3 being one too many, was Linus refusal and consequently linux and git using a GPL2 only approach. I am sure there are other following that example, but I have yet to see any. Maybe you can provide some examples of GPL2 only projects?
Sure. Apple ripped out Samba from Mac OS X - it's replaced by their own SMB implementation. They've also replaced gcc with clang - the last available officially supported gcc on Mac OS X is the last non-GPLv3 version. And Google avoided GPLv3 completely.

BTW, can you name a single GPLv3 project that is used consistently across all the architectures? I can't.

>Exactly what is your take in this? Are you here just to sabotage copy-left, or do you actually believe that the world is best served by abandoning copy-left altogether?
Basically, I think that copy-left is a nice idea in small quantities.

Stallman on GCC, LLVM, and copyleft

Posted Jan 28, 2014 16:16 UTC (Tue) by Del- (guest, #72641) [Link] (17 responses)

> Sure, and the industry said that it's unacceptable.

They surely did not, GPLv3 code is used everywhere in all industries. Major contributions are being made by industry to various GPLv3 projects too. BTW, why are you pounding that dead horse, you do not believe copy-left is a good idea in the first place (otherwise you would probably be evangelising usage of GPL2-only or LGPL licensing by now).

> Not really. GCC, gdb, glibc, busybox and others used to be indispensable. So indispensable that RMS used to call Linux as GNU/Linux.

They were always dispensable, there used to be many operating systems around remember? are you so quick to forget the BSDs and the Unix variants? Or windows, or OSK or OSX or IOS or .. This is getting boring. You are a smart guy, stop saying things you know are stupid. Actually, the last years copy-left has conquered HPC world wide, it is about to conquer the web-servers, and the BSDs need to turn to copy-left for the three most popular desktops. How about end-user applications, show me your permissively licensed apps? Don't be naive, without copy-left many of us would not be able to work with open source at all. We all need it. Its usage is growing, and it is fuelling the current growth of permissively licensed projects. Make no mistake though the majority of projects are still copy-left, and they are growing stronger despite Microsoft and Apple doing their best to sabotage it. Stop helping them please.

> Be that as it may, it's not the point of the argument. Large organizations figured out that collaborating on non-essential software is better than reinventing the wheel all the time. They are also absolutely allergic to GPLv3 which denies them ability to keep ESSENTIAL software controlled.

Large organizations are not allergic to GPL regardless of version. To the contrary they gladly pay Red Hat for it. Moreover, many of them are smart enough to see the benefits of copy-left. For some software houses it is different, but I hope and believe that the two most prominent ones (Microsoft and Apple) will pay a hefty price for their hostility towards copy-left and consumer rights in general.

> BTW, can you name a single GPLv3 project that is used consistently across all the architectures?

You mean operating systems not architectures, right? Of course, GCC and Gimp are used across all desktop OS families successfully by many. But you probably want me to name GPLv3 projects distributed by Microsoft and Apple for their operating systems, right? Why limit yourself to that, neither of the are fond of copy-left at all, so simply say GPL instead. Unless you have an invested interest in creating confusion.

> Basically, I think that copy-left is a nice idea in small quantities.

Thanks for showing colours. That basically leaves you with Microsoft and Apple as your goto place for software. Copy-left is very hard to get by without on any other platform if you want any kind of user experience. I suggest you run along to Apple and ask them for a permissively licensed desktop and apps. See how far your ideology takes you. Yes, ideology. I am afraid I am the pragmatic one among the two of us. Right now, it seems Apple's hostility towards copy-left is costing all ios users access to a wave of new apps:
http://www.infoworld.com/t/mobile-development/open-source...
Personally I am finding myself using more and more open apps on android, and yes, with a GPL license.

Stallman on GCC, LLVM, and copyleft

Posted Jan 28, 2014 16:29 UTC (Tue) by Cyberax (✭ supporter ✭, #52523) [Link] (16 responses)

> They surely did not, GPLv3 code is used everywhere in all industries.
Wrong. Stop deluding yourself.

iDevices and Androids have no GPLv3 software. Whatsoever. And they outnumber personal computers by now.

> Major contributions are being made by industry to various GPLv3 projects too.
So?

> BTW, why are you pounding that dead horse, you do not believe copy-left is a good idea in the first place (otherwise you would probably be evangelising usage of GPL2-only or LGPL licensing by now).
LGPL with static link exception is fine. GPL for end-user software is also OK-ish.

> They were always dispensable, there used to be many operating systems around remember?
Nope. Even FreeBSD was built using gcc, there literally was no free alternative. Remember?

> Large organizations are not allergic to GPL regardless of version. To the contrary they gladly pay Red Hat for it.
Can you understand what people write to you? It's perfectly OK for large companies to use GPL or even GPLv3 for infrastructure or non-essential services. It can't harm anyone that way. They might even throw a patch or two to tweak something.

But no large company produces devices with GPLv3. And just how many end-user devices with RHEL are being produced?

>You mean operating systems not architectures, right? Of course, GCC and Gimp are used across all desktop OS families successfully by many.
There's no GIMP on iOS. Or Android, for that matter.

>Yes, ideology. I am afraid I am the pragmatic one among the two of us.
LOL.

Stallman on GCC, LLVM, and copyleft

Posted Jan 28, 2014 18:30 UTC (Tue) by Del- (guest, #72641) [Link] (15 responses)

> iDevices and Androids have no GPLv3 software. Whatsoever. And they outnumber personal computers by now.

It is one industry, one datapoint. There is more in this world than smartphones. Stop making wide ranging statements when you really mean very specific usage. Android certainly do have GPLv3 licensed software in numbers, but you may refer to the operating system? Well Android is pretty stripped down, with only a custom Java engine to run the apps. The choice of using apache was maded specifically because HTC and the rest wanted to use an open core model from my recollection. It is an interesting dynamics, and shows a natural usage of permissive licensing. This may have nothing to do with version 3.

Let me help you out a bit. First up there is the boot-loader. Recall how lilo was very popular, but now all distros use Grub? Guess what licenses those two have? Does Google use Lilo for Android? Nope, of course not, they don't use Grub either, and mostly because Grub has a ton of functionality Android does not need. Same with SurfaceFlinger, do you think they did it because of the xorg license? Wow, Google really must hate the X11 license, wonder why Apple likes it... Now over to your favourite glibc, well do you remember the ordeal with Ulrich Drepper refusing patches for using glibc in an embedded setting? Debian forking glibc over to eglibc. Do you think maybe that could have somewhat more to do with bionic than the license? You are a smart guy, I am sure you get the drift. Again, somebody from Google speaking up would be nice. Not saying I know the priorities, but your conclusions are not very convincing to me.

> LGPL with static link exception is fine. GPL for end-user software is also OK-ish.

Hm, I cannot make any sense of what you are trying to say here.

> Nope. Even FreeBSD was built using gcc, there literally was no free alternative. Remember?

Let me help your memory. BSD used to have *drums*, a BSD licensed compiler: http://en.wikipedia.org/wiki/Portable_C_Compiler
You really need to get your history straight, copy-left ran the pants of anything BSD had to offer. It is your very good friend Apple and its fat wallet you can thank for BSD having another go at compilers. Seems they have a lot of money to spend on astroturfing these days too, I have never seen so many lies about GCC spreading before. Those unfamiliar with history is bound to repeat the mistakes, and it saddens me that so few care about the history.

>But no large company produces devices with GPLv3. And just how many end-user devices with RHEL are being produced?

and you know why, don't you? Does the name Elop ring any bell with you, at all? Did you have the pleasure of using the N9? A part from that GPLv3 has made success in network routers, Linksys (yes that was Cisco, do they count as large you think?) even marketed it. Any NAS box these days come with Samba, does Hewlett Packard count as large in your book by any chance? This is just getting stupid, I think I will stop here.

Stallman on GCC, LLVM, and copyleft

Posted Jan 28, 2014 20:56 UTC (Tue) by Cyberax (✭ supporter ✭, #52523) [Link] (14 responses)

> It is one industry, one datapoint. There is more in this world than smartphones.
Actually, there is not. Smartphones this year outnumbered all other computers, except for microcontrollers.

>Well Android is pretty stripped down, with only a custom Java engine to run the apps.
:facepalm:

And gcc is only a translator from C++ to machine code. And Linux is merely a wrapper over hardware-provided services. And Google is simply an indexer.

>The choice of using apache was maded specifically because HTC and the rest wanted to use an open core model from my recollection.
Nope. Android was designed this way to allow carriers to lock down phones, and total avoidance of GPL was a pre-emptive step to avoid being forced to support GPLv2 forks indefinitely.

>Well Android is pretty stripped down, with only a custom Java engine to run the apps. The choice of using apache was maded specifically because HTC and the rest wanted to use an open core model from my recollection.
Google uses Coreboot which is GPLv2 on Chromebooks. JFYI. Lots of Android devices use U-Boot which is, you guessed it, GPLv2.

> Let me help your memory. BSD used to have *drums*, a BSD licensed compiler: http://en.wikipedia.org/wiki/Portable_C_Compiler

No they didn't. The first attempts to use PCC to compile FreeBSD were made in 2007 or so. It has never been used in anger, unlike Clang.

> and you know why, don't you? Does the name Elop ring any bell with you, at all? Did you have the pleasure of using the N9?
So there's no phone with GPLv3 software out there. Even the new Jolla phone does NOT have GPLv3 anywhere, though they have quite a lot of GPL and LGPL software on it.

> A part from that GPLv3 has made success in network routers, Linksys (yes that was Cisco, do they count as large you think?) even marketed it. Any NAS box these days come with Samba, does Hewlett Packard count as large in your book by any chance?
Again, it's either isolated or used in non-core parts. Or in situation where GPLv3 has no bite at all.

So yes, it only reinforces my point: GPLv3 failed miserably.

Stallman on GCC, LLVM, and copyleft

Posted Jan 28, 2014 22:13 UTC (Tue) by Del- (guest, #72641) [Link] (8 responses)

> And gcc is only a translator from C++ to machine code

GCC is a compiler collection, it can do much more than Java.

> Android was designed this way to allow carriers to lock down phones, and total avoidance of GPL was a pre-emptive step to avoid being forced to support GPLv2 forks indefinitely.

Sloppy again are we. There is plenty of GPL code in Android as I am sure you know. You mean version 3 I guess. You may or may not be right. Like already mentioned, Android avoids GPL in user space due to it's open core model.

> So there's no phone with GPLv3 software out there. Even the new Jolla phone does NOT have GPLv3 anywhere, though they have quite a lot of GPL and LGPL software on it.

Actually I do believe you will find GPLv3 software on N9, basically from the Debian stuff. But you are right when it comes to Jolla not shipping GPLv3 in shipping images, here I found the documentation for you:
https://wiki.merproject.org/wiki/Architecture#GNU_utilities
Nokia on the other hand was big enough to make a difference, and Microsoft made sure that never happened. I would say Microsoft did a bargain when they got Nokia on board with an exclusive deal, worth every billion. However, GPLv3 software is easily available in abundance on Sailfish, Meego and Android. On a related note, Jolla does ship glibc, did you know that?

> Again, it's either isolated or used in non-core parts. Or in situation where GPLv3 has no bite at all.

You were flat out wrong, and are back-paddling desperately. May I suggest that you just admit it, GPLv3 is not that big of a deal on devices. Sure, there are manufacturers that want to lock-down devices, and they will probably avoid Grub. That's no biggie, Uboot serves them fine.

Just listened to Langley's talk, and it makes me depressed.

Stallman on GCC, LLVM, and copyleft

Posted Jan 28, 2014 22:33 UTC (Tue) by Cyberax (✭ supporter ✭, #52523) [Link] (6 responses)

> Sloppy again are we. There is plenty of GPL code in Android as I am sure you know. You mean version 3 I guess. You may or may not be right. Like already mentioned, Android avoids GPL in user space due to it's open core model.
There is _no_ GPL (of any version) in Android images and even no LGPL anymore. Android tools certainly use it.

>However, GPLv3 software is easily available in abundance on Sailfish, Meego and Android.
Sure. They don't limit third-party software, so they can't care less.

>On a related note, Jolla does ship glibc, did you know that?
Which is LGPLv2.1

> You were flat out wrong, and are back-paddling desperately.
Nope.

>May I suggest that you just admit it, GPLv3 is not that big of a deal on devices.
It IS a big deal on devices. So big that big vendors essentially forked the entire FSF stack to avoid it.

>Sure, there are manufacturers that want to lock-down devices
Again, another understatement like "the waves were higher than normal during the tsunami in Japan".

Stallman on GCC, LLVM, and copyleft

Posted Jan 28, 2014 22:49 UTC (Tue) by khim (subscriber, #9252) [Link]

LGPL is most certainly there: KHTML^H^H^H^HWebkit^H^H^H^HBlink^H^H^H^Hwhat-the-name-if-this-thing-today still includes few LGPL-licensed files. But all the new development there uses BSD (not Apache, BTW, but BSD) thus it's pretty limited and constrained.

Stallman on GCC, LLVM, and copyleft

Posted Jan 28, 2014 23:12 UTC (Tue) by Del- (guest, #72641) [Link] (4 responses)

> There is _no_ GPL (of any version) in Android images and even no LGPL anymore. Android tools certainly use it.

I believe linux is still GPL, and it is a part of Android.

> Sure. They don't limit third-party software, so they can't care less.

They provided it in repos themselves I believe.

But now I am afraid I have to call it a day..

Stallman on GCC, LLVM, and copyleft

Posted Jan 29, 2014 1:14 UTC (Wed) by Cyberax (✭ supporter ✭, #52523) [Link] (3 responses)

> I believe linux is still GPL, and it is a part of Android.

Ah yes, apart from Linux itself, of course. But Linux is an exception somewhat - it has a non-existent GPL enforcement and it's also firmly in GPLv2 only camp.

However, there _are_ Android implementations that do not even use Linux - Blackberry runs their own Android simulator atop QNX.

> They provided it in repos themselves I believe.
Links?

Stallman on GCC, LLVM, and copyleft

Posted Jan 29, 2014 3:08 UTC (Wed) by josh (subscriber, #17465) [Link] (1 responses)

> But Linux is an exception somewhat - it has a non-existent GPL enforcement

Not true. netfilter is enforced by its copyright holder, and several other kernel copyright holders have thrown their lot in with the SFLC. I'd guess that the only piece of GPLed software with *more* license enforcement than the Linux kernel is busybox.

Stallman on GCC, LLVM, and copyleft

Posted Jan 29, 2014 3:16 UTC (Wed) by Cyberax (✭ supporter ✭, #52523) [Link]

Yet binary-only drivers exist in basically every Linux mobile device. And that violates even Linus' tit-for-tat requirement.

Stallman on GCC, LLVM, and copyleft

Posted Jan 29, 2014 6:55 UTC (Wed) by Del- (guest, #72641) [Link]

> Ah yes, apart from Linux itself, of course. But Linux is an exception somewhat

Down to semantics are we. U-boot not being part of the image you mean? What are you trying to prove, that what Google forked and made themselves in user space on Android was permissively licensed? We agreed on that already. Just forgot, Uboot is GPLv2+ so available under GPLv2, but also available under GPLv3. A tiny fact you jumped over earlier in this thread.

> Links?

Dig yourself, I cannot fathom that detail making any difference for you at all.

Stallman on GCC, LLVM, and copyleft

Posted Jan 29, 2014 12:04 UTC (Wed) by jani (subscriber, #74547) [Link]

> Actually I do believe you will find GPLv3 software on N9

Nokia did not ship GPLv3 software on the N9.

Stallman on GCC, LLVM, and copyleft

Posted Jan 20, 2015 17:38 UTC (Tue) by jra (subscriber, #55261) [Link] (4 responses)

Del- wrote:

>> A part from that GPLv3 has made success in network routers, Linksys (yes that was Cisco, do they count as large you think?) even marketed it. Any NAS box these days come with Samba, does Hewlett Packard count as large in your book by any chance?
> Again, it's either isolated or used in non-core parts. Or in situation where GPLv3 has no bite at all.

So let me get this straight. You're saying that in a NAS box, Samba - the GPLv3+ SMB1/2/3 implementation that ALLOWS THE BOX TO FUNCTION AND IS THE ENTIRE PURPOSE OF THE PRODUCT is a 'non-core part'.

Hmmmm. I think you might want to look at the lifeboats. The argument is desperately listing and taking on water at an alarming rate :-).

Stallman on GCC, LLVM, and copyleft

Posted Jan 20, 2015 17:41 UTC (Tue) by jra (subscriber, #55261) [Link]

Oh sorry Del-, I mis-quoted. It was Cyberax (who is well known - at least to me - for such amazing leaps of logic when it comes to disparaging GPLv3 :-) who made that argument, not you.

Please accept my apologies :-).

Stallman on GCC, LLVM, and copyleft

Posted Jan 20, 2015 20:56 UTC (Tue) by Cyberax (✭ supporter ✭, #52523) [Link] (2 responses)

That's exactly what I'm saying.

Your core part is something that you differentiate on from your competitors. For SAN the most interesting part is their core storage management which is far out of reach of GPLv3.

For end-user NAS boxes companies usually have no differentiating features at all (except the components price that you can get from your Chinese suppliers). So the vendors don't mind putting GPLv3 on them.

Stallman on GCC, LLVM, and copyleft

Posted Jan 21, 2015 16:09 UTC (Wed) by paulj (subscriber, #341) [Link]

Looks like you're conflating "core" and "differentiate" there. SMB is a core feature for any kind of NAS storage box. Now, with Samba out there, it may be hard for vendors to differentiate themselves on it, so they have to find some other feature that differentiates them (which may also be a core, required feature for a NAS to have, but also need not be).

Stallman on GCC, LLVM, and copyleft

Posted Jan 21, 2015 17:32 UTC (Wed) by dgm (subscriber, #49227) [Link]

> Your core part is something that you differentiate on from your competitors.

Nope. That's your code *competency*, which is a business/management term http://en.wikipedia.org/wiki/Core_competency.

The usual engineering interpretation of the term is very different, and more in line with the FEMA definition: https://www.fema.gov/core-capabilities. Basically a core "part" is something you *require* to achieve a goal, not something that distinguishes you from the rest.

At least that's how I see it.

Stallman on GCC, LLVM, and copyleft

Posted Jan 20, 2015 17:29 UTC (Tue) by jra (subscriber, #55261) [Link]

It's *very* expensive to work around Samba :-).

Another one just bit the dust - NetApp just bought HvNAS (hvnas.com now redirects to NetApp), probably to try and shore up their increasingly creaky SMB2 implementation (leaving HvNAS's existing licensees holding a flaming bag of %*$# of course, but them's the breaks when you rent your code :-). Same thing happened to Likewise, but more proprietary companies got burned there.

Stallman on GCC, LLVM, and copyleft

Posted Jan 27, 2014 23:56 UTC (Mon) by khim (subscriber, #9252) [Link] (7 responses)

> that's why Android comes with no libstdc++.so.*

Care to enlighten me, exactly what legal issues are there related to using libstdc++? AFAIK it is linked in just about any proprietary application out there.

But it's not distributed with these applications, right? Big difference. You see, libstdc++ uses straight GPLv3 (not LGPL!) which means that if libstdc++.so.* is shipped on device one will need to privide some means of installing it.

Now, why can “normal” proprietary programs can ever use libstdc++ if it's under GPL, not LGPL? Because they don't ship libstdc++ by itself and thus are covered by the appropriate exception. Said exception may or may not cover distribution of libstdc++.so.* as part of the Android image (it's not clear which part of exception will play if we are talking about libstdc++.so.* distributed in isolation), but Google is not taking any chances. In fact Google is busy bringing LLVM and Clang to the condition where they could replace GCC. GPLv3 is big part of the reasoning.

With Google opting for Apache, I am pretty sure any switch to LLVM will be despite its license, not because of it.

Not exactly. Google prefers Apache, sure, but if choice is between GPLv3 and BSD then choice is obvious (BIONIC was based on BSD libc, after all).

Please provide documentation that HTC lost carriers over offering tools to root their phones.

Why would it lose carriers if it's all too ready to lock phones again at their request? Yes, HTC made a mistake and issued unlocker which was usable for carrier-subsidized phones. Mistake is rectified so no biggie. I'm pretty sure someone at HTC got pretty good cheving over said mistake, but in the end status quo is restored. It was available in the wild for exactly one day—recall that usually updates take months till they are rolled out in the wild (that's true for HTC at least, some other manufacturers are faster) and this will say everything you need to know about the situation.

Make up your mind, do you believe that copy-left makes sense?

Once upon time it made sense. Not anymore. Landley gave tech talk which explains what happened and why. In nutshell: GPLv2 was kinda-sorta-accepted by industry and it was loved by open-source and free-software folks, too which basicallu put the situation at the uneasy truce. But GPLv3 became a land-grab attempt and this gave clear signal to the industry: you can not trust FSF (and ideally need to drop GPL altogether if possible). The backlash was stricking: not only GPLv3 failed to achieve it's objectives (I know exactly zero devices which were opened up because of GPLv3; the most I've seen are some proprietary programs designed to inject GPLv3 binary in otherwise tightly locked firmware) it made GPLv2 weaker.

Linux is kind of exception: it's developers were pretty vocal about their thought on said land-grab which means that industry don't need to fear Linux because it'll remain where it started WRT licensing. Other projects are not so lucky… well, Blink and WebKit are fine, too (they use BSD license for all new files and only use LGPLv2.1 for old files which may even eventually disappear). Some other projects could be trusted, too, but in general GPL went from “this is the beast we know” to “this is something we need to discuss on case-by-case basis”.

Counting in GPLv2+ projects (which is also available under GPLv3), I believe you are looking at GPLv3 being the most used open license in the world.

Right. <sarcasm>Let's add Apache and BSD liceses to the list, too (because, you know, they are GPLv3-compatible).</sarcasm> When this article was written almost 70% of projects were GPL. Straight GPL! Not GPL+LGPL+BSD+whatever-you-want-to-repaint-as-your-ally. Today… six years after release GPLv3 is still used by many times smaller number of projects than GPLv2 and even if you combine GPLv2 and GPLv3 you still have much smaller number that GPLv2 had ten years ago.

Stallman on GCC, LLVM, and copyleft

Posted Jan 28, 2014 2:15 UTC (Tue) by mathstuf (subscriber, #69389) [Link] (3 responses)

> But GPLv3 became a land-grab attempt and this gave clear signal to the industry

If the GPLv2 had the GPLv3 terms would it be the same situation we're in now, or was the act of adding the terms to all projects which used '+' the problem?

Stallman on GCC, LLVM, and copyleft

Posted Jan 28, 2014 2:55 UTC (Tue) by dlang (guest, #313) [Link] (2 responses)

I don't think people would be avoiding GPL as much as they are, but I also don't think that it would be nearly as popular as GPLv2 was, and how much of the GPLv3 popularity is holdover from GPLv2 by people who don't know/care about the differences is hard to say.

I think the problem is a combination of both the terms and the change

on the one hand, if GPLv2 had the GPLv3 terms, I don't think it would have been as popular

but the fact that the terms changed in a way that many people consider very significant has also made it so that people don't trust the FSF to not make other changes in the future that could cause them even more problems, so they are much more paranoid about trusting GPLv3/GPLv3+ code than if the terms had been there from the start

Stallman on GCC, LLVM, and copyleft

Posted Jan 28, 2014 13:37 UTC (Tue) by pboddie (guest, #50784) [Link] (1 responses)

It's true that a number of people probably didn't know what to think about the eventual result of the rather long and rather democratic GPLv3 drafting process, and as a result of that uncertainty, fuelled by punditry about the supposedly disastrous consequences on adoption by "the industry" by people who should know better, some people adopted the "footprint in wet concrete" approach to licensing and insisted on "GPLv2 only" for their stuff.

It's a shame, though, that these people didn't appreciate that some of the additional measures in GPLv3 - thinking of the strengthening of patent litigation protection - were becoming the norm even in permissive licences, whilst other things - thinking of access to the four freedoms in "consumer devices" - may already be governed by the GPLv2, although bkuhn can probably say more about these things (as I believe he mentioned the latter in particular at one point).

If anything can be said about attitudes towards the GPL, perhaps it can be concluded that the "look the other way" mentality about various edge cases in GPLv2 couldn't be sustained with GPLv3 applied to works, and those benefiting from that mentality were obviously upset as a result. But I hardly think that selective enforcement of licences and discretionary grey areas of licensing are a sustainable way of delivering Free Software to wider society: there's always the risk that someone will get away with something undesirable (making patents a "kill switch" for licensing conditions, for example) and then use some ill-advised discretion by a project to legitimise doing so, without exception and without limit, for all Free Software.

Stallman on GCC, LLVM, and copyleft

Posted Jan 29, 2014 1:31 UTC (Wed) by dlang (guest, #313) [Link]

It wasn't a case of 'misunderstandings by people who should know better', it was a case of fundamental disagreement over what the requirements should be.

The anti-tivo clause is a perfect example. Linus stated that requiring that the code for the device be provided is good, requiring that you be given enough info to modify the software on the device was over the line.

that's not a misunderstanding of terms, that's a different requirement.

If you look at the angst that people have about secure boot and how some features need to be disabled or else the key will be revoked it seems very reasonable for companies who are building devices to be very worried about what the content providers would do to them if they gave out the info that let hackers modify the software on their devices to ignore any restrictions that are built in to the software.

you may not like that, but either it's a reasonable thing to do or this entire secure boot brouhaha is meaningless.

The FSF got a lot of feedback opposing this policy, but they decided that it was important enough to include even with all the opposition from opensource developers. And then they made it very clear that if this didn't end up with the result they wanted, they would make further changes going forward as they thought best.

this is the "I have changed the deal, and I will change it again if I want" attitude that many people saw that pushed them away from GPLv3

Stallman on GCC, LLVM, and copyleft

Posted Jan 28, 2014 10:07 UTC (Tue) by Del- (guest, #72641) [Link]

> In fact Google is busy bringing LLVM and Clang to the condition where they could replace GCC. GPLv3 is big part of the reasoning.

Please provide documentation. If you are only making this up as you go along, then please be honest about it. LLVM taking over GCC has been talked about for eight years now, and I see no sign of that happening yet. Actually, LLVM taking over GCC does not even make sense. LLVM is not a compiler, it is a project for creating compilers. If it out-competes parts of GCC, there is little preventing GCC from using LLVM as an optimizer tool. What I have seen over these years is GCC out-competing all proprietary compilers, with Intel as the last hold out. Yes GCC, not Clang, it doesn't even have openmp yet, so it will only be a real contender in a year or so.

> it's not clear which part of exception will play if we are talking about libstdc++.so.* distributed in isolation

So you don't know, and I am getting a bit tired of doing all the digging for you. Before you spout more statements, I suggest you dig further and figure out if bundling libstdc++.so with Android is a license violation or not. Maybe the Necessitas guys at Digia can help you out.

Why Google did bionic I don't know, but it can very well be for other reasons than license. Again, I have not seen any issues building proprietary stuff with glibc. After all, all applications on linux does it.

> Why would it lose carriers if it's all too ready to lock phones again at their request? Yes, HTC made a mistake and issued unlocker which was usable for carrier-subsidized phones.

Sorry, but I am starting to feel really grumpy. Let us sum up your findings:
-no carriers lost
-tool reverted for one phone in August 2013 (a weak and struggling HTC caving in)
-tool provided two years earlier (ref. http://www.htcdev.com/bootloader ), with no carriers lost for the entire two years
I call that pretty sound proof that the unlocking thing is a no-brainer. It did not shut anybody out of the market, and it will not shut anybody out of the market as long as somebody stands up. Right now you seem to be part of the problem, not part of the solution.

Actually this reminds me of when Netflix claimed that they could not make a version for linux because they needed the whole system locked down. Only silverlight could do the trick, and it was a demand from Hollywood. Finally, TI made a chip where they hard-wired DRM into it to satisfy the claimed demands of Hollywood so that the first Android device finally got Netflix. Fast forward a few months later, Netflix was available on all Android phones (apparently they could not withstand the anger of all the customers being left out). Only weeks later they started to provide patches for Netflix on CyanogenMod, at the time a totally DRM free version of Android.

I am sick and tired of intelligent people telling me that it is all hopeless, and that we should just give up. Giving up is not an option.

> Right. <sarcasm>Let's add Apache and BSD liceses to the list, too (because, you know, they are GPLv3-compatible).</sarcasm>

This is beneath you, you should know GPLv2+ provides the code "at the recipients option" under GPLv3. That is very different from blending in GPL compatible code. For all practical purposes you can regard GPLv2+ as providing the same rights as GPLv3+, only differnces is that you can mix it with GPL2-only code, and fork it to GPL2-only code.

> Today… six years after release GPLv3 is still used by many times smaller number of projects than GPLv2 and even if you combine GPLv2 and GPLv3 you still have much smaller number that GPLv2 had ten years ago.

And why do you think this is? I can only see two important factors in keeping GPL2 alive. One is that Linus fought it, and he is pretty influential. The other is that FSF made GPLv2 and GPLv3 incompatible, a terrible mistake that makes me want to cry.

Stallman on GCC, LLVM, and copyleft

Posted Jan 29, 2014 23:54 UTC (Wed) by nix (subscriber, #2304) [Link] (1 responses)

You see, libstdc++ uses straight GPLv3 (not LGPL!)
This is factually incorrect. If libstdc++ used either license it would be nearly impossible to compile non-GPL C++ programs, because a lot of libstdc++ is implemented in header files.

See any file at all in libstdc++, and the Runtime Library Exception.

A license with this exception is GPL- and LGPL- and for that matter BSD-compatible, but it's not the GPL any more.

Stallman on GCC, LLVM, and copyleft

Posted Jan 29, 2014 23:56 UTC (Wed) by nix (subscriber, #2304) [Link]

And, er, you said as much in the next paragraph. I wish there was a way to delete stupid comments on LWN (or maybe just my own).

carrier "subsidy"

Posted Jan 27, 2014 22:39 UTC (Mon) by tialaramex (subscriber, #21167) [Link] (18 responses)

"without carrier subsidies iPhones are too expensive"

Those aren't subsidies. As with similar deals in the used car industry what's happening is that you're paying over the odds for a small unsecured loan, but it "feels" like you got something for free.

Cell service is worth maybe $15-20 per month. If you're paying more (or if your carrier tries to persuade you that shouldn't include say, text messages or Internet access which are clearly just service) then they are making a lot of money off you. If you're paying more to get a "free" phone then the phone wasn't free, was it? If you find you're paying $30 per month over two years for the "free" phone over and above what the actual service is worth, that phone cost you about $700 AND locked you into a deal you might have wished to change.

If you can afford a "subsidised" phone you could have more easily afforded to borrow money to pay for the phone outright.

carrier "subsidy"

Posted Jan 28, 2014 0:05 UTC (Tue) by khim (subscriber, #9252) [Link] (17 responses)

This is all well and good if you can actually find a plan which is $15-20 per month. Then you discussing is valid. In countries like US or Japan your choice is service without “free” or “cheap subsidized” phone or the same service for the same price without it (and in both cases it's not $15-20 per month, that's for sure). In such a case phone without “subsidy” is DOA. You may explain that “it's not really a subsidy” till you are blue in face, but phone is still DOA. Just ask Nokia (well, by now you'll need someone from “old Nokia”) which was extremely strong in US at the end of last century yet went to single-digits when it angered carriers (it refused to cripple their phones by disabling tethering: huge crime in their books).

carrier "subsidy"

Posted Jan 28, 2014 0:19 UTC (Tue) by dlang (guest, #313) [Link]

there is some sign of hope in the US market, small player have been eliminating the subsidized service, and T-mobile has as well.

Let's hope t-mobile is successful and the other big carriers end up doing the same.

carrier "subsidy"

Posted Jan 28, 2014 10:41 UTC (Tue) by Del- (guest, #72641) [Link] (10 responses)

> Just ask Nokia (well, by now you'll need someone from “old Nokia”) which was extremely strong in US at the end of last century yet went to single-digits when it angered carriers (it refused to cripple their phones by disabling tethering: huge crime in their books).

Please document this.In reality, tethering can be blocked in numerous ways, locking down a device is not necessary.

carrier "subsidy"

Posted Jan 29, 2014 7:12 UTC (Wed) by dlang (guest, #313) [Link] (9 responses)

> In reality, tethering can be blocked in numerous ways, locking down a device is not necessary.

Not really. If the mobile device doesn't tell the carrier that it's doing tethering, and instead uses the kernel masquerading functionality, the carrier can't tell what data originated from the phone and what originated from the network.

The most they can do is to be a mitm and look for things like user-agent values and block ones that they think are not on the phone (which breaks things for people who need to change their phone's user-agent to deal with a broken website)

David Lang

carrier "subsidy"

Posted Jan 29, 2014 18:32 UTC (Wed) by Del- (guest, #72641) [Link] (8 responses)

> Not really. If the mobile device doesn't tell the carrier that it's doing tethering, and instead uses the kernel masquerading functionality, the carrier can't tell what data originated from the phone and what originated from the network.

It is quite easy to have the phone delivered with various software locks to the consumer. Of course, hackers can circumvent it, especially if it is open source. For instance the carriers over here preloads the phones with their own apps, and you can not remove them in the app manager. How many go through the trouble of circumventing it? I did, but I am willing to bet very few. A hacker easily circumvents just about any lock on an iphone too, and this is fairly well known.

What I am trying to say is that all you need to do is to make it awkward to enable tethering, and the lock will work for 95% of the users. Even make it a breach of the contract, and even fewer will attempt circumventing it. Among those 5% circumventing it at least a couple of them would circumvent it regardless of what you do. In conclusion, I don't see any real issue for vendors/carriers. They get their money typically through two year contracts, and who really needs to lock down anything when you have a two year contract securing all payback.

There is no question that many of the device vendors want the freedom to lock down devices, and hence do not want GPLv3 in parts of the software stack like boot-loader or init-system. Still, from what I have seen (which may or may not be representative), the vendors of network routers and NAS devices have no more issues bundling Samba than they have bundling linux. This leads me to believe that they would bundle linux too even if it was GPLv3. I may of course be wrong, and since nobody called the bluff we will probably never know.

carrier "subsidy"

Posted Jan 29, 2014 18:58 UTC (Wed) by dlang (guest, #313) [Link] (7 responses)

the statement that I was responding to was that there were lots of ways to prevent tethering without locking down the phone.

I say that without locking down the phone, it's easy to have tethering enabled by loading things on the phone

you reply that if the vender puts things on the phone that the user can't remove, they can prevent tethering. In my book, that's locking down the phone. If it's not locked down, the user can remove those things.

carrier "subsidy"

Posted Jan 29, 2014 23:01 UTC (Wed) by Del- (guest, #72641) [Link] (6 responses)

I think we are talking past eachother. I was simply talking about bundled apps and some modified system internals being enough to block most from tethering. With locking down the device I was thinking in the Tivo sense, which is quite different.

carrier "subsidy"

Posted Jan 30, 2014 1:51 UTC (Thu) by dlang (guest, #313) [Link] (5 responses)

I think we are using similar terms.

I'm saying that unless you do a tivo-type lockdown of the phone, your other bundled apps won't matter (if you decide to cripple the kernel that may be harder to fix)

If users can install their own stuff without a tivo type lockdown, then they can and will override whatever lockdown your bundled apps try to force.

carrier "subsidy"

Posted Jan 30, 2014 8:05 UTC (Thu) by Del- (guest, #72641) [Link] (4 responses)

> I'm saying that unless you do a tivo-type lockdown of the phone, your other bundled apps won't matter

I believe we disagree here. I believe very few people will alter the OS image shipped with a smartphone, even with access to all source code. Therefore, I believe simply disabling stuff in the shipping image is sufficient to block most customers from tethering.

> If users can install their own stuff without a tivo type lockdown, then they can and will override whatever lockdown your bundled apps try to force.

As I said, people do this to iphones today, so even with a tivo type lockdown they can and will override. For a company (be it vendor or carrier), I believe the real issue is how many would do it given a certain level of inconvenience.

carrier "subsidy"

Posted Jan 30, 2014 10:20 UTC (Thu) by dlang (guest, #313) [Link] (3 responses)

it's funny that you use the iphone, because that is an example of a tivo type locked down device.

carrier "subsidy"

Posted Jan 30, 2014 14:43 UTC (Thu) by Del- (guest, #72641) [Link] (2 responses)

> it's funny that you use the iphone, because that is an example of a tivo type locked down device.

Of course, that was why I used it as example. It is an example showing that in practise it is often impossible to lock down the device. Hence for any practical concerns whether you lock it down Tivo style or just make it inconvenient for the consumer to use it in unintended ways (like removing the tethering possibility from the system, requiring somebody to patch system internals to enable it again), can amount to the same end result for the vendor. They get their money, and they get fine grained control on what functionality the user has access to.

I have one very real life example of how ridiculous the Tivo stuff can be. As already mentioned HTC actually provides tools to unlock their devices, so you could say that those devices are not locked, but there is a level of inconvenience if you want to swap out the image it came with from the carrier. Now my daughter got a HTC Desire, and I wanted to flash a newer version of Android on it because HTC stopped providing newer versions of Android for it. I would say this is a prime example of what we are talking about here. I knew HTC provided tools, went over there downloaded the tools and started looking for documentation. I found the whole thing quite confusing, especially since it seemed geared towards windows users, and I only had linux. I ended up just deleting all of it, headed over to CyanogenMod and used their un-official tools to unlock the boot-loader, just as I did for my Tivotized Galaxy S2 earlier. You see, whether the device is Tivotized or not doesn't necessarily amount to much. Most funny part of the story? When I finally got the boot-loader unlocked, my daughter didn't want me to flash the device anyway. I usually follow the nerd slogan "if it works, fix it!", that may have something to do with it. I didn't even succeed in making my own daughter take advantage of the possibilities provided by an open device, simply because she did not trust anything but the official image from the carrier.

Moral of the story? Tivotization is plain stupid when it comes to consumers. I see no benefits for anybody. Even worse, as long as there is no software license pushing it away, I am afraid the madness will just continue for decades.

carrier "subsidy"

Posted Jan 31, 2014 0:04 UTC (Fri) by dlang (guest, #313) [Link]

I have several tivos that have been hacked for a _long_ time.

I am very aware that it's impossible to stop someone who's really determined.

However, lawsuits (or threats of lawsuits) against manufacturers are frequently based on how easy they make it to get at the data

and with the DMCA making it illegal to bypass even the most inept protections, there really is a point to them from a legal point of view.

Do not get me wrong, I think that these sorts of lockdowns, along with DRM are bad for customers, they don't stop the real bad guys and hurt legitimate users.

carrier "subsidy"

Posted Feb 3, 2014 11:34 UTC (Mon) by nye (guest, #51576) [Link]

>When I finally got the boot-loader unlocked, my daughter didn't want me to flash the device anyway. I usually follow the nerd slogan "if it works, fix it!", that may have something to do with it. I didn't even succeed in making my own daughter take advantage of the possibilities provided by an open device, simply because she did not trust anything but the official image from the carrier.

To be fair, HTC's version of Android 2.2 is far better than any stock Android I've ever used. Compared to the 4.x on my N7, it's faster, slimmer, easier to use, and less buggy. Plus all the features added in later versions are either completely worthless to me, or outright antifeatures.

Also, reflashing always comes with some degree of risk, especially if you hope to do so without resetting the device to factory defaults. Case in point: an OTA update to the aforementioned N7 a couple of months back rendered it unbootable, and I've not yet found the time to work out how to fix it without wiping it completely.

If you actually want to *use* a device for its intended purpose, rather than just having it as a toy, it's perfectly reasonable to want to keep to the path.

carrier "subsidy"

Posted Jan 30, 2014 22:44 UTC (Thu) by tialaramex (subscriber, #21167) [Link] (4 responses)

You're wrong about the "same price". The US carriers of course offer a far lower price for someone who doesn't want the carrier to supply a phone - but they call this a "discount" because that sounds better than admitting the phones cost money. $15-20 "discount" per month is not unusual although the terms vary, that's $360 to $480 over the course of the typical 24 month contract you'd be signing to get your "free" phone.

In the EU probably a regulator would have told them to stop the "discount" bullshit years ago, but this is the US we're talking about.

carrier "subsidy"

Posted Jan 30, 2014 22:58 UTC (Thu) by Cyberax (✭ supporter ✭, #52523) [Link] (3 responses)

>You're wrong about the "same price".
Not really. A couple of years ago AT&T was not offering any discount for bring-your-own devices. Has the situation changed?

carrier "subsidy"

Posted Jan 31, 2014 0:05 UTC (Fri) by dlang (guest, #313) [Link]

not at AT&T

but at T-mobile and smaller companies it has.

carrier "subsidy"

Posted Jan 31, 2014 11:30 UTC (Fri) by tialaramex (subscriber, #21167) [Link] (1 responses)

I am not a US resident, so it's not easy for me to actually walk through all the steps to buy service. But AT&T certainly advertises a $15 "discount".

It's hard to tell when this actually began, their "pay-for-the-phone separately" approach copying T-mobile was launched late last year, and the discount applies to people doing that too (because again, it's not really a "discount" it's just the real price without the cost of your "subsidised" phone) but it may have existed for a lot longer, that's just when they last announced a change to it.

It is (inevitably for the US carriers) more complicated than a straight $15, that's just the simple case where you have a phone and want service and keep saying "No" as they offer to pile on a tablet, a wireless dongle, international calling packages, a landline, streaming music, a sheepdog, the concept of marital fidelity, and whatever else they're selling today.

carrier "subsidy"

Posted Jan 31, 2014 20:55 UTC (Fri) by dlang (guest, #313) [Link]

they may have just changed this, but in October the local stores I spoke to would not offer any discount for me bringing my own phone.

Stallman on GCC, LLVM, and copyleft

Posted Jan 27, 2014 23:55 UTC (Mon) by marcH (subscriber, #57642) [Link]

> > If this is your way of copy-left, then I suggest you use licensing instead.

> It isn't done with the goal of being a form of copyleft. It's just how the community operates,

OMG, do you mean you did not even consider this issue?

What next, atheism?

Stallman on GCC, LLVM, and copyleft

Posted Jan 27, 2014 11:35 UTC (Mon) by jezuch (subscriber, #52988) [Link] (2 responses)

> This sounds incredibly stupid. Stable API's is the back-bone of any successful open project.

*External* APIs, yes. I think they're talking about internal APIs. Just like Linux explicitly does not support stable internal API, for [I suppose?] exactly the same reasons.

Stallman on GCC, LLVM, and copyleft

Posted Jan 27, 2014 20:29 UTC (Mon) by Del- (guest, #72641) [Link] (1 responses)

> *External* APIs, yes. I think they're talking about internal APIs. Just like Linux explicitly does not support stable internal API, for [I suppose?] exactly the same reasons.

In the case of linux you are probably referring to the lack of an ABI to drivers, which is done quite deliberately since it is copy-left and hence drivers are supposed to also be GPL. The case for LLVM is quite different.

That said, Octave actually uses LLVM as a JIT library. This is AFAIK the usage scenario where LLVM really shines today, and hence could hardly count as an "internal" API. Are you just guessing in the dark here, or have you actually checked it out? I am glad to be proven wrong, but then I appreciate a bit more content in your post.

Stallman on GCC, LLVM, and copyleft

Posted Jan 28, 2014 8:02 UTC (Tue) by jezuch (subscriber, #52988) [Link]

> That said, Octave actually uses LLVM as a JIT library. This is AFAIK the usage scenario where LLVM really shines today, and hence could hardly count as an "internal" API. Are you just guessing in the dark here, or have you actually checked it out? I am glad to be proven wrong, but then I appreciate a bit more content in your post.

Just guessing, sorry. I'll admit mistake and let more knowledgeable people speak :)

Stallman on GCC, LLVM, and copyleft

Posted Jan 27, 2014 22:28 UTC (Mon) by nix (subscriber, #2304) [Link] (35 responses)

> The reason is that LLVM's development practices create a strong disincentive for keeping any code private because LLVM's C++ API's (which is where 99.999% of development happens) has no backwards compatibility and changes very rapidly,

This sounds incredibly stupid. Stable API's is the back-bone of any successful open project.

Uh, GCC has wildly unstable internal APIs as well, y'know.

Stallman on GCC, LLVM, and copyleft

Posted Jan 28, 2014 11:44 UTC (Tue) by Del- (guest, #72641) [Link] (34 responses)

> Uh, GCC has wildly unstable internal APIs as well, y'know.

Maybe you did not read my answer two posts above? If you have anything to add, please answer there. I am not fond of repeating myself in the same thread.

Stallman on GCC, LLVM, and copyleft

Posted Jan 28, 2014 15:36 UTC (Tue) by PaXTeam (guest, #24616) [Link] (33 responses)

maybe you should educate yourself before writing nonsense? nix is completely right, the gcc API (there's no such thing btw, but let's go with all the public symbols exposed to plugins) is *not* stable by any stretch of the word. this has both good and bad consequences, not unlike the linux kernel API. for the results take a look at the gcc plugins distributed in PaX or the just released compat header i ended up creating to reduce the earlier ifdef mess: http://www.grsecurity.net/~paxguy1/gcc-common.h .

Stallman on GCC, LLVM, and copyleft

Posted Jan 28, 2014 18:40 UTC (Tue) by Del- (guest, #72641) [Link] (24 responses)

What nonsense?

Stallman on GCC, LLVM, and copyleft

Posted Jan 28, 2014 23:11 UTC (Tue) by PaXTeam (guest, #24616) [Link] (23 responses)

the same nonsense that nix replied to and you tried to dismiss without any facts and arguments.

Stallman on GCC, LLVM, and copyleft

Posted Jan 29, 2014 7:01 UTC (Wed) by Del- (guest, #72641) [Link] (22 responses)

Sorry, I am no mind reader, so I have no clue what you are trying to say. I did not dismiss anything nix said, I simply asked him to consider information on the subject posted a couple of hours before his post. Among other things, that information makes it more clear that internal and external APIs are considered two different things (at least by me). nix doesn't even give a clue as to what API he is talking about, neither do you, instead expecting me to read through your header file and dig through documentation for GCC looking for clues when you could have just told me in a split second. Thanks for that one.

Stallman on GCC, LLVM, and copyleft

Posted Jan 29, 2014 9:43 UTC (Wed) by PaXTeam (guest, #24616) [Link] (21 responses)

are you saying you don't even know what you were talking about? i think many people in these threads would agree by now ;). more to the point, in so many flattering words you said this:

> This sounds incredibly stupid. Stable API's is the back-bone of any successful open project.

then nix told you about gcc (and you surely know about the linux way of not having a stable kernel API) to which you responded with:

> Maybe you did not read my answer two posts above? If you have anything to add, please answer there.

in other words you didn't say anything useful, you neither provided evidence against nix's claim nor did you agree with it (and hence take back your original nonsense claim).

now that i spoonfed your feeble mind, can you provide some coherent thoughts on this stable API thing? do you know what an API is? do you know what it is in gcc/etc? do you know whether they're stable or not? do you know why? all interesting questions but then i shouldn't expect much from a troll.

Stallman on GCC, LLVM, and copyleft

Posted Jan 29, 2014 10:33 UTC (Wed) by Del- (guest, #72641) [Link] (20 responses)

Sorry, I am still in the dark as to what nonsense you are talking about. Maybe I was unclear on something, I will try to my best ability to clarify things for you, maybe then you can tell me you mean. Please avoid the ad hominems.

Yes I said stable APIs are the back-bone of successful open projects, and I mean it. Linux has a rock stable API, as does glibc. Breaking backwards compatibility is typically seen as a bug. I just wish that had been common practise for the rest of the GNU/Linux stack, whether it is sound, gui-toolkits, process communication, etc.

When it comes to linux drivers, we are not talking about an API, but about an ABI. It is somewhat different, but as I said, there is not supposed to be an API for external use there. People are expected to include the drivers as part of the distribution. This is different.

Talking about GCC, it does make sense to share what you mean with API. For most people I believe they are occupied by linking issues, which in the case of C++ refers to the ABI implemented by GCC that was originally specified by Intel for their Itanium architecture. It made it possible for the likes of Intel to make compilers that could even link in statically compiled GCC stuff. There were issues preventing this from being rock solid with C++, but I believe it worked out reasonably well. You find a reference here: http://refspecs.linuxbase.org/cxxabi-1.83.html

In the case of nix, I can of course guess that it is a reference to the newer plugin API, for which you find documentation here: http://gcc.gnu.org/wiki/GCC_PluginAPI
By now I should have checked of course, but maybe you can share with me, is this the API you are struggling with? I haven't worked with that API myself, but I have seen GCC developers being sorry for not having it more stable. Whether they are just being modest, or whether they really have broken the API numerous times I don't know, and to be frank, I do not find you line of posting very helpful in conveying it either.

You see, the example from Octave using LLVM as a JIT library, is AFAIK, and intended usage of LLVM by an external project, and then whether the API is stable or not is a rather important issue, at least for me. I may of course be wrong, that Octave's usage was never intended for external usage of LLVM, so that we are more talking about an internal API, which in my mind is a different ball game.

Stallman on GCC, LLVM, and copyleft

Posted Jan 29, 2014 15:43 UTC (Wed) by andreasb (guest, #80258) [Link] (2 responses)

When it comes to linux drivers, we are not talking about an API, but about an ABI. It is somewhat different, but as I said, there is not supposed to be an API for external use there.
Do you even know what these words mean? We are talking about an API. The Linux kernel internal API, which is what is relevant with regard to drivers and anything else running in kernel space, is unstable and will be changed whenever an improvement comes along that needs it.

That the ABI for kernel modules changes is so far out of the question that it is hardly noteworthy. Even a simple configuration change can change the ABI.

Stallman on GCC, LLVM, and copyleft

Posted Jan 29, 2014 19:23 UTC (Wed) by Del- (guest, #72641) [Link] (1 responses)

> Do you even know what these words mean? We are talking about an API. The Linux kernel internal API, which is what is relevant with regard to drivers and anything else running in kernel space, is unstable and will be changed whenever an improvement comes along that needs it.

Sigh, yes. Linux has two APIs, the internal and user space. APIs are at the source code level. The concept is quite general, but it often consists of calls to library routines. An ABI is an interface between binaries where one is typically a library or an operating system. In the case of linux there has been a lot of focus on that lack of an ABI towards drivers, or kernel modules in linux lingo. The lack of a stable ABI for drivers typically means that you need access to source code for the drivers in order to support upcoming kernels, since you often need to recompile. Regarding the linux drivers, most people care about the ABI, not the internal linux API, so I thought that was more relevant for the discussion. People often mix the concept of API and ABI, but as I already have said, they are not the same although they are clearly related concepts. Not sure how this confusion came about, but I guess I had one post where I was unclear.

Stallman on GCC, LLVM, and copyleft

Posted Jan 29, 2014 20:32 UTC (Wed) by PaXTeam (guest, #24616) [Link]

> In the case of linux there has been a lot of focus on that lack of an ABI towards drivers,

there's no lack of ABI, it's mostly defined by the usual GNU toolchain and some kernel side decisions and it doesn't really change, certainly much much less than the API.

> or kernel modules in linux lingo

no, not all kernel modules are drivers.

> The lack of a stable ABI for drivers typically means that

you don't know what you're talking about again. the ABI is quite stable, what is not stable is the API and no amount of recompilation will help if the source code itself is not patched to accomodate the changed API.

> Regarding the linux drivers, most people care about the ABI, not the internal linux API, so I thought that was more relevant for the discussion.

most people who care about the API actually understand the difference.

> People often mix the concept of API and ABI,

you don't say ;).

> but as I already have said, they are not the same although they are clearly related concepts.
> Not sure how this confusion came about, but I guess I had one post where I was unclear.

this will be a fun day, keep it coming! ;)

Stallman on GCC, LLVM, and copyleft

Posted Jan 29, 2014 19:23 UTC (Wed) by PaXTeam (guest, #24616) [Link] (3 responses)

> Sorry, I am still in the dark [...]

that's about the only statement you got right ;).

> Please avoid the ad hominems.

not before you learn to follow your own advice.

> Yes I said stable APIs are the back-bone of successful open projects, and I mean it.

so according to you linux and gcc are not successful.

> Linux has a rock stable API

wrong. the kernel's API has nothing to do with the syscall interface it provides to userland. the former is for kernel code, modules included, not userland and is intentionally not stable.

> Breaking backwards compatibility is typically seen as a bug.

linux does it all the time. please submit your bugreport to lkml. we all need a good laugh every now and then after all ;).

> When it comes to linux drivers, we are not talking about an API, but about an ABI.

wrong. you don't have a clue what these words mean, do you ;).

> It is somewhat different,

they're not somewhat different, but very different things. they refer to different levels of abstraction.

> but as I said, there is not supposed to be an API for external use there.

this sentence makes no sense whatsoever.

> People are expected to include the drivers as part of the distribution.

what does being in-tree vs. out-of-tree even have to do with the kernel API?

> This is different.

what is different?

> Talking about GCC, it does make sense to share what you mean with API.

are you saying that you didn't understand nix's response about said API? why did you even respond then? besides trolling, that is. and i did point you at said API, you can read the code or references to the code in that header.

> For most people I believe they are occupied by linking issues,

wrong, the API is not about 'linking issues'.

> which in the case of C++ refers to the ABI implemented by GCC

wrong, the gcc API that nix talked about has nothing to do with any C++ or other ABI. but then you already knew that difference, didn't you? ;)

> In the case of nix, I can of course guess that it is a reference to the newer plugin API

there's no gcc plugin API. there're a few plugin specific functions to register callbacks but other than that all public gcc symbols are available for plugin (ab)use. and this interface (functions and data structures, macros, etc) is not stable at all as you can see from my feeble attempt.

> By now I should have checked of course, but maybe you can share with me, is this the API you are struggling with?

i'm not the one struggling here with anything ;).

> I haven't worked with that API myself,

then on what grounds did you react to nix's statement?

> but I have seen GCC developers being sorry for not having it more stable.
> Whether they are just being modest, or whether they really have broken the API
> numerous times I don't know, and to be frank, I do not find you line of posting
> very helpful in conveying it either.

that's because you don't understand anything about this whole programming business yet it seemingly doesn't prevent you from posting nonsense after nonsense. you're still back at square one: figure out what API means, figure out what it is in the gcc world (never mind linux and others) and then figure out how stable they are and why. so do your homework before you spread your stupid claims about API stability.

> You see, the example from Octave using LLVM as a JIT library, is AFAIK, and intended usage of LLVM by an external project,
> and then whether the API is stable or not is a rather important issue, at least for me.

i can't imagine how anything programming related could be important for you ;). as for the API exposed by LLVM, it's the same deal as with gcc, all public symbols are there to take (over 40k of them at last count) and there're changes in there every day.

> I may of course be wrong, that Octave's usage was never intended for external usage of LLVM, so that we are more talking about an internal API, which in my mind is a different ball game.

what is LLVM's internal API? and what is 'external usage of LLVM'? and how's this 'external usage' different from LLVM's internal API?

Stallman on GCC, LLVM, and copyleft

Posted Jan 29, 2014 21:20 UTC (Wed) by Del- (guest, #72641) [Link] (1 responses)

> wrong. the kernel's API has nothing to do with the syscall interface it provides to userland. the former is for kernel code, modules included, not userland and is intentionally not stable.

"The kernel user-space API is the API that allows programs in user space to access system resources and services of the Linux kernel. This API, by choice, never breaks."
ref. http://en.wikipedia.org/wiki/Linux_kernel_API#Kernel_user...

> wrong, the gcc API that nix talked about has nothing to do with any C++ or other ABI.

For GCC the APIs most people are interested in are in the libs. I showed the ABI part, but there is also an API for C++ too of course, here you are: http://gcc.gnu.org/onlinedocs/libstdc++/api.html
I find the ABI story of C++ in GCC more fascinating, that's all.
A part from that I can only think of the plugin API I already gave you. Does even GCC define an internal API? AFAIK, internal APIs are typically not stable, so not sure how relevant they are for this discussion at all. The starting point for this discussion was usage of LLVM by external projects. So no, I have no clue as to what GCC API you go on about.

You'd better run along and edit wikipedia though, my patience with you is up.

Stallman on GCC, LLVM, and copyleft

Posted Jan 29, 2014 22:36 UTC (Wed) by PaXTeam (guest, #24616) [Link]

> The kernel user-space API

that's the *userland* API (syscalls), and not the kernel's API (which is used by kernel code, including modules, both in-tree or out-of-tree). which part of it is not clear to you? ;)

> For GCC the APIs most people are interested in are in the libs.

irrelevant, you were not biching about this kind of API regarding LLVM either, so don't try to change the subject. and the C++ ABI (i bet you don't know what that is either) was irrelevant here as well, noone was discussing it.

> Does even GCC define an internal API?

what is an 'internal API'? what makes it 'internal'?

> AFAIK, internal APIs are typically not stable, so not sure how relevant they are for this discussion at all.

because you were bitching about the unstable nature of the same kind of 'internal API' of LLVM as something bad. you can't have it both ways, that's what everyone's been trying to explain to you.

> The starting point for this discussion was usage of LLVM by external projects.

no it wasn't. rather it started with you making this claim:

> This sounds incredibly stupid. Stable API's is the back-bone of any successful open project.

and you were shown counter-examples (all GPL projects btw) and you still didn't recognize how idiotic your claim is. in other words, you were trolling and i'm having great fun at exposing it ;).

> So no, I have no clue as to what GCC API you go on about.

that's because you don't know what an API is. go educate yourself, it'd be a much better use of your time than trolling.

Stallman on GCC, LLVM, and copyleft

Posted Jan 30, 2014 0:17 UTC (Thu) by nix (subscriber, #2304) [Link]

and i did point you at said API, you can read the code or references to the code in that header
Oh, if only that was all plugins had to conform to. Keeping them working would be simple! :)

Stallman on GCC, LLVM, and copyleft

Posted Jan 30, 2014 0:15 UTC (Thu) by nix (subscriber, #2304) [Link] (12 responses)

Sorry, but in this case it *is* fairly clear that you don't know what you're talking about.

The GCC plugin API described on that page is merely a way by which dlopen()ed libraries can interpose themselves into the compiler's execution. Once there, they can (and generally must) inspect the program's intermediate representation and (possibly) modify it. The generation and manipulation of that intermediate representation is the true API that plugins must conform to, and it is *huge*. I mean, really huge, particularly if the plugin tries to change anything.

We're not just talking GENERIC and GIMPLE <ftp://gcc.gnu.org/pub/gcc/summit/2003/GENERIC%20and%20GIM...> (obsolete, of course, it is more complex now) and the lower-level RTL IR, we're not just talking the explicit dependencies expressed in the pass manager (many of which have names like 'late interprocedural optimization' where you have to know what 'late' means to understand it), we're not even talking just about the dependencies expressed in comments in the code, of which there are many -- but there are also wholly *implicit* dependencies, e.g. that a later pass implicitly expects particular properties of the representation provided by an earlier pass. Sometimes (much less often than in the past, but still true) the earlier pass doesn't even *know* it's providing those properties: they are only there by chance, and the later pass is also depending on them by chance: this is particularly likely to be true of any pass dating from the early 90s or before. That means they can be broken by chance! Worse yet, some properties are depended upon by only some machine definition files, which means they can be broken for *particular ports*, which you probably can't build.

Plus, of *course* it's continually changing: virtually anything other than a bugfix or a simple target or very simple language is going to add *some* new requirement somewhere, or perturb something somehow, and since plugins are necessarily exposed to virtually everything (not just 'can see virtually everything' but 'need to use a lot of it to be of any real use'), plugins can be, and are, perturbed by virtually everything.

(Now I'm overstating things here: lots of changes don't break any plugins at all, and lots of plugins will not be broken by a large percentage of changes that may break some plugins. But there are changes, and they are not rare, which necessarily break the lot, and possibly in quite subtle ways. This is true of the rest of the compiler as well, of course, since plugins are literally just dynamically loaded bits of the compiler: but the rest of the compiler has a 50,000+ test testsuite to make sure it doesn't regress. Plugins don't.)

Stallman on GCC, LLVM, and copyleft

Posted Jan 30, 2014 0:51 UTC (Thu) by nix (subscriber, #2304) [Link]

which means they can be broken for *particular ports*, which you probably can't build
Or, rather, which you probably won't think to build, and can't test even if you built them.

Stallman on GCC, LLVM, and copyleft

Posted Jan 30, 2014 1:11 UTC (Thu) by PaXTeam (guest, #24616) [Link] (2 responses)

> but the rest of the compiler has a 50,000+ test testsuite to make sure it doesn't regress. Plugins don't.

unless of course you run said regression tests with your plugins loaded :).

Stallman on GCC, LLVM, and copyleft

Posted Jan 30, 2014 13:56 UTC (Thu) by nix (subscriber, #2304) [Link] (1 responses)

Yeah, and I'm sure the authors of major plugins do that. Basically nobody else does though, and you have to do a bunch of fiddling about with RUNTEST_FLAGS and perhaps even the .exp scripts to make it work.

Stallman on GCC, LLVM, and copyleft

Posted Jan 30, 2014 19:11 UTC (Thu) by PaXTeam (guest, #24616) [Link]

i usually just set TEST_ALWAYS_FLAGS in site.exp to load the plugins.

Stallman on GCC, LLVM, and copyleft

Posted Jan 30, 2014 7:27 UTC (Thu) by Del- (guest, #72641) [Link] (7 responses)

> Sorry, but in this case it *is* fairly clear that you don't know what you're talking about.

In the sense that I have not used the GCC plugin API, and cannot vouch for it's implementation. I thought I made that clear already, so I see no reason for you to fall down to Pax level in your rhetoric. I do very well know what an API is, but realise that bringing ABIs into the discussion should have been accompanied by a long explanation to avoid any possible confusion. I could of course repeat about three times more that I am sorry for any confusion caused, and that I should have thought twice and thrice how to formulate any sentence related to ABIs. Sorry.

When it comes to GCC it seems fairly well accepted that it is not a particularly modular code base, and this seems to be one of the key areas being prioritized for the next releases (making it more modular that is, I really cannot be too clear here if I want to avoid ad hominems). I believe this should enable an easier implementation of a stable and useful plugin API (I am making the assumption that you actually referred to usage of the plugin API to hook into GCCs optimizer routines in your post, terribly sorry if you did not). I appreciate your notes in this post, and find them infinitely more interesting than your first post. It also seems to portray how using GCCs plugin API can lead to similar cases as experienced by the Octave guys (I said similar not identical mind you, I really hate when I have to make this kind of comments because the whole discussion turns into an unpleasant witch hunt with strawmen on each corner).

Now please bring the discussion out of the pit hole instead of mud bathing with pax. Again, sorry for any confusion I may have caused, but this thread has continued a bit too long with a bit too many sloppy posts for me to stay sharp at every corner.

Stallman on GCC, LLVM, and copyleft

Posted Jan 30, 2014 14:00 UTC (Thu) by nix (subscriber, #2304) [Link] (6 responses)

I do very well know what an API is,
Actually, from your comments it seemed very much like you didn't. APIs for random programs differ radically from the interfaces exposed to something like a plugin for a compiler: I was trying to describe how and why that was true. If you saw it as patronising 'mud bathing', I'm sorry.

When it comes to GCC it seems fairly well accepted that it is not a particularly modular code base, and this seems to be one of the key areas being prioritized for the next releases
Yes, but that will not help much. What's changing is e.g. that a bunch of code is moving out of macros into function pointers ('langhooks'). This will not change the fact that plugins are inspecting and possibly even changing a giant data structure manipulated by large numbers of other passes, and it will not greatly reduce the enormous number of implicit and explicit dependencies that plugins are thus exposed to. It'll make plugins more pleasant to write, definitely, but it won't mean they won't still get unavoidably broken at unpredictable intervals by changes in GCC. This is not a stable API in any real sense, nor do I see how it can ever become one. (The API by which plugins register themselves can be and is fairly stable, but that is, again, not the API plugins are really concerned with.)

Stallman on GCC, LLVM, and copyleft

Posted Jan 30, 2014 15:46 UTC (Thu) by Del- (guest, #72641) [Link] (5 responses)

> Actually, from your comments it seemed very much like you didn't.

Yes, I can see two posts where I was very unclear, but unfortunately there is no edit button here, and I really did not get what pax was aiming at.

> This is not a stable API in any real sense, nor do I see how it can ever become one.

Thanks for the information. Sounds like the api does little more than expose the internals of GCC. Such an approach creates full flexibility for the plugins, but I do not think it s a sustainable design for a plugin API. As I said, I believe stable *external* APIs is one of the trademarks of successful open projects. But then somebody would need to design that API for GCC plugins as a stable layer between the plugins and the GCC internals.

Stallman on GCC, LLVM, and copyleft

Posted Jan 31, 2014 15:10 UTC (Fri) by nix (subscriber, #2304) [Link] (4 responses)

Sounds like the api does little more than expose the internals of GCC.
That's pretty much what it does. That's also pretty much what LLVM's does, and I have explained in other comments how I suspect this is unavoidable for anything remotely like a compiler. Most of its 'internals' are, after all, either exposed in or implied by the very IR whose exposure is the whole point of a plugin interface in the first place.

Stallman on GCC, LLVM, and copyleft

Posted Jan 31, 2014 15:46 UTC (Fri) by Del- (guest, #72641) [Link] (3 responses)

Then I am afraid the API is of little usage for anybody but GCC developers. I am not convinced it is hopeless though, there is probably a lot of functionality in GCC that can be of interest for external usage in a plugin setting, which does not force you into a global dependency spaghetti. Parsing comes to mind as something people have asked for. While IPO kind of takes in everything, I believe functionality like vectorization is more modular and local in nature. It is probably possible to split out rather high level stuff too, sacrificing the flexibility of the API for usability. For instance a high level JIT library (not sure how well it would work out for the Octave folks, but who knows) can be a good target since it is being designed as we speak.

Stallman on GCC, LLVM, and copyleft

Posted Feb 3, 2014 10:16 UTC (Mon) by nix (subscriber, #2304) [Link] (2 responses)

Yes, the sort of plugin that's likely to be more useful (and which does indeed survive GCC upgrades without major changes a lot of the time) is the sort that does only analysis or data extraction to an external destination. But if you want to actually *change* anything, well, Lisp macros this is not: expect frequent breakage.

Stallman on GCC, LLVM, and copyleft

Posted Feb 3, 2014 18:20 UTC (Mon) by PaXTeam (guest, #24616) [Link] (1 responses)

not my experience after like two dozen plugins, breakage has so far been trivial and independent of the plugin being passive or active (across gcc 4.5-4.9). i do however expect real breakage (of the kind that will force an effective rewrite) when tree/gimple/rtx enter the c++ conversion process.

Stallman on GCC, LLVM, and copyleft

Posted Feb 4, 2014 14:54 UTC (Tue) by nix (subscriber, #2304) [Link]

That's both good and bad news, I'd say... :)

Stallman on GCC, LLVM, and copyleft

Posted Jan 30, 2014 0:03 UTC (Thu) by nix (subscriber, #2304) [Link] (1 responses)

The GCC API, if API there is, is much wider than merely the public symbols. It also encompasses the data representations being passed around (which are, this being a compiler, both not exactly simple and utterly core to what it's doing) and even the names and orders of the compiler passes involved (since plugins have to say where they fit in the compilation process).

The GCC API is *huge*, and probably every tenth commit to GCC changes it in some subtle way. :)

(gods. I'm agreeing with PaXTeam. Just gotta check outside to see if the stars are falling from the sky: the world is clearly overdue for ending.)

Stallman on GCC, LLVM, and copyleft

Posted Jan 30, 2014 0:38 UTC (Thu) by PaXTeam (guest, #24616) [Link]

> The GCC API, if API there is, is much wider than merely the public symbols.

yeah, it's kinda implied since without knowing all the data types/etc you can hardly make use of these functions/etc ;). that said in my experience the churn in say linux causes a whole lot more extra work for me than changes in gcc. i wish i could get most of my forward ports done with a simple compatibility header like i have for gcc (at least until they turn gimple and tree into classes :).

Stallman on GCC, LLVM, and copyleft

Posted Jan 30, 2014 0:19 UTC (Thu) by nix (subscriber, #2304) [Link] (1 responses)

hm, thank you, that compat header is useful: not for *using* so much as to remind me of when things changed (I always forget).

Stallman on GCC, LLVM, and copyleft

Posted Jan 30, 2014 1:04 UTC (Thu) by PaXTeam (guest, #24616) [Link]

it's useful for using them in plugins too, otherwise you'll have to deal with quite a few ifdefs if you use the changed functions/etc (which happens to be true for the PaX plugins hence the motivation for this compat header, that of course means that it's not exhaustive either, so don't rely on it as as a reference too much, and yes, patches are welcome ;). of course there're ifdefs you can't avoid, mostly due to the c++ conversion going on since 4.7 but that mostly affects pass registration and not actual plugin code (ok, the VEC_* vs. vec_* stuff is still there but even that could be abstracted away to an extent).

Stallman on GCC, LLVM, and copyleft

Posted Jun 4, 2014 12:28 UTC (Wed) by mlopezibanez (guest, #66088) [Link] (3 responses)

The only way for the GCC plugin API to improve and become useful is for the users of the API to chime in and propose improvements.

There are several functions in that header that could be in GCC and several comments that point out to inefficiencies of the API. Open bugs in GCC bugzilla and/or post patches in gcc-patches.

All the discussion above about licenses and what RMS does or says is a red herring. The only reason why GCC is lagging behind LLVM is lack of developers, and more concretely, a lack of full-time overall leader developers with a clear vision for the whole compiler. The number of contributors to the whole GCC including Ada, Fortran, C/C++, libstdc++, all backends, all middle-end, optimizers, and various tools in the GCC repository is LESS than the number of people that contribute to just Clang.

http://www.ohloh.net/p/gcc

http://www.ohloh.net/p/clang

Stallman on GCC, LLVM, and copyleft

Posted Jun 4, 2014 13:07 UTC (Wed) by andresfreund (subscriber, #69562) [Link]

I don't think you can fairly use ohloh for these comparisons - the way patches are committed to gcc is different enough from llvm/clang to make that comparison isn't very meaningfull...

Stallman on GCC, LLVM, and copyleft

Posted Jun 4, 2014 14:16 UTC (Wed) by Cyberax (✭ supporter ✭, #52523) [Link]

>All the discussion above about licenses and what RMS does or says is a red herring. The only reason why GCC is lagging behind LLVM is lack of developers, and more concretely, a lack of full-time overall leader developers with a clear vision for the whole compiler.
Why do you think GCC license does not affect the willingness of developers to work on it?

My previous company contributed to LLVM because it's being used in-house for several projects (as a JIT for a certain matching engine). They had zero interest in contributing to GCC because its license wouldn't allow to use this JIT in products shipped to their customers.

Stallman on GCC, LLVM, and copyleft

Posted Jun 4, 2014 16:08 UTC (Wed) by PaXTeam (guest, #24616) [Link]

i do report problems as i encounter them, but the response time could sometimes be better (see #61311 and #61313, not even confirmed after a week).

as for my compat header, see #61176. i think such a compat header doesn't belong into gcc per se. if anything, at most more attention could be paid when changing the exposed API, headers, etc so that plugins have less churn but i'm not really complaining here, it's been quite managable so far (perhaps my only real gripe is that #41757 was ignored at the time).

Stallman on GCC, LLVM, and copyleft

Posted Jan 26, 2014 13:35 UTC (Sun) by RamJam (guest, #95209) [Link] (2 responses)

Why would you have to maintain private branches of LLVM/Clang, isn't the plugin system of LLVM/Clang enough to easily maintain proprietary code while making use of them ?

Also Apple themselves are obviously running a private branch/plugin since they have yet to contribute the A7 soc support back to the open LLVM branch (or did I miss it? I read about this back in early september 2013), meanwhile it's supported in the proprietary LLVM/Clang version shipped with XCode on OSX from what I understand.

Stallman on GCC, LLVM, and copyleft

Posted Jan 29, 2014 1:47 UTC (Wed) by silvas (guest, #87887) [Link] (1 responses)

> Why would you have to maintain private branches of LLVM/Clang, isn't the plugin system of LLVM/Clang enough to easily maintain proprietary code while making use of them ?

That's a good question. The answer is that LLVM/Clang do not have an effective plugin system. The rapid API churn means that plugins are just as tightly coupled (from a development perspective) to the mainline as a private branch, so there's no real benefit. Any code that isn't in the public repository needs constant supervision since at any moment it may break due to an API change; the only safe place for code is in the public repository.

Also, the plugin system really doesn't support much. LLVM can load IR-level optimization passes as it was originally designed to do and is very modular in that regard, but the things that are kept on private branches are not optimization passes. Clang's plugin API is a joke and not really useful beyond maybe providing an extra compiler warning (and it's a deployment nightmare).

> Also Apple themselves are obviously running a private branch/plugin since they have yet to contribute the A7 soc support back to the open LLVM branch (or did I miss it? I read about this back in early september 2013), meanwhile it's supported in the proprietary LLVM/Clang version shipped with XCode on OSX from what I understand.

I'm not sure what you mean by "A7 soc support". Besides the AArch64 core (see below), I doubt that there is anything else of general public utility that they would need in LLVM for the A7. Realistically, you can only compile for A7 with the Apple-provided tools (whether this is good or not is a separate discussion).

ARM developed an AArch64 backend in the public tree. Chris Lattner wrote that Apple will integrate their private backend "the right way" with the public one <http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-September...>. I'm sure it is going to be a nightmare for them to maintain that private branch. I can only assume that Apple gained a large business/marketing advantage (millions of $'s) from keeping it a secret in order for them to expend so much developer time developing the backend (and now the merge pain of keeping two backends in parallel). I assume that once the upstream backend supports what they need and they have qualified it, their private backend will just be thrown away. Alternatively, their private backend may be technically superior (Apple has many of the most experienced LLVM backend devs), in which case they will probably (at great cost to them in developer time) incrementally improve the upstream backend to bring it up to parity and then throw away the private one.

Stallman on GCC, LLVM, and copyleft

Posted Jan 30, 2014 0:27 UTC (Thu) by nix (subscriber, #2304) [Link]

I'm curious. Has anyone *ever* produced a truly pluggable compiler? I doubt it. I doubt it's even possible: sure, the horrible implicit dependencies GCC is rife with are mostly a function of age, but the fundamental problem that a compiler's job is to manipulate a giant data structure, that *everything* manipulates that data structure, that all the things that do the manipulation care about properties of that data structure before they touch it and thus are exposed to precisely what everything that ran before them did, and that enhancements that span more than one such component necessarily change the giant data structure in ways that almost everything must adapt to... these problems seem to me to be fundamental.

You can impose useful properties that everything expects (being in SSA form, for instance) but that doesn't mean that you can dictate *all* properties. So the problem of adding or reordering compiler passes, particularly passes that change the program rather than just emitting warnings or spying on the compiler's state, remains an intractable bugger.


Copyright © 2024, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds