EXCEPTION GENERAL PUBLIC LICENSE Version 2, January 2009 DRAFT 7 - FOR FEEDBACK AND COMMENTS Copyright (C) 2009 Exception License Foundation Everybody is allowed to copy and distribute verbatim copies of this license document, but modifying it in any way is not allowed. Preamble Licenses for most software and projects used to take away your freedom to share and change them, until the "free" licenses were created. That enabled an enormous quantity of free software and open projects to be created, developed, maintained and expanded way beyond what one could have imagined in the beginning. Internet and the contemporary world would not be what it is without the contribution of so many people participating in the "Free, Libre and Open Source" movement (FLOSS) as some have described it. The original goal of FLOSS is a success, and now using and developing Open Source projects is a mark of smart thinking. In a perfect world, that would be a great common goal to use and change software freely, and collaborate in order to make the world more open and more diverse. In a perfect world, you wouldn't need an Exception License. We hope that this Exception License will be a sufficient message so that no further abuse are done, and be used more as an "art project example" or "theoretical or philosophical tool" for critical study of Open Source than a real license used in the real world. Sadly, we don't live in a perfect world and some uses are seen by the original Open Source Developers as abuses of their Open Source projects. Some military equipment are naturally using Open Source, for some weapon systems on ships and airplanes. Some missile may actually be running Linux. Some open source database may be used to track population for ethnic cleansing. Also, on a less dramatic but even more real note, some of the people using Open Source are actually working to make it impossible to develop through DRM, software patents, lobbying or Internet censorship. Using Free, Libre and Open Source Software for some socially negative activities can be seen as an unfair use of a tool for openness and justice. The social cost of these negative activities is not covered by the people committing such negative actions. Worse, Open Source software used for such negative goals is indeed helping such negative projects, often against the own will of the project developers, creators, maintainers and of the whole community. The eGPL can be seen as a way to redistribute the social and human cost of negative actions back to the original perpetrators of such negative actions. The goal of this license is then to enable the Open Source developers to choose that their project be covered by an Open Source license, and yet retain the right to exclude some entities from the right of using or modifying this software under this license. In such case, the concerned entities should request another licensing scheme from these Open Source developers in order to use the software. The project team can define groups of Exceptions for its project, and can even subscribe to "feeds" of exceptions that will define in time the group of entities that cannot use the project under eGPL. These feeds can be written by Non-Governmental Organization who know which entities have a detrimental social and human impact. By having such list written, that can help reducing the number of entities with detrimental effect on people and societies, giving them strong incentives to cease negative actions. Of course, the eGPL itself could be used as a tool in order to exclude entities that do not have any negative impact. As a result, a few restrictions apply to the eGPL. For example, you cannot define Exceptions on a specific person or on an ethnic group. You can however define an Exception for a Country or a Geographic region. Another condition is that the eGPL itself is place under eGPL, creating the first recursive license known to us. The Exception License Foundation will then pay attention to the use of the License and revoke the right of using such license for a given project when abuse of the original intent of the eGPL would be witnessed. For example, one could not agree with an Exception that would prevent "All peace organizations of the world" to use one particular Open Source project. We protect your rights with three steps: (1) copyright the project or software, (2) propose this license which gives legal permission to copy, distribute and/or modify the software or project, (3) enable you to define for your own project the list of exceptions, that is of entities that cannot use this license and should seek another license for this project. As with any Open Source license, there is no warranty for this free software. If the software is modified by anyone else and then shared, the recipients have to be aware that what they have is not the genuine, original software, so that any issue due to someone else should not affect the original authors' reputation. Also, people modifying the original project must be aware that they cannot introduce new Exceptions, and that their Exception list is Exactly the same as the original project. The reason behind this is that it would be otherwise very easy for someone to take a project and slightly modify it, create a new project, and then remove all the Exceptions from the new project, therefore breaking the original authors intent. Finally, as with traditional Open Source License, we state again the obvious that all patents affecting a project or software must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for using, copying, distributing and modifying follow: EXCEPTION GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR USING, COPYING, DISTRIBUTING AND MODIFYING 0. This License applies to any project, program, software or other work which contains a notice placed by the copyright holder stating it may be used or distributed under the terms of this Exception General Public License. The "Project" below refers to any such project, program, software or work, and a "work based on the Project" means either the Project or any derivative work under copyright law: that is to say, a work containing the Project or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without any limitation in the word "modification".) Each licensee is addressed as "you". Activities other than using, copying, distributing and modifying are not covered by this License; they are outside its scope. The act of running the project is restricted by the terms of this License (referred as "using"), and the output from the Project is covered only if it can be considered as "a work based on the Project" (independently from having been produced by running the Project). Whether that applies to this current Project depends on what the Project does. 1. You may copy and distribute non-modified copies of the Project's source code as you received it, in any medium, provided that you publish on each copy an appropriate and visible copyright notice and disclaimer of warranty; do not modify and preserve all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Project a copy of this License along with the Project, provided such recipients are not Excepted from the use of such Project. You may charge a fee for the physical act of providing a copy, and you may at your discretion offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Project or any part of it, thus creating a work based on the Project, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these following conditions: a) You must change the modified files to carry visible and prominent notices stating that you modified the files and the date of any such modification. b) You must license any work that you distribute or publish, that in whole or in part contains or is derived from the Project or any parts thereof, under the terms of this License, at no charge to all third parties covered by this License and not Excepted from its use. c) If the modified program normally has an interactive mode when run, you must make it, when started in the most ordinary way, to display or print a notice including an appropriate copyright statement and a notice that there is no warranty (or else, saying that you provide a warranty yourself) and that users may redistribute the Project under these same conditions, and telling the user how to visualize a copy of this License. If the original Project itself is interactive but does not normally display such an announcement, your work based on the Project is not required to display an announcement. If printing such an announcement would make another program non-interoperable with your own program and that the goal of your modification is to enable interoperability, your work based on the Project is not required to display an announcement. d) You must make sure that the Exceptions of this License do not cover any entities or part of entities that may have modified this Project, or used this program against the terms of this License for any activity related to the modification of this Project. The requirements apply to the modified work in its entirety, not to parts of it. If identifiable parts of that work are not derived from the Project, and can be reasonably distinguished from your modified work, and as such considered independent and separate works in themselves, then this License does not apply to those parts when you distribute them as separate works. But when you distribute these same parts as part of a whole which is a work based on the Project, the distribution of the whole must be under this License, whose permissions, obligations and terms for other licensees extend to the entire whole and to each and every part of it regardless of who wrote it. Thus, it is not the goal of this section to claim rights or contest your rights to work written entirely by you; rather, the goal is to exercise the right to control the distribution of derivative or collective works based on the Project, and make sure that you distribute parts not covered by this License separately from the modified work. In addition, mere aggregation of another work not based on the Project with the Project (or with a work based on the Project) on a storage space or distribution medium does not put the other work under the scope of this License. 3. You may distribute and copy the Project (or a derivative work, under section 2) in binary code or executable form under the conditions of Sections 1 and 2 printed above provided that you are not listed as part or whole of the entities Excepted from its right of use and also do one of the following: a) Join the whole corresponding machine-readable source code, distributed also under the terms of Section 1 and 2 printed above on a medium usually used for software source-code exchange; or, b) Join a written offer, valid for at least three years, to give any third party at no more price than the cost of performing the physical act of source distribution, the corresponding machine-readable copy of the source code, to be distributed under the terms of Sections 1 and 2 printed above on a medium usually used for software source-code exchange; or, c) Join the information you received as to the offer to distribute corresponding source code. (This option is only allowed for non-commercial distribution and only if you obtained the Project in binary or executable form with such offer, in accord with Subsection b printed above.) The source code for a work means the readable text-based form of the work which is preferred for making modifications to it. For an executable work, complete source code means all the source code for all parts it contains, plus any interface definition files, plus the scripts and text rules used to control compilation and deployment of the executable. However, as a special exception, the distributed source code does not need to include anything that is normally distributed (in either binary or source code form) with the major components (kernel, standard libraries, compiler) of the operating system on which the executable Project runs, unless that component itself accompanies the executable. The Project must include any component that is not generally available and required for compilation, especially if the given component is otherwise only available under NDA (Non Disclosure Agreement) or any other restrictive license, and has to be included without any other restriction than this License. If distribution of binary code or executable is made by offering access to copy from a given place, then offering equivalent access to obtain the source code from the same place counts as distributing the source code and has to comply to the same rules, even though third parties are not compelled to copy the source code along with the binary code. 4. You may not modify, copy, use, sublicense or distribute the Project except as expressly provided under this License. Any attempt otherwise to modify, copy, use, sublicense or distribute the Project is void, and will automatically terminate your rights under this License. However, parties who have received rights or copies from you under this License will not have their licenses terminated as long as these parties remain in full compliance with this License. 5. You are not required to accept this License, since you did not sign it. However, nothing else grants you permission to use, modify, copy or distribute the Project or its derivative works. These actions are prohibited by law if you do not accept this License and expose you to legal actions. Therefore, by using, modifying or distributing the Project (or any derivative work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions, without any restriction, for using, copying, distributing or modifying the Project or derivative works based on it. 6. Each time you copy or redistribute the Project (or any derivative work based on the Project), the recipient automatically receives a license, this License, from the original licensor to distribute, copy, use or modify the Project subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein and in the Exceptions of this License as governed by its terms and conditions presented herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment, justice decision, administrative decision or allegation of patent infringement or for any other reason (not limited to patent or legal issues), conditions are imposed on you or any entity you're part of (whether by agreement, court order or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions or terms of this License. If you cannot use or distribute so as to satisfy both and simultaneously your obligations under this License and any other obligations, then as a direct consequence you may not distribute, modify or use the Project at all. For example, if a patent license would not permit royalty-free sharing, copy or redistribution of the Project by anybody who receive copies directly or indirectly through you, then the only manner you could satisfy both the patent license and this License would be to refrain entirely from distributing the Project. If any article or part of the License is held invalid or unenforceable under any particular circumstance or decision, by any authority within a country, company or any territorial or organizational entity, for everybody within that said country, company or any territorial or organizational entity, then the License does not apply anymore to anybody or any entity within the organizational or geographical zone or area of validity of the decision or of applicability of the circumstance. When the License does not apply, that means that any right of use, modification, copy, distribution is revoked for any person within the area of validity or applicability of the decision or of the circumstance, and thus prevents anyone with previous right under this License from using, modifying, sharing, copying or distributing the Project and any other project governed by this License. The spirit of this License is that if any court or organization or territorial power would disagree with the Exception List for example and hold it invalid and make a law precedent for a particular territory, administrative, then the Exception License Foundation cannot accept that the License be changed in its nature and thus would request all its users to seek for another compatible license from the Project developers and authors. If the license or any part of the License is held invalid or unenforceable for the Project only, within a country, company or any territorial or organizational entity, then the License does not authorize anybody within this entity to use the Project for the Project only. The purpose of this section is not to induce you to infringe any patents or to contest validity of any right claims or to infringe any property right claims; this section has the only purpose of protecting the integrity of the free, libre and open source distribution system, which is implemented by this public license practice. Many people have made generous contributions to the multitude of software distributed through that system thanks to the consistence application of that system; the author/donor has the decision power to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice or overcome the terms and conditions of this License. This section is intended to make clear and well defined what is believed to be a consequence of the rest of this License. 8. If the use and/or distribution of the Project is restricted in certain geographical zones or countries either by copyrighted interfaces or by patents, the original copyright holder who places the Project under this License may add a geographical use and/or distribution limitation excluding these countries, so that use and/or distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. The recipient of the Project should make sure that these restrictions are up to date and accurate and do not apply to him, his country, the country where computers storing or executing the Project may be placed on or the entity he is part of. 9. The Exception License Foundation may publish new versions and/or revised versions of the Exception General Public License at variable time intervals. Such new versions will be in similar spirit to the present version, but may differ in the text or details to address issues, problems or concerns as they occur. The Project can adopt a new version of the Exception General Public License or keep on using any earlier version. 10. If you wish to use parts of the Project into other free projects whose distribution conditions are not governed by this Exception General Public License, write to the author to ask for permission. 11. You can use, modify, copy and distribute the Project, provided any Exception does not prevent you to use the Project under this License. Exceptions are defined by the developers and makers of the Project. All the Exceptions are combined together to define the Exception List. Exceptions are defined as an exclusion of a certain list of given entities, be it companies, governmental components, countries or any organizational or territorial entity of any kind. Exceptions can be defined at the beginning of a Project and be changed during the whole evolution of the Project. If you can reasonably be included in any of the Exceptions for the Project, you are not allowed to use, modify, copy, share or distribute the Project under these License terms and conditions and should remove the Project from any storage medium you used. If you wish to use the Project but are Excepted from it, you should seek another alternative license from the Project authors and developers. 12. Exceptions cannot apply to individual people. You cannot use the Project in any way that would benefit any of the entities listed in Exception, either directly or indirectly. Exceptions cannot apply to ethnic groups or genders. Such Exceptions, if defined are automatically said to be null and do not apply, whatever wording may be used by the Project, but the remainder of the Exception List applies in full force without being affected by any nullified Exception. 13. Exceptions are defined either in fixed form as a file, usually named "EXCEPTIONS", hereby described as the Exception File, included in the Project or as a changeable list (that can be found online, on Internet, or requested from the Project developers and authors) and which location should be in the Exception File, included in the Project. Having an Exception File within the Project does not prevent the Project's authors to define other additional Exceptions online. The address of the online Exception List may or may not be listed within the Exception File. If no Exceptions File or alike is present within the Project, you must assume that all Exceptions are defined online and respect the License accordingly. You have to check both the Exception File and online in order to verify that this License applies to you. The default online server for defining Exceptions is the home web server of the Exception License usually located at http://www.eGPL.info. In case of not being able to access such server, you must use well known Internet tools and search engine to find the location of appropriate Exceptions for the Project. 14. A Project is said to be a Forked Project when it is based on another Project and considered a derivative of this other Project. You may create a Forked project for any Project provided you're not excepted from this Project. The Forked project inherits all the Exceptions from the Parent Project. All the Exception requirements applies automatically to any Forked Project of the Forked Project, as a Forked Project at the second degree, third degree, or any degree, is also considered a Forked Project of the Parent Project. The Parent Project may declare at any time that Forked Project may add to the Exception List. Such indication is to be written in plain english in the Exception List of the Project. By default, any Forked Project cannot and should not add any Exception to the Exception List. If such statement allowing Forked Project to add Exceptions is present in the Parent Project, you may, as the modifier of a Project and thus the creator of a Forked Project, add more exceptions to the inherited Exceptions but cannot remove any Exception from the Parent Project Exception List. The Parent Project may require the Forked Project to remove any exception and you must comply with it. The Forked Project, by being a derivative, accepts any Exception removal request and recognize the right of the Parent Project to request such removal for the lifetime of the Parent Project. Not complying with a request from the Parent Project may lead to having the Forked Project listed in the Exception List, and as such, loose all rights of use of the original code, parts or sections of the Parent Project. In such case of a Forked Project being added to the Exception List of the Parent Project, you must delete all parts of the Parent Project from your Forked Project. Any Forked Project hereby accepts such requirement, present or future, and recognize the right of the Parent Project to request at any time that no change to the Exception List be done by any Forked Project. 15. The License is itself a project placed under eGPL License. As such, the Exception License Foundation can define Exceptions for the application of this License. This is said to create the first recursive License where the License apply on itself. 16. When an entity is not granted rights on the Project because of an Exception, such entity is called an "Excepted Entity" should seek another license (hereby called an "Alternative license") to be granted to it before using or redistributing the Project. If you are part of an Excepted Entity, you can seek such Alternative license from the Project developers and authors. This process is called Resolution. Some hints about who or which online resource to contact in order to perform this Resolution can be noted in the "EXCEPTIONS" file and you should refer to it when seeking an Alternative license. You understand that if you cannot use the Project under this license (due to one or several Exceptions), and did not obtain any other License for the Project, then you have no right at all to use, modify, copy, share or redistribute the Project and should thus remove this Project from any medium, support or location that you may have under your command or used to temporarily store this Project. 17. This License is automatically converted to Free Software Foundation GNU General Public License (GNU GPL) version 2 (two) after 10 (ten) years of no activity, no new release or no update on the Exception List of the Project. After such period, the GNU GPL is the only license governing the Project. This condition applies to the whole Project and does not take in account a particular version, release or package of the Project. Any bug fix, new version is considered as activity and therefore pushes back the conversion date by the duration mentioned above. Any activity in a Forked Project is also considered as activity on the Parent Project and therefore affects the conversion date as if the activity was in the Parent Project itself. NO WARRANTY 18. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE BY THIS LICENSE, THERE IS NO WARRANTY FOR THE PROJECT, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATE IN WRITING THE COPYRIGHT HOLDERS AND/OR ANY OTHER PARTIES PROVIDE THE PROJECT "AS IS" WITHOUT ANY WARRANT OF ANY KIND, EITHER IMPLIED OR EXPRESSED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS THE PERFORMANCE AND QUALITY AND OF THE PROJECT IS WITH YOU. SHOULD THE PROJECT PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY CORRECTION, REPAIR OR SERVICING. SHOULD THE PROJECT PROVE DANGEROUS, YOU HAVE TO NOTIFY THE ORIGINAL AUTHORS AND ANY PERSON THAT MAY HAVE USED OR RECEIVED A COPY THROUGH YOU. 19. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROJECT AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY SPECIAL, GENERAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO DATA BEING RENDERED INACCURATE OR LOSS OF DATA OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROJECT TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH PROBLEMS, ISSUES OR DAMAGES BY ANY FORM OF ORAL OR WRITTEN OR OTHER COMMUNICATION. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Projects If you make a new project and you want it to be of the greatest possible use to the public while not helping entities having a social and human negative impact, then you can achieve this by making it free and excepted software which most people can redistribute and change under these terms. The eGPL license was designed to be very close to the spirit of other public license while allowing the Exception mechanism. To achieve that, attach the following notices to your project. It is best to attach them at the beginning of each source file to most effectively convey the exclusion of warranty; and each source file should have at least the "copyright" text and a pointer to where the full license is found. Copyright (C) This program is free and excepted software; you can use it, redistribute it and/or modify it under the terms of the Exception General Public License as published by the Exception License Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Exception General Public License for more details. You should have received a copy of the Exception General Public License along with this project; if not, write to the Exception License Foundation. Also add details on how to contact you by electronic and paper mail. If the program has an interactive mode , make it print a short notice like this when it starts: Zblahvision version 42, Copyright (C) year name of author Zblahvision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free and excepted software, and you are welcome to use it, modify it and/or redistribute it under certain conditions; type `show c' for details. The prototype commands `show w' and `show c' should show the appropriate parts of the Exception General Public License. Follow the same idea if your program has a graphical interface. You should also get your employer or your school, if any, to sign a "copyright disclaimer" for the project, if necessary. Here is a sample; alter the names: Corpozealous, Inc., hereby disclaims all copyright interest in the program `Zblahvision' (which identify true terror-making managers) written by Paul Kludger. , 1 April 2001 Max Micromanage, President of Corporate Relationships This Exception General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the Exception Lesser General Public License instead of this License.