Re: About your license Apache 2.0

264 views
Skip to first unread message

Sean Owen

unread,
Feb 4, 2013, 5:37:47 PM2/4/13
to zx...@googlegroups.com
There's nothing wrong with that per se, and as you quote, that's not what I am objecting to. I am surprised this keeps getting misunderstood. Code reuse and modification is not all, or most, of what is happening when someone copies and pastes the entire app source code. And, I don't agree with the idea that that which is not illegal must be OK. Not breaking the law is a minimum standard of behavior. To repeat...

The practical problem is that people are copying the Manifest file. The clone apps then declare themselves to respond to Intents intended for Barcode Scanner, even in our namespace. The lesser practical problem is that cloning the UI makes people think they're using Barcode Scanner when they are not. We get spurious bug reports. These are examples of how uninformed reuse can slightly harm the project, and that's not OK. 

The technical legal problem is that the Apache license does not grant trademark, and copying the UI violates trademark. Not OK either insofar as it's not even legal.

Next is a general opinion that the spirit of open source is about improvement, rather than copying only. That's not a practical or legal argument like above, but a matter of principle. I wanted this code to be open sourced to be improved, inside or outside the project.

Many of the clones this advice helps create are just to add ads or sponsored links. Again not a legal problem per se, but, does it make you want to make more free code? Does that have a negative impact then?

This is why I don't support tutorials that help you copy and paste the open source application completely.

johanqnms

unread,
Feb 5, 2013, 9:11:28 AM2/5/13
to zx...@googlegroups.com
Ok, I Understand your points.

The problem is when the clone apps use your code like base for the project. But if the project uses your code like a library or like external files imported then you don't have a problem?

My "surprise" is because I have seen like you, like author of the project Zxing has written in several blogs "pressing" or "hunting" (sorry for the words) the people for desist in user your complete code. In your documentation you should write a note (or recommendation) for the programmers only import your code like library o add the warning for don't use your manifest or your entire GUI.

Then the future bloggers or programmers will be aware about that point.

Thanks for your work, Personally I need to know if I can use your code as I said before: Like library or files imported.

J.Q.

Sean Owen

unread,
Feb 5, 2013, 11:04:59 AM2/5/13
to zx...@googlegroups.com
It's open source exactly so that people can reuse it. That was the point of us open sourcing it from Google. 
This project is unusual because it's a full app, and what people do with it is more that "reuse" because they clone it entirely. This is not as straightforward as some Java library you copy.

I myself am only insisting that developers:
  1. do not declare an app in our namespace. It's not an open source issue, just a matter of not breaking our Intents
  2. not violate US trademark law by cloning our UI
The rest is just my opinion and request -- please improve, contribute patches, don't just exploit for profit. I won't even insist you listen to that.

As you say, I've repeated the warning above many times across the internet. I have been surprised that it even had to be said, to be honest. Do I have to tell people not to harm the project or violate trademark law? This only seems to surprise and affront people that are accustomed to reusing whatever code they find on the internet freely. This is not what open source means.

I am certainly using zxing, as a high-profile project, as a bully pulpit to make a point about open source: it's not free, and there are legal terms one needs to understand -- as well as ethical considerations.

johanqnms

unread,
Feb 5, 2013, 11:21:22 AM2/5/13
to zx...@googlegroups.com
Ok, thanks for your answer.

About your GUI, I dont' want clone it because I have my own GUI but what is the license that you say? You mention US Trademark law. 

1) Are you registered the "Zxing" like Copyright  ©

2) Could I register my project like Copyright © (with my own code and GUI) but with your code inside? or I can't do it for the Apache License 2.0? I can't understand it, sorry for that.


Thanks

Sean Owen

unread,
Feb 5, 2013, 12:18:46 PM2/5/13
to zx...@googlegroups.com
The license is clear: Apache License 2.0. It does not give you copyright or trademark rights in the work, but, gives you rights to distribute it or derivative works just about however you like. See http://code.google.com/p/zxing/wiki/LicenseQuestions

"zxing" is a trademark, not a copyright. You can't use it as a trademark, no. That doesn't mean you can't mention the project -- in fact, you need to provide a link to the project (or at least a reference to the license). It means it can't be presented to users as if it is a product of the zxing project.

You have copyright in whatever new creative works you create, in your app. Your new code and changes belong to you. The license concerns only how you may use the code that does not belong to you, which is the original project code. It is not hard to comply with the license, which grants very liberal rights to use the authors' copyrighted code.

If you need a more authoritative answer to these questions -- which are not trivial -- you would have to ask a lawyer. I'm not one.

r4j

unread,
Dec 19, 2013, 5:22:35 AM12/19/13
to zx...@googlegroups.com
Dear sir,
I have faced the same problem like johanqnms. My customers don't want to install two applications in their phones because scanning QR code is just a small function in my app. I don't want to break the law or violate your trade mark license. 
I'm really grateful and appreciate you and other developers 's distribute for this project. I just want to know is it possible to use your app without install it? I can keep your logo, your license in my own app or tell users this function isn't mine if you want.  
I found this link which help me to add ZXing as library without changing code so much. Of course I can start my app from scratch with core library,  but I think it isn't worth doing this because it's just a small function as I mention and I don't have time to do this. 
So, could you please tell me it is possible to do that? what could I do to apply ZXing to my app?
Thanks.

Sean Owen

unread,
Dec 19, 2013, 6:51:17 AM12/19/13
to zx...@googlegroups.com
It is fine for your customer to not want to integrate a third-party application. It is fine for them to hire you to build a scanner that does not integrate with a third-party app. What is not OK is if you use this project's IP inappropriately in order to meet that need. 

"But my customer wanted it" does not make it OK. Surely, your customer does not want to buy from you a work that is technically misappropriating trademarks? "But it would be easier if we could copy the whole thing" is not a good argument. All you're saying is that it would make you more money. It is already very easy to use the IP here correctly and profit from it, so I have no sympathy for this idea.

  • "don't want to violate trademark license" : the license does not grant trademark rights. That's the point.
  • "I'm really grateful": thank you, but this is not relevant. It's not like I'm just being mean and if you show appreciation I'll let you do something. I'm telling you that you need to heed the standard open source license under which the collective authors of this project have made it available to you.
  • "I can keep your logo": no. You're not understanding the issue. This would mislead people into thinking yours is a product we distribute and endorse, and it isn't.
  • "I can keep your license": yes, meaning comply with the requirements of the standard Apache License 2.0, as per https://code.google.com/p/zxing/wiki/LicenseQuestions  This is not some point of negotiation, but a hard requirement of the license that gives you any right to distribute the software
  • "tell users this isn't my function": by the terms of the license, users need to be able to discover that you are distributing software based on this project. They also need to reasonably understand that this is your modification of it, and not an app we distribute or endorse

I've explained this many times, and it's up to you to read and understand the simple, standard licensing, and get it right. If you can't, you should not be using open source software.


You can reuse code from the Android application. What you can't do is confuse consumers into thinking they're using our app. You also must abide by the terms of the Apache License. Finally -- and this is a strong request from me rather than legal requirement --- you need to not create manifest entries that interfere with our Intents. Do not declare in the zxing namespace. 

This is really a bare minimum of behavior.
Message has been deleted
Message has been deleted

Edu

unread,
May 18, 2016, 1:48:29 PM5/18/16
to zxing
I want to ask you a question related to these questiones.

My situation is this: I am doing a reader who uses Mobile Vision Api and management results com.google.zxing.client.result modifying the code (with my own UI) and adding in the header of each modified file
"NOTICE This field is based on com.google.zxing.client.result.ResultHandler of ZXing Project
https://github.com/zxing/zxing ".

Now I'm analyzing the code "com.google.zxing.client.result.supplement.ProductResultInfoRetriever" and I find this alert "
<P> <strong> Please do not reuse esta code. </ Strong> Using results in This Way requires permission
* From Google, and That Is not Granted to users via esta project. </ P> "

* I think it's because of the uri "https://www.google." + LocaleManager.getProductSearchCountryTLD (context)
+ "? / M / products ie = UTF8 & oe = utf8 & scoring = p & source = zxing & q =" + encodedProductID, "so I will not make use of it.

** But ResultHandler class also uses the services of google:

// Uses the mobile-specific version of Product Search, Which is formatted for small screens.
final void openProductSearch (String upc) {
Uri uri = Uri.parse ( "http://www.google." + LocaleManager.getProductSearchCountryTLD (activity) +
"/ M / products q =" + upc); // I deleted "& source = zxing"
launchIntent (new Intent (Intent.ACTION_VIEW, uri));
}

final void openBookSearch (String isbn) {
Uri uri = Uri.parse ( "http://books.google." + LocaleManager.getBookSearchCountryTLD (activity) +
"/ Books vid = isbn?" + Isbn);
launchIntent (new Intent (Intent.ACTION_VIEW, uri));
}

My questions are:

1. I'm doing well by modifying files and adding the header NOTICE?

2. My assumption is correct regarding
"Https://www.google." + LocaleManager.getProductSearchCountryTLD (context)
+ "? / M / products ie = UTF8 & oe = utf8 & scoring = p & source = zxing & q =" + encodedProductID; "*

3. The file ResultHandler use of these services is google **
these services can I use them?

Thanks beforehand for your attention.

Sean Owen

unread,
May 26, 2016, 11:20:22 PM5/26/16
to zxing
Yes, Google does not in general let applications scrape its product results. This app / project has some very old, de facto permission because it started at Google. Nobody has ever blocked it. Still, it is likely against the terms of use for any other application to retrieve Google product results using this code. Same for book search.

You should refer to the text of the Apache license to see what you need to do when distributing project code. See also https://github.com/zxing/zxing/wiki/License-Questions
Reply all
Reply to author
Forward
0 new messages