There is no place for humor or overly subjective terms like "evil" in a software license or other legal document, and the problem with Douglas Crockford's license is that he fails to understand that.
That is, unless his intent is to keep every entity with sane lawyers from using his software. I don't think that's his intent. He said he wants to keep people without a sense of humor from using his software, but sane lawyers with a good sense of humor will object to the license just as strongly as sane lawyers with no sense of humor.
Venue matters. A lawsuit based on the evil clause of the license, in San Francisco or Los Angeles, would probably go nowhere. However, consider a jury in Birmingham, AL, and whether they would find that using some of Crockford's software in an abortion clinic was a violation of the license.
I don't disagree to this premise. Yes, it could be an issue - but Douglas Crockford is not morally obligated to worry about it. His code, his license. When you use it, you accept the risks that come with it.
The post could have made a sane argument that the license is ambiguous and should be avoided in Free Software. But it focused on the author and made unjustifiable personal remarks. Not cool.
The author also seem to forget that there are advocates of the MIT license who would never use GPL software because of its viral nature. Does that mean Richard Stallman is 'harmful to software'? Criticize the license, but don't name-call the author who has made major positive contributions to the field.
You might as well say that Douglas Crockford is not morally obligated to be nice. Yes, I suppose he is entitled to behaving in ways that are harmful to Free Software, but we are also entitled to criticize him for that. The post criticizes both the license and Crockford's use of the license, focusing on the latter because licenses, like guns, are not harfmul in themselves.
You might argue that Crockford's contributions to Free Software outweigh the nuisance of his license, but to people who won't use his code because of the license (as you propose they do if they don't like it), his contributions are, sadly, rather worthless.
As for your last point, sure, Richard Stallman is arguably harmful to the Free Non-Copyleft Software movement, if such a thing exists. Is that a bad thing? I don't think there is a consensus in the Free Software community. Some OpenBSD folks certainly hate it...
"""
The author also seem to forget that there are advocates of the MIT license who would never use GPL software because of its viral nature. Does that mean Richard Stallman is 'harmful to software'? Criticize the license, but don't name-call the author who has made major positive contributions to the field.
"""
There is a large difference here:
* The GPL is pushing an agenda in their licence, and attempts to clearly state your legal obligations.
* Crockford, on the other hand, is trying to crack a joke in a legal document. As the author states, this is dangerous to people who don't understand the legal ramifications of using this. From what I can see, the author is venting their frustration that Crockford appears to be treating the whole affair like a big joke, and I can totally understand that.
You can also say that GPL is pushing an agenda, while Crockford is standing up to his high moral principles. If you don't agree with it, just don't use it.
Listen, the clause is so ridiculously vague as to be unenforcable.
However, there is one way of looking at it that might not be legally objectionable. If you consider evil to be contrary to the good functioning of a civil society, then you could say that any act of evil is against the laws if this society. In which case the clause is legally enforceable, but completely unnecessary as no contract can stipulate a party undertake an illegal act.
Listen, the clause is so ridiculously vague as to be unenforcable.
You hope.
If you consider evil to be contrary to the good functioning of a civil society, then you could say that any act of evil is against the laws if this society. In which case the clause is legally enforceable, but completely unnecessary as no contract can stipulate a party undertake an illegal act.
Which countries laws are we dealing with here? :P
e.g. I believe lots of US employee laws would be very illegal in EU.
Actually, I don't really care either way. If it becomes legally enforcable not to commit evil, I win. If it isn't legally enforcable, then I still win, only to a much lesser degree. By which I mean I lose through winning.
Which countries laws are we dealing with here? :P
e.g. I believe lots of US employee laws would be very illegal in EU.
You merely illustrate my point. Too vague to be enforcable.
All the things people are saying about this being a terrible legal clause are 100% true.
But that seems to be the point, doesn't it? It's a license that filters out people who care too much. How much is too much? According to this license, the threshold is "listens to this ridiculous license".
Maybe in practice that makes it a non-commercial license, or a "hobby project only", license, or perhaps in the extreme, a "nobody" license.
Who really cares? He owns the copyright, he can license it as he pleases.
>There is no place for humor or overly subjective terms like "evil" in a software license or other legal document, and the problem with Douglas Crockford's license is that he fails to understand that.
No, the problem is that the other guys WANT to use Douglas Crockford's code.
It's they who are needy and demanding, not Douglas, who doesn't have to "understand" anything.
This makes no sense. Is Stallman so focused on software that he isn't considering the implications of continuing to apply broken software patents to hardware?
FPGAs? Is an algorithm implemented on a FPGA a software or hardware implementation?
Sufficiently popular software algorithms like mpeg4 (including avc) are often implemented in ASICs for speed. Stallman's suggestion does nothing to help in those cases.
What if Intel introduces new instructions that assist with some patented algorithm but do not carry out the complete algorithm? Software completes the algorithm using the chip instruction. Is that covered under Stallman's software patent immunity proposal?
The dichotomy between software implementations and hardware implementations is unhelpful. If you oppose software patents on principle, whether because you think they're harmful or because you think they're math and are not supposed to be patentable in the first place, why let the camel's nose into the tent by campaigning to allow hardware (ASIC?) implementation patents, but not allowing pure-software implementations?
Perhaps this is better framed as an economic argument. If cost were no object, more algorithms would be implemented in ASICs. There's a limit to the total chip area you'd want to fit into a computer, but a lot of algorithms could be implemented in a few custom ASICs. It's likely that some of those algorithms would be covered by patents. Stallman's proposal seems like discrimination against algorithms that are important enough to make faster execution worth a lot of money.
If software patents are not valid, and I don't believe they are valid, then allowing them to apply to hardware implementations is just applying a band-aid and punting on the real issue. Stallman's proposal may be pragmatic, in that it reduces risk to most start-ups and other entities worried about violating patents in software, but it sustains the confusion about what software patents are and whether they can be valid. I think there's more at stake than the money at issue in patent lawsuits every year. I think broad appreciation of the value of open culture, and recognition that algorithms should be part of that, is worth more than any extra value companies might be able to extract from hardware implementations of patented algorithms due to artificial monopolies created by patent protection.
It's not a perfect solution, and (like most things in the patent system) it's an obvious ugly hack, but it would be a lot better than the status quo. Do you have a realistic alternative that's better?
(I just realized: you may be in the dubious position of being less pragmatic about something than Richard Stallman. It's not often someone can say that!)
This "ugly hack" is a hole you can drive a truck through, and one can be pretty sure the patent lawyers will find an aircraft carrier, load it up with trucks, and drive through it collectively.
It's silly to assume no change in behavior, any legal counsel from that point on will advise in favor of patenting the hardware implementation, and instead of patented software running on commodity hardware we'll end up with patented "appliances" and "reference hardware implementations" with broad claims extending to other types of hardware implementations.
If you start an arguement at two extremes, and give ground where your opponents do not, you weaken your position and put the compromise between them more in their favor. And when you keep giving ground, you keep showing a willingness to concede defeat, and your opponents will just ignore you. If you stand your ground, you are a stalwart wall of opposition that needs to be confronted, rather than ignored, eventually.
In many cases (gay rights, civil liberties, patent law, equality / freedom) that stalwart position may require multiple generations. You don't get instant results when dealing with the entrenched status quo that is horribly wrong. But when you give ground you render your entire argument and stance illegitimate because your opponents can dismiss you as you keep conceding ground and giving up on your positions.
Patents, as a whole, are archaic and bad. The turnaround time for any new discovery is now a matter of days, or months, rather than the years it would take in centuries past to distribute and market goods and services. In the digital world, everything is already information, it is all number patterns in electrical terms, and we had a track record of not letting people monopolize knowledge and information in the realm of mathematics before, and the digital era should never have been any different in my opinion. Of course, it is my opinion and all. But I remain dilligent in my stance for it.
I have lost a lot of respect for Stallman because it seems in recent years his dialogue has propagated a lot of "buts" in his arguments. He concedes ground on what he believes in and that illegitimizes him more than anyone calling him cookey would in my book.
The classic name for the "Keep moving the extremes so people's opinion converge on the gradually moving middle" is called the Overton window and politicians try to employ it all the time:
I think you have this backwards. I can't be sued unless I implement the patented idea in hardware.
In that state of the world, if they patent the hardware solution, I don't care. I can still implement in software and I have a legal workaround to avoid infringing. I'm driving the truck through the hole.
I don't see the hole being that big. For example Apple's slide-to-unlock patent, no one would be allowed to move that functionality into a dedicated chip but that would never happen anyways.
If Stallman's modification of "implementations using special-purpose hardware" was in place and Apple was filing that application today, I could see how they would reduce the slide-to-unlock to "slide-to-unlock on a multitouch surface".
I don't think that's right. The regular meaning of special-purpose computer is an appliance like a TV or an iPod, it can't do anything that it wasn't designed to do. The opposite is a general-purpose computer which is pretty much anything that can be programmed such as a PC or a smartphone. Of course it would depend on the legal definitions to know what the exact loopholes would be.
> The dichotomy between software implementations and hardware implementations is unhelpful
Actually it's quite helpful. Something implemented in hardware has one fixed royalty per device, no matter what operating system or other customization has been performed. That implementation becomes a capability of the device, a manufacturers selling point. A software implementation is "shipped" over and over again as the software is updated, the user changes software packages, etc.
I'm pretty ambivalent on hardware patents, having grown up reading Don Lancaster, etc. But they could be a workable way to fund codec development while not encroaching on software freedom.
"What if Intel introduces new instructions that assist with some patented algorithm but do not carry out the complete algorithm? Software completes the algorithm using the chip instruction. Is that covered under Stallman's software patent immunity proposal?"
Sure, why wouldn't it be? I'm not suggesting his idea is feasible or not. But as he stated it, in this case if you were able to reverse engineer the software bits required to make the magic happen on the chip and reimplement your own version you wouldn't be on the hook for actionable patent infringement whether you were the developer or a user.
OTOH you wouldn't be able to implement the hardware side of that system under these rules.
FPGAs? Is an algorithm implemented on a FPGA a software or hardware implementation?
FPGA is pretty much general purpose metahardware. It's programmable so you could program it to be any chip, thus not covered by the effects of a patent.
Sufficiently popular software algorithms like mpeg4 (including avc) are often implemented in ASICs for speed. Stallman's suggestion does nothing to help in those cases.
If you're manufacturing or buying dedicated hardware to do one specific task well I don't see why would patents need not apply? The codec chip is clearly a "hardware machine", not a general purpose processor. It's something I imagine companies are prepared to pay license fees for. Further, nobody will accidentally use a MPEG4 hardware decoder in some device they make which is a different situation from how the accidental problems manifest in software.
You could accidentally create a patented algorithm in hardware just as easily in hardware. The trick is that you wouldn't be designing an 'MPEG4 hardware decoder', but you'd think 'oh, wavelet compression in an ASIC, how novel'. Then you'd be infringing the patent. It's not an issue of accidentally using, it's more an issue of accidentally developing in parallel.
It makes some sense. He's attempting to promote an easily understood measure to mitigate the harm caused by software patents. Putting forward suggestions which are easily understood is very useful in politics.
Stallmans suggestion is a pragmatic way to go forward and stop the current fighting between companies that is ongoing at the courts, and not through competition of products.
A clear and strong reform of patent would be preferable, and has been for long the free software foundations strategy. In the case of Bilski v. Kappos, one can read a brief made by the fsf, which rather clearly presents their view. I also strongly promote the idea to watch/read a talk by eben moglen at https://www.softwarefreedom.org/events/2009/Moglen_Cardozo/C...
Software companies can also often afford to license the odd patent. I can also afford to pay the occasional fine. But why should any of these parties do so if the law is unfair and ridiculous?
If you want a loophole, look at the part where 'selling' software wasn't on the list of exemptions. I think that could create more than a few problems, though I think the overall idea is a good one.
As for the complaints that this might create more legal absurdities, there are plenty of those already. An imperfect solution is better than none.
RMS is an idealist, not a pragmatist. He must believe this is the ideal solution.
Or maybe he's had a change in opinion recently. I have to say, this is the only cogent, practical argument I've heard out of him over the last few years. I really dislike his dogma on the free software issue.
You need to provide some evidence for Stallman not being pragmatic. The existence of the LGPL is clear evidence that he is capable of pragmatism. Another example is that he does not get very excited about things like simple calculators being open and free because he does not see that as a practical concern.
He has principles that he tries to live by and advocates strongly but I have never viewed him as an idealist nor do I see much evidence for it.
Some of the buffer bloat problem is due to SO_SENDBUF being statically set to some value, which also results in hiding the actual bytes-in-flight from the application.
I think it would be much better to allow the auto-detected TCP window to be exposed to the application level as the "send-buf" size (with perhaps some 10% buffer bloat to allow filling in the gaps when the window grows or acks return prematurely).
Also, it would be good for high-bandwidth-high-latency situations, where the default Linux 0.5MB send-buf size is not enough. Allow the send-buf to grow if the TCP window needs to grow beyond 0.5MB.
Well exposing it per application kinda defeats a bit of the purpose behind it. The point is that you get rid of the buffer so you get packet loss when the link to the other peer(s) is(are) saturated and allow the TCP congestion algorithms to work properly.
Even in a high latency high bandwidth situation having huge buffers is self-defeating. Anybody that has used Bittorrent and assumed their ISP was doing some sort of throttling were you have weird latency spikes and reduced performance... this is a direct result of buffer bloat in the majority of cases.
Large buffers only help in the case of a single TCP connection using up as much as the bandwidth as possible, which helps network routers and such things look good in benchmarks.
What you are talking about is some sort of Quality of Service type thing. Probably most usefully expressed at the edge of networks for prioritizing traffic and at the ISP level so they can route traffic through different internet links based on requirements.
ISPs have to deal with choosing different links to other networks and what it costs. They can do choose stuff like use main backbones versus secondary links and you get different trade-offs based cost versus latency and things of that nature. So ideally there should be some sort of flag you can set in the TCP packet that would indicate latency importance or some such thing. Or just making internet routing equipment application-protocol-aware.
By "expose it to the application", I mean in the flow-control sense. That send() (or select/epoll/etc) will block until there is room in the TCP window, rather than in the pre-determined buffer which will always be too small or too big.
The way it works now, the kernel is basically forcing applications to have buffer-bloat (fill a 0.5MB socket buffer), or auto-detect RTT or manually select a proper buffer size. All are bad options.
Also, in high-latency-high-bandwidth situations, the default 0.5MB buffer will simply fail to make use of the available bandwidth, so increasing the buffer size does not defeat the purpose. Latency spikes are a different situation, there are cases of constant high latency (e.g: inter-continental 1Gbps links).
Regarding bittorrent, I'm wondering if that's not just as much the fault of crappy NAT modems. Around here everyone gets a Zyxel, and bittorrent totally chokes it periodically. The hash table used for NAT grows, the CPU can't handle it, to the point you can't even log in to the modem, and new TCP sessions get dropped until the NAT clears out the old TCP connections. (With a proper network device, this shouldn't be an issue, but it's one I see all the time with the cheap modems we get from the ISPs)
The socket send buffer from applications is not very relevant to buffer bloat, they do not cause retransmissions, nor do they contribute much visible latency.
True. But if you have 0.5MB data to send right now, it will take that long regardless of whether it is queued in the socket buffer or your application. Applications that need to care about this are typically not sitting on top of TCP, and would usually need to control the send buffer size anyway.
If you have 0.5MB data to send right now, you could queue it all in your application layer, then you could still decide to cancel it or schedule your sends based on your own priorities.
I agree that applications that care about this don't use TCP, but one of the primary reasons for this is exactly this problem: that you don't get to send at the edge of the TCP window. There are other reasons, of course, each of which is fixable (and should be fixed!)
I am looking forward to CODEL support in shorewall's simple or advanced traffic shaping scripts. I have tried to cobble together a custom `tcstart` file for CODEL and it has not been very successful. Does anyone have shorewall working with CODEL?
Also does anyone explain the difference between vanilla CODEL and FQ_CODEL? Is one an obvious choice over the other?
Thank you for responding. For some reason I have always thought or just assumed that linus's tree was the tree people referred to when it came to versioning. HN clues me in yet again...
Yeah, I think me_myselft meant rights in terms of social justice, and not "fundamental rights" in the sense of abstract political philosophy. So many arguments get caught up over semantics and not what people are trying to say.
Government doesn't create the principles of nuclear physics that allow fission and fusion to occur.
We can't get rid of the nuclear threat as long as the knowledge of nuclear physics exists and someone somewhere wants to conquer the world (or merely a continent in some cases).
Software patents are a legal construct. Get rid of that, and writing up software patents accomplishes nothing.
This is another attempt at segmenting a market for goods depending on the price that can be extracted for that good in a particular market, while keeping the cheap versions from being marketable in countries with higher discretionary income. Somewhat similar to DVD region codes, except applied to books.
Publishers sell (or sell rights to sell) lower-quality texts abroad because they can make a profit. Then they get pissy when people resell those international editions in the U.S.
The market says that people want cheaper books and they don't care about colors or paper quality. Textbooks often end up mauled after a semester anyway. Publishers don't listen, people try to fill the void, and they get sued.
"While the written content of books for the domestic and international markets is often similar or identical, books intended for international markets can differ from the domestic version in design, supplemental content (such as accompanying CD–ROMS), and the type and quality of materials used for printing, including “thinner paper and different bindings, different cover and jacket designs, fewer internal ink colors, if any, [and] lower quality photographs and graphics." (from background in the 2nd circuit ruling)
Over-achievement also fits into the clueless tier. The clueless can't get rich or into upper management except by accident, but they can have successful careers as long as the psychopath upper tier sees them as useful.
In the GP corporate hierarchy, the losers tend to do the minimum required to keep their jobs. If they start making stuff work beyond their immediate job responsibilities, that's not classic loser behavior.
At one point in that series of essays, the author talks about behaviors of the psychopath. In a startup environment, the psychopath puts in a lot of effort and gets things done because that's the fastest path to getting the company off the ground.
I think Oracle has gone round the bend, but does the anti-Oracle view of APIs mean basically that all GPL software is LGPL?
When you call a function, why should that function's copyright status have any bearing on the copyright status of your function? Because they're in the same file? What is a file?
A library's header file is included verbatim into your file by the compiler, as is the library file by the linker. When you copy-and-paste something into your own work, copyright covers the copying.
One technicality is that until you compile the program, no copying is taking place, so the GPL can't apply to source code. The only argument against that I see is that you're intending for the copy to take place, which is as good as the copy actually taking place. But I have no idea. (OTOH, not many people try to avoid the GPL when sharing their source code anyway.)
If you have a billion-dollar idea that depends on the GPL working, you should probably hire a very good lawyer to advise you.
Maybe this will light a fire under the registrars and DNS hosting companies, because some of them still don't support IPv6 glue records (for registrars) or AAAA records (for DNS hosters).
That is, unless his intent is to keep every entity with sane lawyers from using his software. I don't think that's his intent. He said he wants to keep people without a sense of humor from using his software, but sane lawyers with a good sense of humor will object to the license just as strongly as sane lawyers with no sense of humor.
Venue matters. A lawsuit based on the evil clause of the license, in San Francisco or Los Angeles, would probably go nowhere. However, consider a jury in Birmingham, AL, and whether they would find that using some of Crockford's software in an abortion clinic was a violation of the license.