Before anyone mocks this guy (sadly, partly too late), please try to keep in mind that he (a) does have a reasonable right to what he says he wants (to have some say in what he believes are his inventions), and (b) it's an illustration that the rules of intellectual property and open source are not always clear, even to those following well-established patterns.
While he's inarguably incorrect about quite a number of things, it's always better practice to assume the best of a fellow engineer and treat this as a teaching opportunity, not a cause for pitchforks and belittlement.
The package maintainer, threedaymonk, handled it perfectly, imo, by respecting the desires of the individual and not porting it, and closing the issue out quickly without further escalation. While it may have been technically "right" to copy the code, it wouldn't have been worth the damage it would have caused to the person behind it. Credit for handling a unfortunate situation with grace.
> While it may have been technically "right" to copy the code, it wouldn't have been worth the damage it would have caused to the person behind it.
Well, I will play the devil's advocate. If the code is useful to enough people, then there is damage to everyone else who might have benefited the port.
What I understand from his comments is that he does not only not want you to use his implementation but also "his" algorithm as a basis to the port. Now assuming that he has an efficient algorithm to solve the problem, then he basically forbids other people from using the efficient algorithm.
So the needs of the community's damage may in fact be more than the individual's. Also say the exact same thing happened with GNU toolchain, does the individual's damage still outweighs the community's?
I would not bring this up if his tone in his comments wasn't arrogant despite the fact that he is at fault by not reading making any effort to understand the licence.
> If the code is useful to enough people, then there is damage to everyone else who might have benefited the port.
So what? There exist enough codes which are licensed under some kind of "open source" license for which you still have to pay to the patent holder if you actually use the code. While "somebody else" can benefit from using it, he/she still has to pay if the patent holder demands so.
Not every "open source" license is automatically a "GNU" one.
It's not only the moral issue (who benefits) but also the legal one. Even ignoring the legal one, imagine you being in his shoes: you earn money by selling your invention, and for convenience to your clients, you sell them your code. Then somebody asks you to allow him to include your code in some other project which is published under some other "open source license." You agree not knowing what that actually means, for example, because he who asked used misleading language. Later you find out that you misunderstood the effects of that action. Morally, the agreement where one agrees only because he was mislead is certainly not the agreement which has to be enforced. It should be annulled.
Firstly, kudos to project maintainer for handling the situation gracefully. I respect that he respected M3 creator's wishes.
You're quite right in an ideal universe. Ours is far from that. The code for the project is out there, so if someone does not want to pay the programmer, then they will reimplement it in house and no one will ever know about it period. If on the other hand they prefer the port, then there must be a good reason for it such as better compatibility/maintainability/performance/etc.
Now let's go to the ideal universe. Well, if everyone abides the rules, then the project creator effectively contaminated other programmers. If someone interested in solving the same problem examined the code thoroughly, then they are influenced by the solution and that is perfectly reasonable because they looked at the code thinking it is under BSD licence. Now that they know they are influenced by the program, they are ethically obliged to avoid solving the problem or they would be infringing author's "copyright" (that is despite the fact that you cannot copyright an algorithm).
The fact that other things are protected by patent is irrelevant, because it appears this creator has no patents for this project.
It's hard for me to imagine myself in the shoes of someone with views on intellectual property which are fundamentally very different from my own. I believe that views on IP like his harm the software community immensely. The fact that his specific take on IP (and his interpretation of relevant US law, which may or may not be accurate) is one which he believes benefits himself, combined with the "put yourself in his shoes" argument, is not sufficient for me to change my views.
Even with all what you say, do you really believe that there should exist any agreement that can never be annulled, no matter why? That if you agree with something not knowing full effects, somebody actually has the right to find you "guilty" for not knowing better? Do you really agree with the world where everybody who ever manages to trick somebody else is absolutely guaranteed to win?
> do you really believe that there should exist any agreement that can never be annulled, no matter what?
Definitely. I believe that most everyday transactions, like when I buy a loaf of bread from a store, should be like that. In general, most simple transactions that occurs within a very short time period without any stipulations for future action from any present party need not be annullable. My claim is that code licensing is an example of this of course any given license only applies to the state of the code when it was released with that license.
Well, I am sorry to have misunderstood the fact that a BSD license swears away any rights of control. In practice it turns out to be nearly indistinguishable from Public Domain, so what's the point? Let's just call it Public Domain and quit pussyfooting around.
Why the outpouring of hostility and contempt? I'm sure I sounded 'arrogant' - perhaps I was not too pleased with the tone of voice of many of the commenters here either.
Yes, I am perfectly aware of the difference between copyright and patent. What I was not aware of is that the copyright notice required by BSD is useful only in asserting the right of the copyright owner to swear away virtually all of the protections normally granted by a copyright notice. It is a legally castrated copyright.
"then he basically forbids other people from using the efficient algorithm" Did I ever say that I was trying to place any restrictions on the use of Metaphone3.java as is or however you might want to privately re-implement it? I donated the my work in the open refine project and it is there for all to see. I had a notion that by allowing the source code to be made available I was doing something good that would make Open Source advocates happy!
I'm glad you find my work useful enough to make a fuss about. Metaphone 3 is the product of my work alone - all the research and resulting 'rules' and logic were developed by myself from primary source data. Metaphone, Double Metaphone, and Metaphone 3 are not derivative works.
Again, my apologies if I misunderstood your "right" to do whatever you want with my work without restriction. Your method of asserting your rights, however, has certainly done nothing to make me feel welcome in your "community".
1) It's not a "legally castrated copyright", it's a tool that we use to enforce a behavioral pattern that encourages growth of the commons.
2) Why should we feel "happy" when you've pulled a bait-and-switch, and acted as a bully? Your behavior and mindset are grossly at odds with the purpose of open source. Your effort was a trojan horse that's disruptive to the community. In short: You literally missed the point of "open source" entirely.
3) You explicitly stated that the algorithm is "not in the public domain", so falling back to a position that one can merely use Metaphone3.java is disingenuous. Java source is not useful or suitable to those of us in the Ruby world. We don't want to have to deal with the added overhead of a JVM.
4) Don't expect to be welcomed when you act like a bully, because you didn't know what the hell you were doing. It's not our job to teach you what the BSD license means, or what the difference between a copyright and a patent is.
5) Don't let the door hit you on the butt on your way out!
No, they're vastly friendlier, by and large -- as demonstrated by the project maintainer of text being nice acceding to your demands despite having precisely zero legal obligation to do so, and despite you being an utter jackass about it.
I, on the other hand, am seriously considering taking Metaphone3.java and reimplenting it in several languages, then making those publicly available.
Oh, hey you're in the thread. You're really confusing matters by using the term "Public Domain" in a way that really doesn't mean what you are trying to say (though I'm not at all sure what that would be). Please see the post I made elsewhere in this discussion that may clear up matters a little: https://news.ycombinator.com/item?id=8792829
(FYI, when I speak of "rights" in this post, I mean "legal rights", which I personally distinguish from the ethical ideas of "right" and "wrong"--I'm just explaining legality, there is no "ought" in what I say here)
> What I was not aware of is that the copyright notice required by BSD is useful only in asserting the right of the copyright owner to swear away virtually all of the protections normally granted by a copyright notice. It is a legally castrated copyright.
Um, what did you think a license would do? That last sentence, it's pretty much exactly the definition of what a copyright license does (if a little strongly worded).
Copyright is automatic. It only affects works (in your case, written code), not ideas (such as algorithms). You start out with all these rights about copying, distributing and broadcasting that particular work. These rights are exclusive, they belong only to you. That is default copyright, when you don't license anything.
Indeed exactly what a license does, is "castrating" (if you will) your copyrights. You can (partially) grant these rights to others, under certain circumstances, thereby diminishing the value of your own exclusive rights. That's what it does, a license defines under what circumstances you give up your right to exercise your copyrights, with respect to other people.
You start out with full exclusive rights, and a license formalizes how much and under what circumstances you are willing to chip away those rights and share.
Yet again, I must stress, copyright only applies to a "work"--a legal term, in this case referring to the written code of your project, and in general specifically not referring to ideas.
Thank you for your explanations. Actually, I understand the difference between copyright and patent very well thank you, and i also understand what public domain means. Unfortunately a number of people have misunderstood me to think that i asserted that copyrights protect algorithms.
> Well, I am sorry to have misunderstood the fact that a BSD license swears away any rights of control. In practice it turns out to be nearly indistinguishable from Public Domain, so what's the point? Let's just call it Public Domain and quit pussyfooting around.
Yes. BSD is pretty close to public domain. That's what it's for.
threedaymonk behaved as a nice, well-intentioned, polite person ought to. however, the copyright claim was completely bogus as was the assertion of control over the algorithm itself.
i think we can all agree that being nice and polite to each other is a good thing, as is respecting the wish's of a fellow engineer out of professional courtesy. we shouldn't be confused about the law though. none of those copyright claims were valid.
The best way to deal with this is to quietly take this person aside and explain to them how this stuff works.
For one, people likely aren't going to be as charitable the second time he does this, and, for two, unless and until he understands what he's doing with licenses, he's a potential land mine to any project he contributes to.
CS courses need more courses on how licensing works, and by "more" I mean "some non-zero number". It's useful to know even if you never enter the FOSS world.
I disagree. While knowing what these licenses are, how they work, and some pros and cons of each is nice, it's decidedly not computer science. There's no traditional CS courses I can think of that this would fit in, except for maybe an ethics in CS course, which not all schools have.
Scientists have an obligation to understand the legal, ethical, and social context of their work. So if no "traditional" CS course would fit a discussion of software licenses and copyright, a new course is needed. This is even more true for software engineering, but even a scientist who only knows science is in danger of being exploited or of damaging the reputation of his/her community.
"While knowing what these licenses are, how they work, and some pros and cons of each is nice, it's decidedly not computer science."
Reusing other people's work(1) is decidedly computer science.
Without it(access to source code) it would be simply impossible to teach ANY CS course. Good luck teaching compilers without accessing one, or OS without being able to read the internals of one.
(1)Like Linux,network stack, LaTex, gnu tools, llvm, valgrind, qt, kde, WebKit engine, grass, OpenStreetMap, Wikipedia, Arduino, OpenScad, freecad and RepRap...
Even if it isn't part of theoretical CS, it's certainly part of the practice of programming, which university-level CS programs claim to teach.
> There's no traditional CS courses I can think of that this would fit in, except for maybe an ethics in CS course, which not all schools have.
All CS programs should have an ethics course, at least, and I think this would work in that context. For example, deontological ethical reasoning is about navigating among conflicting duties, and licenses can certainly impose duties on people.
I believe most CS students would benefit greatly from this type of class. The topic may not perfectly fit into pure computer science topics but it's something that anyone who writes code will run into during their career and should have a basic understanding of.
Another (albeit more absurd) example is version control. You can successfully argue that it's not a computer science topic, but anyone graduating with a CS degree will be much better off in the real world having learned about it.
During my CS studies I heard a course about my local equivalent of copyright and patent law and while it was only a few hours it greatly helped me to understand the implications of licenses and when to ask a professional for help.
I think basic knowledge of laws concerning your work of field is an important asset to anyone working in tech. Especially if your laws diverge from US ones (e.g. no "fair-use") the internet is a dangerous place sometimes ;)
an engineer should be educated about the legal and ethical aspects of her/his field of work. these are pragmatic concerns, and engineering is a pragmatic discipline.
while it might not fit into an academic computer science research curriculum, a good university program should include courses on these topics anyway. if your school doesn't (or if you didn't go to school!) its still a good idea to learn about law and ethics through self study.
The package maintainer, as you said, handled this very gracefully.
Yeah, the author is likely in the wrong/gray (IANAL). But I can't help but be disappointed that posters below immediately jump to "Well, it should be free anyway!" "Why is he protecting his code?" "Here is an evil oppressor trying to keep something valuable to himself."
Here is a developer who tried to build a living using his own software, something many of us aspire to do. Why are we so quick to throw him under the bus? Is it because we instinctively always want to "defend the underdog"?
> Here is a developer who tried to build a living using his own software, something many of us aspire to do. Why are we so quick to throw him under the bus?
Because he published it under a license he apparently never intended to honor. It's like trying to charge someone for a free sample after they've eaten it.
He was mistaken about what that license meant, not dishonourable. He intended to honour what he thought the license meant, and wasn't performing some sort of shell game. Threedaymonk took the best course in honouring what the original author intended, rather than the mistakenly-applied licensing.
FOSS licenses are confusing to people who don't live and breathe them. One other example from quite a few years back was when SugarCRM open-sourced their code and put it under a GPL license. They thought it meant 'you get to see what we're doing', but after a couple of competitors forked off it (we used vTiger, from memory), they got a short, sharp lesson in 'what the GPL means'. Their code from that point on was not GPL'd.
> (b) it's an illustration that the rules of intellectual property and open source are not always clear, even to those following well-established patterns.
I don't think there is anywhere on the internet that will tell you that you can't copy a BSD licence. How did the original author decide on the BSD?
The problem seems to be that he didn't really decide.
It's easy to make a quick decision when releasing software that cannot be taken back.
And when you're finally realizing your mistake, you can only resort to what we're seeing here: pleas and threats.
And of course, on the whole huge Internet you will always have people who defy you either for legitimate reasons or just out of spite. So it's practically guaranteed that you end up with war.
I cannot make up my mind whether we should blame him (for being so nonchalant with the license) or Google (for luring him into this trap without properly educating him on the consequences).
Blaming Google is, in my opinion, patronizing the author. There's no evidence of them having tried to deceive him, and the BSD is a very well known license.
I sympathize with him, but that doesn't mean there must be someone else to blame.
If you wanted something like what he wants, are there any licenses that limit the scope of derivatives? Or are you best off using a No Derivatives license with a contact for permission notice?
Someone could still reimplement the algorithm based on a description. You can't copyright algorithms. You can (sometimes) patent them, which the original author apparently tried to do. The claim would have been based on that patent rather than on copyright.
Quit calling yourselves that: you're all web developers, not engineers. At the end of the day, 95% of what people on HN do revolves around making pretty websites for the internet.
You have not taken the FE exam, you did not study engineering, you are not certified as an engineer. This is just the latest way that CS graduates are trying to self aggrandize and de-trivialize their profession.
I would say "making pretty websites" is still engineering because they are working with machines to design and manufacture [0]. This makes anyone who does it an engineer.
I find it rather offensive to generalize everyone on HN into one category. I have read comments from people in all stages of life and many different professions and we do not need this kind of talk.
Unless you are in some specific locations such as Canada, where the term "engineer" is tightly controlled, then you can call yourself whatever the fuck you want. "Software engineer" does not imply any of the things you said in the United States.
I can call myself a software ninja if I wanted to. That doesn't mean I practiced the art of ninjas. I can call myself a code monkey. That doesn't mean I'm actually a monkey. It's just a fucking title, so get over it. If that's my actual title at a company then I'm going to use it publicly too.
No, and the US has an "Order of the Engineer" modeled after that. It always seemed silly to me to wear a ring on your working hand when the first thing you do when working with your hands is to take of jewelry.
"Engineer" is a protected job title in the US, but most are able to operate under an industrial exemption and so legally use the title.
The reason why some are picky about the title is that it is a licensed profession, and has some expectations associated with it. If someone tells me they're an engineer, I assume they know how to use a Laplace transform, because that's common across disciplines at the undergraduate level. Same as applying perturbation theory at the graduate level. Same as having a common corpus of basic science knowledge. Same as with professional code of ethics. Etc.
To use your own logic above, calling yourself a software ninja doesn't make you a ninja, and calling yourself a software engineer doesn't make you an engineer. It might be legal, but it's crass.
> Laplace transform, because that's common across disciplines at the undergraduate level
At your specific institution. Every school has different curriculum, both within the engineering programs themselves, and when compared to other schools. There is no unified curriculum nor is there one unified thing that all engineers, regardless of their schooling, would know because I'm sure, at one school or another, that one thing would not be taught.
And what, exactly, is so crass about it? As I said, it's just a goddamn title. A made up word used to describe yourself. There's nothing inherently disrespectful about using a title. It doesn't instantly diminish the title of every other engineer on the planet just because someone decided to call themselves an engineer without getting a B.AS. I could call myself the Queen of Rotunda, my made up domain. That doesn't suddenly mean that I'm disrespecting Queen Elizabeth, or any other queen in the world.
The whole point of having ABET accredit programs is to standardize a basic body of knowledge. Curricula in mechanical, chemical, electrical, and biomedical all include solving DEQ and PDE systems. Solving those without Laplace transforms is cruel, once the basic principles are understood of course.
If it's just a goddamn title, then you wouldn't be so insistent on using it. You want to use it because it implies a level of education and professionalism. It's crass to use the title because there is such a thing as software engineering, and the people most strongly insisting to use the title don't practice it. Like I said, you can legally use it, but licensed engineers are rolling their eyes when your back is turned.
The very fact that you have a body accrediting programs means that there will be many schools serving up engineering degrees that are not accredited by ABET or one of its member societies, especially internationally. Are these people suddenly not engineers just because a licensing body has not bestowed their program the honour of accreditation? Just because there's an accreditation board does not suddenly make it the only ruling body on who can use the title "engineer". Unless it's actually illegal to be an engineer without being accredited by ABET, then their word really means jack shit.
> there is such a thing as software engineering
Which differs from place to place, yes. Not every program has been accredited but still provide software engineering degrees, perhaps with elements that would not be found in another's curriculum.
> and the people most strongly insisting to use the title don't practice it
Just because you don't have an accreditation does not mean you "don't practice it".
> Like I said, you can legally use it, but licensed engineers are rolling their eyes when your back is turned.
Good for them. They can roll their eyes all they want, it doesn't make them more right to do it.
Sort of; they were likely never engineers in the first place. Engineer is a licensed profession, like physician or lawyer. You can graduate law school, but that doesn't make you a lawyer; passing the bar does. In the US, it depends on the state, but the easiest path towards licensure is to graduate from an ABET-accredited undergraduate program. Some allow you to proceed to licensure without that, but it requires extra experience to compensate.
Some international programs. They don't have nearly enough capacity to accredit every single international engineering program all over the world. I'm sure they have the major ones down, but there's plenty that are probably not which still teach engineering.
> Engineer is a licensed profession, like physician or lawyer.
The license only gives you the right to call yourself a Professional Engineer. Like I said before, unless it is illegal to call yourself an engineer without being a PEng and being licensed, then the "licensed profession" part of it really does not matter. A company can require you to be a PEng in order to receive an "engineer" title in your role, but there is still nothing, short of law that prevents you from using it yourself.
> like physician or lawyer.
And they're both different from engineer, because those licensed professions are actually legally enforced, whereas "engineer" is not legally enforced everywhere.
No, the license allows one to offer engineering services to the public and the PE title is granted in recognition of that right. It is generally illegal to call yourself an engineer, but most people are able to use the industrial exemption. Nevertheless, in using the industrial exemption one is not offering engineering services to the general public. I don't know what happens if you tried to use the industrial exemption but offered services to the public, but I think it's prohibited.
This all varies between states, but in general, if you for example started a software consulting firm called Vlad Engineering and the principals were not licensed, your local licensing board would likely have beef with you. If you were a software engineer at Vlad Consulting you would probably be okay.
The bottom line is that it's tricky to navigate, and so it was recommended at my school we avoid using engineering anywhere unless we had our PE license.
"Engineer" is legally enforced everywhere. If you don't believe me, try to get a building built without having a licensed Civil Engineer sign off on the blueprints.
NC State University has adopted the same ceremony, though it is not well known and leads to really weird conversations occasionally, until I mention that the ring does not mean I'm homosexual.
How much of the hardware and software you're using now was originally conceived and designed by credentialed PEs and FEs?
You can walk up to Woz and tell him he wasn't an "engineer" when he designed the original Apple hardware, but you can't possibly expect anyone with a clue to take you seriously.
It's always surprising how little people understand the licenses they publish their code under. BSD does not make something public domain, but it does allow derivative works and inclusion in completely unrelated projects, without permission of the author. Rewriting it, from scratch, in another language generally completely bypasses even the requirement to reproduce the copyright notice (unless there are data structures being copied over, or similar, that copyright would apply to).
Algorithms are sometimes subject to patents, though I believe they shouldn't be, and if the author wanted this sort of control over the algorithm a patent is the path he should have taken, but as far as I can tell the author has not patented this particular algorithm (and I doubt it is novel, as it sounds similar to quite a few pre-existing tools in related fields).
This is just a sort of weird conversation. Why Open Source something if you don't want people to use it in interesting ways?
Apparently, he didn't directly open source it. He approved its inclusion in the Open Refine package. It's pretty obvious that he didn't understand the consequences of releasing his code in a project licensed by BSD. I can understand his frustration, probably because he was told that his conditions were covered under the BSD license. Given that he sells the same code as a commercial product, this was obviously not his intention.
However, he failed to grasp some basic IP concepts, especially wrt US law. Algorithms are not copyrightable, and most are not patentable (especially after Alice v CLS) under US law. However, there is solid precedent for similar systems being eligible for patent protection (soundex, other patents that cite his systems as source material, etc). It does not appear that he applied for this protection at this time.
Moreover, under the modification clause of the 3 clause BSD license he used in his source file, there is a significant amount of commentary suggesting such a rewrite would be permissible under the terms of that license. However, re-licensing it under MIT would on the surface not be permitted.
EDIT: he may have applied for a patent. This could preclude the project from including his system. However, I'm not a patent lawyer, so I don't know how well this would hold up in international implementations (github being a US entity makes this point relatively moot).
Unless he applies (has applied at this point) in a particular country, or has a Patent Cooperation Treaty application filed in some country and is pursuing it in a particular country, he is completely out of luck by publishing his algorithm. (And as another commentor mentioned, post-Alice, it's pretty unlikely that a patent applicant will succeed with software patent applications absent some pretty close coupling to something specific about the computer hardware.)
It's amazing to me that so many software developers have no basic grasp of IP--the thing they work so hard to produce. It's not like it's all that difficult: Copyrights protect the expression of an idea; patents protect inventions. This developer seems to think that copyrights protect ideas.
> However, he failed to grasp some basic IP concepts
Indeed. His patent was abandoned, according to the USPTO's PAIR website at [1], after being rejected for non-patentability. Aside from being apparently non-patentable subject matter, the examiner noted that Philips's application was similar to a previously rejected application no. 10/454,261, and rejected the former on the some of the same grounds as the latter.
The BSD license does not contain any patent grants, so he can still assert the right over the use of his patent in pretty much anything - the BSD licensed code can still only be used with his permission, since you need both the copyright license and patent license to use it.
When patents are involved, it makes more sense to us a license like the GPL3 or Apache2.0, which also grant licenses for any patents which are covered by the code.
Some interpret BSD to have an implied patent grant, but the law on the subject is sparse and mostly untested. The license do say that: "Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met", but if that will be enough is up the court, and to my knowledge they have not been asked yet.
Re-writing the code using the original source as a guide means it is a derivative work if you want to get picky. Changing the programming language doesn't make it non-derivative.
If you want a non-derivative work you need to do something like a clean room implementation where the one writing the code doesn't have access to the code of the existing implementation: https://en.wikipedia.org/wiki/Clean_room_design
BTW this guy can not stop derivative works once he has released it as BSD.
Clean room design is a sufficient but not necessary condition to establish that something is non-derivative. It's possible that enough changes to the source make it non-derivative under copyright law.
As the Wikipedia link you gave says:
> Clean room design is usually employed as best practice, but not strictly required by law. In NEC Corp. v Intel Corp. (1990), NEC sought declaratory judgment against Intel's charges that NEC's engineers simply copied the microcode of the 8086 processor in their NEC V20 clone. A US judge ruled that while the early, internal revisions of NEC's microcode were indeed a copyright violation, the later one, which actually went into NEC's product, although derived from the former, were sufficiently different that they could be considered free of copyright violations.
As another example, BSD Unix evolved sufficiently away from AT&T Unix that only a couple of files needed to be replace to get away from AT&T's copyright.
Both derive from someone else's works, but that's a different sense of "derivative" than what copyright law cares about.
> BTW this guy can not stop derivative works once he has released it as BSD.
could he just remove the BSD license from all subsequent commits to the code base? The existing code base will still continue to be BSD licensed of course.
Provided no one else has ever contributed yes he can. In fact this is not unique to the BSD, you can do that with any license. Even proprietary licenses do not force the author to continue using the same license since they own the original copyright.
How would the enforcement of that work? What if I have cloned the version of the repo that was BSD, and I'm working on a yet-unrelated derivative work when the author changes the license? The answer that seems reasonable to me (not that I expect any correlation between that and the actual law) is that any version of the code that was released with a given license is perpetually under that license.
I'm presuming what you are referring to, and which is likely to confuse a predominantly English speaking audience is that a number of countries with legal systems typically based in Germanic or Napoleonic legal systems, copyright consists of the combination of moral rights on one side and economic rights on the other hand.
Moral rights are generally impossible to forfeit and assign. Economic rights usually (I don't know of any jurisdictions where assigning economic rights to the project maintainer would be impossible - are you?) are possible to assign.
In common law systems, the two are usually traditionally much more closely tied, and when we talk about copyright in English, it is usually the economic rights we're referring to.
While there aren't any software licenses that do that, many projects do it as a condition of accepting contributions. As an example here is GCC's contributor documentation: https://gcc.gnu.org/contribute.html
The short version is assign FSF copyright, or put it in the public domain.
Thanks for this. I would be interested to know if, in practice (in a court of law), attempt to show something is derivative work when it's not is a more common instance than when it actually is. How easy (or hard) is it to prove something is a derivative work? (i am especially thinking of 2 pieces of code doing basically the same thing with the same algorithm, no patents)
The other answers to your question are not correct. In some countries, authors' "moral rights" can include the right to withdraw the software, saying "I don't want you to continue distributing the software", which is similar to retroactively revoking the license. For the situation in France, see:
The GPL actually has a clause agaisnt revocation in section 2:
All rights granted under this License are granted for the
term of copyright on the Program, and are irrevocable
provided the stated conditions are met.
Doesn't this make it illegal to distribute GPL software in France under clause 12?
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.
Since allowing the licensor to revoke the licence would be an extra condition.
It doesn't make the distribution illegal per-se, but it does make the license invalid and thus the software unlicensed. Same as "public domain" licensing.
I happen to know about this "France problem" because for a while it affected the OCaml distribution (it has now been resolved by some French-specific legal wrangle).
I don't know how this affects the GPL specifically, but you can be pretty sure that if the GPL doesn't contain France-specific French-language legalese to work around it, then it's likely to be revokable whatever the license says. Of course this only affects you if you're in France or have French contributors.
Unless I'm misreading it, that section specifically says that the author may not withdraw distribution rights for software:
> Nevertheless, the Intellectual Property Code provides some specific rules regarding moral rights over software. It provides that the author may not oppose modifications of the software, in as far as such modifications do not affect his honor or reputation, and exercise his right of withdrawal.
The entirety of the license is the text of the license. If there is no revocation clause specifying how revocation would happen, the answer is no, it can't be revoked.
Assuming he holds the copyright for the entirety of the program, he could change the license for all future versions, and he also could stop distributing old versions under the old license (putting a new license on it, or simply discontinuing distribution). But, the old license has already granted thousands, or millions, of people, the right to distribute it under those terms.
This is an interesting question. I was at a talk at this years's GsoC summit where this was discussed and indeed, the language of the BSD license does not issue an `irrevocable` license as the language of a lot of other licenses does. Nobody has every tried revoking an MIT or BSD license before, but it would be an interesting legal argument to see if the courts would allow it.
For future modifications, yes, but you can not retroactively revoke a license. Although I am sure if you get a lawyer involved he can likely try to come p with reasons why it couldn't have legitimately been released as BSD in the first place, thus declare the first BSD licensing of the code as invalid.
Huh? Where does the law say this? It is my impression that the copyright owner has all rights unless he explicitly relaxes them. A license by definition cannot create more rights, it can only relax them.
A license doesn't "relax" rights, it grants rights to others (and sometimes/in some jurisdictions also can limit how the copyright owner can make use of his rights)
If you give someone the right to do something and don't specify how you can take it away, you can't take it away again. Without termination clauses a license is a contract thats valid indefinitely.
And why can't you take it away? If I give someone a permit to cross my bridge, I can revoke it at any time. Usually when something is perpetual, you have to write in it: "perpetual" for it to actually be so.
Let's keep it with software. The bridge metaphor is more applicable to a service offering where you maintain infrastructure and adjust pricing based on the cost of maintaining it.
In software, the license is what you sell. I don't buy MS Windows or Photoshop, I buy a license for it. If you sell me a 3-seat license of software v1.0 allowing me to install it on up to 3 computers, you can't come back 2 years later and change the terms to only 1 computer. Now, in 2 years, you might have v2.0 and require a new license for that. But the license you sold me for v1.0 remains in place.
By releasing the software under the BSD license, he basically sold us a license (price immaterial) granting permission to redistribute and alter the code, provided that new code includes the BSD license.
I understand that wasn't his intention. Another commenter pointed out that the author gave permission to another project which was being released under the BSD license. Now anyone that was "sold" the software with that license has been granted those redistribution rights.
I did think of this, but surely a transaction between two parties is not the same as simply posting a license on a website?
If I pay money in return for a license to use Photoshop, there is a reasonable expectation that I can use that indefinitely. I give then money, they give me permission.
If I simply download a piece of open source software from the internet, that isn't the same thing. There's no transaction. There's no anything. If the author subsequently tells me "I hereby revoke all previous licenses", I don't see how that wouldn't have legal weight.
"If I pay money in return for a license to use Photoshop, there is a reasonable expectation that I can use that indefinitely. I give then money, they give me permission."
Money has nothing to do with it, all reproduction of bits is automatically covered by copyright law, and has a legal presumption of "all rights reserved" unless explicitly delineated in a license.
Even when paying money, it isn't a reasonable expectation to expect to be able to use it forever for all software. With shrink-wrap or click-through agreements, perhaps, by convention, but plenty of software is sold on subscription for example, or may have revocation clause without refund which is common with MMO games for example.
Some software also may naturally break some day due to incompatibility or disinterest by the author. Other than limited warranty protections by law, there's not much a buyer can do about it. This is of course subject to local laws which may allow moral revocation (France) or stricter warranties.
With regards to downloading a piece of open source, the downloader is consenting to the copyright license it is offered under: it's the same as a click through.
If there is no license, you technically have no right to use or redistribute the software (all rights are reserved).
If there is a license, usually that will explain the author's intentions for fees, redistribution rights, and rights of revocability.
The OSI exists to approve licenses as "open source" when they (among other clauses) explicitly denounce revocability. The only recourse is that an author can refuse to OSI license future modifications or releases of the software (basically making a private fork).
If you just tell someone you can use the bridge then you can probably revoke it. But if you keep letting them use it and they build a house on the other side of the bridge or something then you've probably granted an implied easement[1] and can't, in fact, suddenly stop letting them use the bridge. But in this case there's actually a legal document saying that anybody can use the bridge so that would be analogous to an express easement.
We are not talking about permits (which are typically temporary as per whatever conditions they have). We are talking about software licenses, which often do not allow the copyright holder to revoke.
These licenses are explicit about what they do/do not grant. p
The project ought to rip that code out ASAP (or talk with a lawyer), as the guy does appear to have some kind of patent, doesn't appear to have a good grasp of intellectual property and is acting like a loose cannon. Maybe tomorrow he won't approve of Canadians using his algorithms or banks, or YC startups, or who knows what. Or he could sell the patent to someone who could then go after the users of the open source package.
Why is he acting like a loose cannon? BSD does not include anything about patents, and he apparently offered a patent grant only in the context of Open Refine.
So you think it's deliberately malicious? Get a bunch of people to use the code and then shake them down with the patent? I don't read it that way, but either way it's toxic stuff for an open source project used by companies.
You put out code under a BSD license and people have some reasonable expectations that they can use that code.
I don't see anything about a patent grant - do you have a link to that?
What's more, his patent application was rejected, both for non-patentability, and on similar grounds as a previously rejected patent of a similar nature. Type the application number into USPTO's PAIR website at [1] for details. (Edit: app. no. 11/890,334)
Indeed, the copyright is asserted onto the written work. The algorithms, general idea, etc. are not copyright-able and except for US not even patentable.
For others wondering what Metaphone is, here's the Wikipedia description:
"Metaphone is a phonetic algorithm, published by Lawrence Philips in 1990, for indexing words by their English pronunciation. It fundamentally improves on the Soundex algorithm by using information about variations and inconsistencies in English spelling and pronunciation to produce a more accurate encoding, which does a better job of matching words and names which sound similar. As with Soundex, similar sounding words should share the same keys. Metaphone is available as a built-in operator in a number of systems, including later versions of PHP."
Metaphone 3:
"A professional version was released in October 2009, developed by the same author, Lawrence Philips. It is a commercial product but is sold as source code. Metaphone 3 further improves phonetic encoding of words in the English language, non-English words familiar to Americans, and first names and family names commonly found in the United States."
Unfortunately, the author of the Metaphone code (lphillips) keeps talking about public domain as if that is what is the point of contention. When you license something as BSD you aren't putting the work into the "public domain" (as in the legal meaning) but you are giving a very permissive license to the subject of the license.
My guess is that Google requested use of the Metaphone 3 package, Lawrence perhaps didn't understand the what BSD meant, but was willing for Google to use it in their Google-Refine (now Open Refine) codebase so willfully let them pick the most permissive license.
I'm having a real difficult understanding him from his GitHub comments. It's clear that he never intended his algorithm to be re-useable or modifiable in any way, but if he intends to restrict the future use of his Metaphone 3 code or even prevent a port, he's going to find it impossible....
Lesson learnt... it's clear that a work of this magnitude would have taken thousand plus hours... if you don't intend it to be re-usable, then you shouldn't pick a permissive, open source license such as BSD.
It's surprising how little understanding the average person has of the 3 major types of IP registration. Most people I know working in creative and artistic fields could not tell you the difference between a copyright, patent and trademark.
I often have observed issues involving people who believe they or others own processes, algorithms and names, or that others have exclusive right to such in the visual and tangible art fields. It's quite important to understand what rights people have when they start asserting rights.
For instance, a bead maker claiming that they have a 'copyright' on a certain style of glass bead which they seem to think involves a combination of the name, process and result. People use (mis) understandings of IP to intimidate others into not competing with them, despite not understanding what rights they actually have or don't have. The intended audience, other artists, don't understand what rights they or the claimant actually have, either.
The main lack of understanding I see is a) that processes cannot be covered by copyright and b) names are not covered by copyright.
As far as anybody can tell and based on his comments, no he doesn't have any patents. He mistakenly thought his algorithm was copyrighted and algorithms are not copyrightable in US and generally in many countries around the globe.
It also strikes me as odd that someone who creates intellectual rights for a living (i.e. a software developer), as an independent, does not have a basic understanding of copyright law.
I'm not a lawyer, but some basic understanding is at least to be expected. Still, sucks for him though.
> does not have a basic understanding of copyright law
I think that this is more a case of the "unknown unknowns." He probably thought that he did have a good grasp of copyright law and that was why he didn't need to talk to a lawyer.
>if you don't intend it to be re-usable, then you shouldn't pick a permissive, open source license such as BSD.
Any open source license is going to pose the same "problem". If you don't want it to be open source, don't make it open source. Permissive license doesn't even enter into it.
The open source initiative (OSI) was the organization that originally promoted open source (as an alternative to the FSF and "free software"), along with certifying licenses as being "open source". Perhaps it's a generational thing for those that weren't old enough or weren't paying attention in 1998 - they even tried unsuccessfully to trademark "open source" to avoid the sorts of confusions with what Atlassian (or even Splunk) have.
That said I'd say the problem with the OP thread isn't even about "open source", it's about misunderstanding copyright vs. patents.
Although the OSI definition of "open source software" is
widely accepted, a small number of people and organizations
use the term to refer to software where the source is
available for viewing, but which may not legally be
modified or redistributed.
Which is exactly the point I wanted to make: that there is no one true definition of open source and that, although most technically inclined people agree, there is room for confusion/disagreement.
If these sorts of contributions are worthy of downvotes these days then I really don't know what I'm doing here anymore :S
> "I'm not going to port Metaphone 3 to Ruby, nor am I going to accept or merge any such ports at this time.
> Whilst the licensing of the Java code in question clearly and unambiguously permits such a port, @lphilips54's stated intentions for reuse of the code are unclear and contradictory. I can't see that any benefit would come from integrating something that is surrounded by such confusion."
I don't think there's a clear moral component here, unless someone can demonstrate that the author would suffer actual damage from such a port. It would certainly be a little rude, though.
Well, he makes a living from that code. It looks like he made a mistake with the license but I don't think is morally right to sabotage his source of income just for that mistake.
> I'm sure they're within their legal right to copy the code if they wanted to.
I'm not sure they're within their legal right to do so given metaphone 3 is patented, and the BSD license does not include patent grants, so the patent grant has to be obtained separately from the license.
You've repeated this all over this thread and have yet to provide a link to a granted patent.
Indeed, Alice v CLS makes it much more difficult for algorithms to be patented in the US (though hardly impossible), and the only references to a metaphone patent in the USPTO that I or others in here have been able to find have been rejected patent attempts.
If you are going to repeat this everywhere like it is the truth, please provide clarification, because current evidence points to this being incorrect, and I'm sure everyone here would like to be corrected if our current findings are wrong
I think it would be interesting to point out a somehow similar exchange between Richard Stallman and Bruno Haible, the original author of CLISP[1]. Bruno wanted to integrate GNU Readline into the then-proprietary CLISP, but RMS informed him that doing so would be a violation of GPL. After a minor flamewar-of-a-kind, Bruno concurred, because he wanted very much to use Readline, and today the world is richer for another free software Common Lisp implementation. I think it very clearly illustrates how often people don't understand the implications of free software licenses, an issue that, even now when there are loads of FAQs and websites dedicated to just that, remains present.
This sounds like a call for the FOSS community to produce a phonetic similarity algorithm that is not encumbered by patents. Metaphone 3 is patent-pending, and the author obviously intends to profit from it.
Porting the code released with BSD license would effectively just be donating the work to a private individual. Be glad that the guy was good enough to warn people ahead of time, instead of submerging a patent submarine and surfacing after someone creates a big payday for him.
The idea itself, to determine phonetic rules from spelling quirks in English, is non-patentable, but the specific rules he formulated may be. Anyone else could spend "thousands of hours" creating their own rules. We already have a few in the public domain, such as the "i before e" rule, where the "ei" in "neighbor and weigh" is phonetically an "a", which implies that "-eigh-" is the spelling pattern, which also holds in "eight" and "neigh".
The patent application linked numerous times in this thread is listed as abandoned after being rejected for non-patentability. Type the application or publication number into [1] for details.
Mark Rosenfelder has a pretty impressive attempt at computerizing English spelling (with a set of rules and their justifications published in human-readable and machine-readable forms).
The patent is for Metaphone 3, a new version of the algorithm that was released in October 2009 and improves on the previous ones. The differences are why the Ruby gem, which already has Metaphone and Double Metaphone implemented, got a discussion going about porting Metaphone 3 from Java.
That patent has actually been abandoned. Can't find any continuations filed on it either. So as far as I can tell, he doesn't have any patents on the algorithm/process
I don't see how his argument holds water, the BSD license is quite permissive, and porting software to another language sounds like a modification to me, assuming you keep all the copyright info intact. He still holds the copyright, but he's granted everyone a worldwide right to use the software with or without modification...
And apparently he doesn't know what the common meaning of "FOSS" even is.
"Metaphone3.java was released as part of the Open Refine Package under the BSD license" and then "It does not, contrary to popular belief, automatically declare the algorithm to be public domain, or the software to be FOSS. "
If he really does own a patent (http://www.google.com/patents/US20090043584 referenced above). Then I can kind of see the argument. He's provided a BSD licensed implementation, but you don't have a license to use the patent. Perhaps that means you can share it, compile it, but if you use it you're in violation of the patent?
Yeah, he pretty much screams for the Streisand effect to take place there. I expect a number of ports this week just because he says they can't be done.
This is why, in matters of law, you should consult a lawyer.
Stuff you remember from TV is not the law.
Half-remembered Slashdot debates are not the law.
The law is the law. It varies from place to place and from year to year. It is large, complicated and subtle because it covers everything humans do, which is a large, complicated and subtle problem domain.
Seriously. If you have a legal question: see a freaking lawyer. A few hundred bucks to change the entire course of your life is a bargain. It's less than some plumbers.
I'm not a lawyer, so I won't comment on who is right here, but I will say that if your business model relies on the law, you should have a lawyer on speed-dial.
Oh, the endless arguments of copyright vs. patents.
From my understanding of this, the author has no right to block any reimplementation of the algorithm in another language because he has released the code under a license that explicitly allows for modification (which says nothing that forces modification to be restricted to a single language). The reimplementation just has to keep the same license and copyright notice.
However, there seems to be a patent pending for the algorithm. If there is an actual patent, he has not actually given anyone the right to use the code or any modifications.
You can reimplement it, but you can't run it without the author's permission (i.e. patent grant).
EDIT: On second thought, one might argue that since the code was licensed under BSD (which says "use in source or binary form") by the patent holder himself, he has given an implicit patent grant to everyone that uses it or modifies it in any way.
The patent application is worth reading. First, he gets a 101 rejection as unpatentable subject matter, because it's not a "machine or transformation". You can argue against that for things which a computer can do and which could not practically be done by humans. (Even though you can in theory do video compression by hand, at one frame per century or so, it's just not practical. Patents are about utility.) But here, the examiner points out that this algorithm could effectively be done with "paper and pencil". Soundex, its' predecessor, was.
Then the examiner points out prior art - a patent application by Ralston, (App #20040054679, Ralston, James, March 18, 2004, "Remotely invoked metaphonic database searching capability") The original Soundex algorithm dates from 1919, the Metaphone algorithm dates from 1990, and Ralston's improvement is on record. Philips' improvement of 2009 just wasn't enough of an advance over the old stuff.
He might have modified the claims to overcome those objections; this was a non-final rejection, and you're allowed another revision cycle with no additional fees. But, for whatever reason, he abandoned the application.
A rejected patent application puts the algorithm into the public domain. Philips has no rights in the algorithm now.
"Philips' improvement of 2009 just wasn't enough of an advance over the old stuff."
Not so. Metaphone 3 is not a derivative work. Ralston's patent merely uses (original 1990) metaphone as part of its design, and does nothing to improve it.
The patent was abandoned because the U.S. Patent office informed me that it is no longer patenting algorithms.
Considering that he used the word "copywrite" I think there's a good chance that he hired a lawyer to secure the IP, but didn't understand any of it himself.
He is wrong [0] in his interpretation of copyright and the BSD, but I think his wishes for his code should exceed his misunderstanding of the relevant law. Further, I think this is a patent (application?) on M3, which is what he is wanting to say with the "Public Domain" stuff [1].
By the way, I might add that I am deeply appreciative of the people here who have reviewed this situation with a friendly and understanding response to my attitude.
Am I missing something obvious here? What would change if this piece of software/algorithm was ported to Ruby? I mean Rubyists would get to use it, but what else would change? This whole thing seems very strange, like if someone would create a cure for a disease and give it out for free and tell everyone how it was made but insit that he be the one who injects every single patient personally.
IANAL but I don't see how using a BSD license automatically makes code FOSS. According to Lawrence Rosen[1] (who IS a lawyer),
"Since courts are likely to construe implied grants of license narrowly, a licensee should consider obtaining separately from the licensor an explicit grant of patent rights that might be needed for modified versions of BSD-licensed software."
This seems to go against the FOSS[2] freedom 2, the right to distribute modified copies without asking anyone for permission. Now, whether that can be applied in this particular case I don't know, I guess that depends on whether there are patents involved. But in general, BSD does not imply FOSS.
"I think the author of the algorithm implementation would have benefited more from..."
Well obviously the meta argument, taking a step back, is if the community insists on porting to ruby, doing all the work for him, such that the happy and cooperative leader can now collect sweet support contracts from MORE corporate users and increase the resume fodder value of his original product...
What looks better on dude's resume:
Author of a Java library with 1000 users resulting in $50K/yr support contract revenue
or
Author of a multiplatform Java and Ruby library with 2000 users resulting in $100K/yr support contract revenue
or
Author of a Java library, got into a fight with the ruby community mostly because I don't know the difference between licenses, copyrights, and patents, and now I've only got 500 users and $25K/yr of revenue
Certainly looks like it, or at least closely related. Can someone who is not served a localized copy of Google see if it is in fact a patent? (I see "status: application", loosely translated, but that's not something I can check the juridical meaning of.)
If you are able to view this, it is a "United States Patent Application Publication" that is found by following the `view pdf` button on the above link:
USPTO's PAIR website indicates that the application was rejected for non-patentability. I'd link it but PAIR doesn't do permanent links. Go to the main page at [1] and type in the application or publication number.
Hardly. Alice v CLS only throws out claims based on "performed on a general purpose computer". Mostly, that is enough to refute the remainder of the claims, as they apply to generic mathematical algorithms.
Systems such as this, however, have enjoyed patent protection in the past (Soundex, notably), and his own metaphone and double metaphone systems are cited in several other patents. Google patent search is your friend here.
Snarky comment: The USPTO has a habit of not denying any applications.
"They have no right to do this. Open Source does not mean the source is somehow 'open'. That's my code, not theirs. If I make something private, it means that no matter how desperately you need to call it, I should be able to prevent you from doing so, even long after I've gone to the grave."
I'm a little disappointed to see the original PR locked due to lphilips54's inconsistent statements.
While I think the OSS community should be polite and inclusive, I also think that we are all poorer if we ignore contributions due to author behavior. I'm confident that many authors have abhorrent political views and actions. While we should not elevate them as role models, there are times it's reasonable to just use the code.
"Public Domain", he keeps using that term, I don't think it means what he thinks it means. It only sort of applies here. Something actually being Public Domain has extremely wide repercussions. A Public Domain work exists without any copyright or intellectual property laws applying to it, none.
For a work to be really Public Domain, only happens under a bunch of specific circumstances that really do not apply here (such as the copyright holder having been dead for a number of years).
You can't really slap a license on something and have it be Public Domain, because that means relinquishing any and all intellectual property rights related to the work. Including personal and moral rights. From Wikipedia:
> Few if any legal systems have a process for reliably donating works to the public domain. They may even prohibit any attempt by copyright owners to surrender rights automatically conferred by law, particularly moral rights. An alternative is for copyright holders to issue a licence which irrevocably grants as many rights as possible to the general public, e.g., the CC0 licence from Creative Commons.
Note the last remark about Creative Commons' CC0 license. It's about the closest you can get to actually releasing your work to the Public Domain, worldwide (check the Creative Commons website for info about some legal hurdles why you can't "just release something to the Public Domain"). It's not something that happens by accident.
Now obviously the author doesn't have this particular specific meaning in mind, instead rather something else. Except, it would probably help the discussion a lot of he'd use the proper term and accurately defines what he is trying to say.
It seems to be some kind of confusion or collision between the (obviously and pretty straightforwardly copyrighted/licensed) actual written code he released under the BSD License, and his intellectual property rights over the (more nebulous concept of) the algorithm that is described in this code. I'm not at all sure if you can even obtain copyright over the latter. Actually no, I am pretty sure that you cannot. Copyright is very explicitly defined over a work, not an idea, and the work is the actual written code that was released under the BSD License.
At this point he's daring someone to do it at which point the only question will be who can afford to fight it. But seeing as how algorithms aren't subject to copyright in the first place...
While he's inarguably incorrect about quite a number of things, it's always better practice to assume the best of a fellow engineer and treat this as a teaching opportunity, not a cause for pitchforks and belittlement.
The package maintainer, threedaymonk, handled it perfectly, imo, by respecting the desires of the individual and not porting it, and closing the issue out quickly without further escalation. While it may have been technically "right" to copy the code, it wouldn't have been worth the damage it would have caused to the person behind it. Credit for handling a unfortunate situation with grace.