Join GitHub today
Many have asked questions about the terms of this project's license. This page attempts to collect some answers. This does not constitute legal advice.
Apache License v2.0
This project is licensed under the Apache License v2.0. It is not a copyleft license like the GPL; it is relatively generous about what you can do with the code.
What Do I Have To Do To Comply?
From the license's "Redistribution" section:
- You must give any other recipients of the Work or Derivative Works a copy of this License; and
- You must cause any modified files to carry prominent notices stating that You changed the files; and
- You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
- If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
A common way to comply, in a product that is delivered only in binary form and not source form (e.g. an application download) is to add a mention of the project, and link to its license (in our view, a link to the project website is ultimately also fine), in a "Help" or "About" screen of the application.
We do monitor for license compliance.
Can This Be Used In Commercial Products?
The license does not forbid this. The license terms still apply, of course.
Please see below our thoughts on the spirit of the open-source license. If you are selling a product based on something that is free, it should add to and innovate on this project. Otherwise it is more a copy than anything.
Can I Include This With A Library I Distribute?
Yes. Again the license terms still apply. Specifically, they apply to anyone that uses a library that includes zxing, so applications that use a library that includes zxing have the same license inclusion/link requirements.
Specific to redistributing zxing as part of a library, possibly as source:
- You should include a copy of the Apache License v2.0. Since a library is generally one or more files (as opposed to an executable), there's no reason not to include a complete copy the license.
- If you include source, other sections of the Apache License v2.0 apply.
- We recommend (but don't require) that you include a copy of or link to this page to help ensure that users of the combined work understand what they agree to in order to use any work that includes and/or derives from zxing.
The Spirit and the Letter of the Law
The above describe the "letter" of this open-source project license -- what you must technically do to not violate the law and terms of the license. This is, of course, just a minimum standard.
We think the "spirit" of the open-source license suggests further guidelines for reuse:
- The product and source is provided for free in an attempt to promote development of more, better open-source code. Consider giving back, if you benefit from the code and improve upon it, by:
- contributing code back to the project
- open-sourcing your code otherwise
- publicly releasing new ideas and research
- Likewise the project wishes to promote innovation and creation of better products for the users of the world. Reusing the code to add a trivial feature is more copying than innovation, but reusing to create something entirely better is ideal
- Give credit where it's due. License requirements
What About Reusing the UI?
One particularly contentious issue has been reuse of Barcode Scanner's user interface. The familiar translucent rectangle, red line, beep sound that Android users are accustomed to in many barcode-scanning applications is derived from this project.
The problem with reusing the UI is that users think they are using Barcode Scanner when they are not. Trademark law prohibits creating such confusingly similar products -- and the open source license does not grant trademark rights. It is not permitted to use the project in this way because it would require these trademark rights. Don't copy the UI exactly, or to a very large extent. Consider whether a user would know it's your app and not Barcode Scanner.
One option is to not reuse the UI at all, but integrate via Intents -- see below.
A Word on Copyright
Copyright on all code and artifacts of this project is still retained by the project authors. The license terms do not grant you copyright, and you cannot claim copyright on the creative work of this project.
This is of concern to you if you are copying text, images, sounds from the project. It needs to be clear that you are not claiming copyright on these elements, and that they are instead licensed from this project.
A way around this is to not copy creative elements at all!
A Word on Trademark
The Apache License 2.0 does not grant trademark rights. It does not give permission to use the Barcode Scanner name or logo, for example, in a commercial context. (The project typically agrees to allow the name, logo and description to be reused by app stores and web sites promoting or writing about the app.) Trademark rights also preclude others from making apps that may be confusingly similar, or make an end user think that they are using the Barcode Scanner app when they are not.
This is an issue for apps that have started by copying and pasting the source code to Barcode Scanner. This is strongly discouraged for several reasons, not least of which is the fact that publishing such a similar app would not be legal.
Can I Avoid Reusing The Project Completely?
Yes, please see ScanningViaIntent to learn how to call to the Barcode Scanner application using Intents. This requires little work, no integration, and entails no license issues. We view it as by far the simplest means of integration for several reasons.