
European Union Public Licence 
V.1.0 
EUPL &#169; the European Community 2007 
This European Union Public Licence (the &#8220;EUPL&#8221;) applies to the Work or Software (as 
defined below) which is provided under the terms of this Licence. Any use of the Work, other 
than as authorised under this Licence is prohibited (to the extent such use is covered by a right 
of the copyright holder of the Work). 
The Original Work is provided under the terms of this Licence when the Licensor (as defined 
below) has placed the following notice immediately following the copyright notice for the 
Original Work: 
Licensed under the EUPL V.1.0 
or has expressed by any other mean his willingness to license under the EUPL. 
1. Definitions
In this Licence, the following terms have the following meaning: 
&#8722; The Licence: this Licence. 
&#8722; The Original Work or the Software: the software distributed and/or communicated by 
the Licensor under this Licence, available as Source Code and also as Executable 
Code as the case may be. 
&#8722; Derivative Works: the works or software that could be created by the Licensee, based 
upon the Original Work or modifications thereof. This Licence does not define the 
extent of modification or dependence on the Original Work required in order to 
classify a work as a Derivative Work; this extent is determined by copyright law 
applicable in the country mentioned in Article 15.  
&#8722; The Work: the Original Work and/or its Derivative Works. 
&#8722; The Source Code: the human-readable form of the Work which is the most 
convenient for people to study and modify. 
&#8722; The Executable Code: any code which has generally been compiled and which is 
meant to be interpreted by a computer as a program. 
&#8722; The Licensor: the natural or legal person that  distributes and/or communicates the 
Work under the Licence. 
&#8722; Contributor(s): any natural or legal person who modifies the Work under the 
Licence, or otherwise contributes to the creation of a Derivative Work. 
&#8722; The Licensee or &#8220;You&#8221;:  any natural or legal person who makes any usage of the 
Software under the terms of the Licence. &#8722; Distribution and/or Communication: any act of selling,  giving, lending, renting, 
distributing, communicating, transmitting, or otherwise making available, on-line or 
off-line, copies of the Work at the disposal of any other natural or legal person. 
2. Scope of the rights granted by the Licence
The Licensor hereby grants You a world-wide,  royalty-free, non-exclusive, sub-licensable 
licence to do the following, for the duration of copyright vested in the Original Work: 
&#8722; use the Work in any circumstance and for all usage, 
&#8722; reproduce the Work, 
&#8722; modify the Original Work, and make Derivative Works based upon the Work, 
&#8722; communicate to the public, including the right to make available or display the Work 
or copies thereof to the public and perform publicly, as the case may be, the Work, 
&#8722; distribute the Work or copies thereof, 
&#8722; lend and rent the Work or copies thereof, 
&#8722; sub-license rights in the Work or copies thereof. 
Those rights can be exercised on any media,  supports and formats, whether now known or 
later invented, as far as the applicable law permits so. 
In the countries where moral rights apply, the Licensor waives his right to exercise his moral 
right to the extent allowed by law in order to make effective the licence of the economic rights 
here above listed. 
The Licensor grants to the Licensee royalty-free, non exclusive usage rights to any patents 
held by the Licensor, to the extent necessary to make use of the rights granted on the Work 
under this Licence. 
3. Communication of the Source Code
The Licensor may provide the Work either in its Source Code form, or as Executable Code. If 
the Work is provided as Executable Code,  the Licensor provides in addition a machinereadable copy of the Source Code of the Work along with each copy of the Work that the 
Licensor distributes or indicates, in a notice following the copyright notice attached to the 
Work, a repository where the Source Code is easily and freely accessible for as long as the 
Licensor continues to distribute and/or communicate the Work. 
4. Limitations on copyright
Nothing in this Licence is intended to deprive the Licensee of the benefits from any exception 
or limitation to the exclusive rights of the rights owners in the Original Work or Software, of 
the exhaustion of those rights or of other applicable limitations thereto. 
5. Obligations of the Licensee
The grant of the rights mentioned above is subject to some restrictions and obligations 
imposed on the Licensee. Those obligations are the following: Attribution right: the Licensee shall keep intact all copyright, patent or trademarks notices 
and all notices that refer to the Licence and to the disclaimer of warranties. The Licensee must 
include a copy of such notices and a copy of the Licence with every copy of the Work he/she 
distributes and/or communicates. The Licensee must cause any Derivative Work to carry 
prominent notices stating that the Work has been modified and the date of modification. 
Copyleft clause: If the Licensee distributes and/or  communicates copies of the Original 
Works or Derivative Works based upon the Original Work, this Distribution and/or 
Communication will be done under the terms  of this Licence. The Licensee (becoming 
Licensor) cannot offer or impose any additional terms or  conditions on the Work or 
Derivative Work that alter or restrict the terms of the Licence. 
Compatibility clause: If the Licensee Distributes and/or Communicates Derivative Works or 
copies thereof based upon both the Original Work and another work licensed under a 
Compatible Licence, this Distribution and/or Communication can be done under the terms of 
this Compatible Licence. For the sake of this clause, &#8220;Compatible Licence&#8221; refers to the 
licences listed in the appendix attached to  this Licence. Should the  Licensee&#8217;s obligations 
under the Compatible Licence conflict with his/her  obligations under this Licence, the 
obligations of the Compatible Licence shall prevail.  
Provision of Source Code: When distributing and/or communicating copies of the Work, the 
Licensee will provide a machine-readable copy of the Source Code or  indicate a repository 
where this Source will be easily and freely available for as long as the Licensee continues to 
distribute and/or communicate the Work. 
Legal Protection: This Licence does not grant permission to use the trade names, trademarks, 
service marks, or names of the Licensor, except as required for reasonable and customary use 
in describing the origin of the Work and reproducing the content of the copyright notice. 
6. Chain of Authorship
The original Licensor warrants that the copyright in the Original Work granted hereunder is 
owned by him/her or licensed to him/her and that he/she has the power and authority to grant 
the Licence. 
Each Contributor warrants that the copyright in the modifications he/she brings to the Work 
are owned by him/her or licensed to him/her and that he/she has the power and authority to 
grant the Licence. 
Each time You, as a Licensee,  receive the Work, the original Licensor and subsequent 
Contributors grant You a licence to their contributions to the Work, under the terms of this 
Licence. 
7. Disclaimer of Warranty
The Work is a work in progress, which is continuously improved by numerous contributors. It 
is not a finished work and may therefore contain defects or &#8220;bugs&#8221; inherent to this type of 
software development. 
For the above reason, the Work is provided under the Licence on an &#8220;as is&#8221; basis and without 
warranties of any kind concerning the Work,  including without limitation merchantability, 
fitness for a particular purpose, absence of defects or errors, accuracy, non-infringement of 
intellectual property rights other than copyright as stated in Article 6 of this Licence. This disclaimer of warranty is an essential part of the Licence and a condition for the grant of 
any rights to the Work. 
8. Disclaimer of Liability
Except in the cases of wilful misconduct or damages directly caused to natural persons, the 
Licensor will in no event be liable for any direct or indirect, material or moral, damages of 
any kind, arising out of  the Licence or of the use of the Work, including without limitation, 
damages for loss of goodwill, work stoppage, computer failure or malfunction, loss of data or 
any commercial damage, even if the Licensor has been advised of the  possibility of such 
damage. However, the Licensor will be liable under statutory product liability laws as far such 
laws apply to the Work. 
9. Additional agreements
While distributing the Original Work or Derivative Works, You may choose to conclude an 
additional agreement to offer, and charge a fee for, acceptance  of support, warranty, 
indemnity, or other liability obligations and/or services consistent with this Licence. 
However, in accepting such obligations, You may act only on your own behalf and on your 
sole responsibility, not on behalf of the original Licensor or any other Contributor, and only if 
You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred 
by, or claims asserted against such Contributor by the fact You have accepted any such 
warranty or additional liability. 
10. Acceptance of the Licence
The provisions of this Licence can be accepted by clicking on an icon &#8220;I agree&#8221; placed under 
the bottom of a window displaying the text of this Licence or by affirming consent in any 
other similar way, in accordance with the rules of applicable law. Clicking on that icon 
indicates your clear and irrevocable acceptance of this Licence and  all of its terms and 
conditions.  
Similarly, you irrevocably accept this Licence and all of its terms and conditions by 
exercising any rights granted to You by Article 2 of this Licence, such as the use of the Work, 
the creation by You of a Derivative Work or the Distribution and/or Communication by You 
of the Work or copies thereof.  
11. Information to the public
In case of any Distribution and/or Communication of the Work by means of electronic 
communication by You (for example, by offering to download the Work from a remote 
location) the distribution channel or media (for example, a website) must at least provide to 
the public the information requested by the applicable law regarding the identification and 
address of the Licensor, the Licence and the way it may be accessible, concluded, stored and 
reproduced by the Licensee. 
12. Termination of the Licence
The Licence and the rights granted hereunder will terminate automatically upon any breach by 
the Licensee of the terms of the Licence. 
Such a termination will not terminate the licences of any person who has received the Work 
from the Licensee under the Licence, provided such persons remain in full compliance with 
the Licence.  13. Miscellaneous
Without prejudice of Article 9 above, the Licence represents the complete agreement between 
the Parties as to the Work licensed hereunder. 
If any provision of the Licence is invalid or unenforceable under applicable law, this will not 
affect the validity or enforceability of the Licence as a whole. Such provision will be 
construed and/or reformed so as necessary to make it valid and enforceable. 
The European Commission may put into force translations and/or binding new versions of 
this Licence, so far this is required and reasonable. New versions of the Licence will be 
published with a unique version number. The new version of the Licence becomes binding for 
You as soon as You become aware of its publication. 
14. Jurisdiction
Any litigation resulting from the interpretation of this License, arising between the European 
Commission, as a Licensor, and any Licensee, will be subject to the jurisdiction of the Court 
of Justice of the European Communities, as laid down in article 238 of the Treaty establishing 
the European Community. 
Any litigation arising between Parties, other  than the European Commission, and resulting 
from the interpretation of this License, will be subject to the exclusive jurisdiction of the 
competent court where the Licensor resides or conducts its primary business. 
15. Applicable Law
This Licence shall be governed by the law of the European Union country where the Licensor 
resides or has his registered office. 
This licence shall be governed by the Belgian law if: 
&#8722; a litigation arises between the European Commission, as a Licensor, and any 
Licensee; 
&#8722; the Licensor, other than the European Commission, has no residence or registered 
office inside a European Union country.  
 ===Appendix
&#8220;Compatible Licences&#8221; according to article 5 EUPL are: 
&#8722; General Public License (GPL) v. 2 
&#8722; Open Software License (OSL) v. 2.1, v. 3.0 
&#8722; Common Public License v. 1.0 
&#8722; Eclipse Public License v. 1.0 
&#8722; Cecill v. 2.0 

