Mercurial > hg > orthanc-book
comparison Sphinx/source/faq/licensing.rst @ 199:3fd71c385391
cla and licensing
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 12 Feb 2019 13:47:20 +0100 |
parents | |
children | 3931f1a721dc |
comparison
equal
deleted
inserted
replaced
198:d50b794434c3 | 199:3fd71c385391 |
---|---|
1 .. _licensing: | |
2 | |
3 | |
4 Licensing of the Orthanc ecosystem | |
5 ================================== | |
6 | |
7 .. contents:: | |
8 | |
9 | |
10 Philosophy | |
11 ---------- | |
12 | |
13 The objectives of the Orthanc ecosystem is to share technical | |
14 knowledge about :ref:`DICOM <dicom-guide>`, and to foster scientific | |
15 collaborations in medical imaging by subscribing to the `open-science | |
16 paradigm <https://en.wikipedia.org/wiki/Open_science>`__. To this end, | |
17 Orthanc is provided as free and open-source software to the benefit of | |
18 the worldwide community of medical imaging. | |
19 | |
20 In order to support this objective of global knowledge sharing, the | |
21 Orthanc project enforces reciprocity. If someone finds Orthanc useful | |
22 to her academic work or to her business, the community of medical | |
23 imaging should gain an advantage from this use by enlarging the | |
24 knowledge base. This virtuous circle guarantees the fact that Orthanc | |
25 will be developed in a sustainable way in the long-term, to the | |
26 benefit of all stakeholders. Predatory behaviors should be prevented, | |
27 while preserving the freedoms of the users of Orthanc, including for | |
28 commercial uses. | |
29 | |
30 According to this philosophy, the University Hospital of Liège decided | |
31 to release the Orthanc ecosystem under the `GPL license | |
32 <https://en.wikipedia.org/wiki/GNU_General_Public_License>`__ | |
33 in 2012. The GPL is a strong copyleft license that is recognized | |
34 worldwide, and that is designed to enforce reciprocity. | |
35 | |
36 As Orthanc is lightweight and designed for Web applications and for | |
37 sharing medical images over Internet, it has been quickly deployed on | |
38 cloud platforms in order to host large amount of data. Orthanc | |
39 considers this use as very legitimate, for instance for scientific | |
40 purpose (think of open-data databases) or for societal needs (think of | |
41 teleradiology platforms in developing countries). Unfortunately, the | |
42 GPL does not protect from predatory commercial behaviors over cloud | |
43 platforms because of the so-called "`ASP loophole | |
44 <https://en.wikipedia.org/wiki/Application_service_provider>`__", that | |
45 does not enforce modified versions of a free and open-source software | |
46 running on a server to be given back to the community. | |
47 | |
48 For this reason, the plugins that provide scalability-related or | |
49 cloud-related features (for instance the :ref:`PostgreSQL | |
50 <postgresql>` and :ref:`Web viewer <postgresql>` plugins that are | |
51 necessary for Web applications distributed at a large scale) were | |
52 released under the stronger `AGPL licence | |
53 <https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License>`__. | |
54 This license protects the community of medical imaging by ensuring | |
55 that the features included in Orthanc instances running in remote | |
56 servers are publicly available as well. | |
57 | |
58 | |
59 Guidelines | |
60 ---------- | |
61 | |
62 Over the years, it was observed that people fear the use of GPL and | |
63 AGPL licenses, that are wrongly considered as preventing commercial | |
64 uses. This is most often a wrong assumption, given that the Orthanc | |
65 server that is a standalone executable, not a software library. | |
66 | |
67 The following table provides a simple summary of the most common | |
68 situations, and indicates whether the use is accepted ("Yes"), | |
69 prevented ("No"), or restricted ("Dual licensing"): | |
70 | |
71 +-----------------------------------------------------+--------------------------------------------------------------------------------------------+ | |
72 | | Mode of distribution of the caller system or of the third-party plugin/script | | |
73 +-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+ | |
74 | Usage of the Orthanc ecosystem (callee) | Permissive | GPLv3 | AGPLv3 | Internal use | Proprietary software | Proprietary cloud | | |
75 | | (MIT, BSD...) | | | | distributed to clients | platform | | |
76 +=====================================================+===============+=======+========+==============+========================+===================+ | |
77 | Using Orthanc as such, even if some AGPL-licensed | N/A | N/A | N/A | Yes | Yes | Yes | | |
78 | plugin is installed | | | | | | | | |
79 +-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+ | |
80 | Calling Orthanc from a third-party application | Yes | Yes | Yes | Yes | Yes | Yes | | |
81 | (using REST API or DICOM protocol), even if some | | | | | | | | |
82 | AGPL-licensed plugin is installed | | | | | | | | |
83 +-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+ | |
84 | Creating an Orthanc plugin or a Lua script, that | No | Yes | Yes | Yes | Dual licensing | Yes | | |
85 | is hosted by an Orthanc server where no | | | | | | | | |
86 | AGPL-licensed plugin is installed | | | | | | | | |
87 +-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+ | |
88 | Creating an Orthanc plugin or a Lua script, that | No | Yes | Yes | Yes | Dual licensing | Dual licensing | | |
89 | is hosted by an Orthanc server where some | | | | | | | | |
90 | AGPL-licensed plugin is installed | | | | | | | | |
91 +-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+ | |
92 | Reusing code from the Orthanc code (GPL) or from | No | Yes | Yes | Yes | Dual licensing | Yes | | |
93 | an official Orthanc plugin that is released under | | | | | | | | |
94 | the GPL license | | | | | | | | |
95 +-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+ | |
96 | Reusing code from an Orthanc plugin that licensed | No | No | Yes | Yes | Dual licensing | Dual licensing | | |
97 | under the AGPL license | | | | | | | | |
98 +-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+ | |
99 | Using the :ref:`Stone of Orthanc <stone>` library | No | No | Yes | Yes | Dual licensing | Dual licensing | | |
100 +-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+ | |
101 | |
102 If your use case falls in some "**Dual licensing**" cell, please get | |
103 in touch with `Osimis <http://osimis.io/>`__, the official commercial | |
104 partner of the Orthanc project that is the only entity able to sell a | |
105 `license exception | |
106 <https://www.fsf.org/blogs/rms/selling-exceptions>`__ to your company. | |
107 | |
108 Also, if you are dealing with medical applications in Europe, note | |
109 that Osimis sells **CE-approved** versions of a Web viewer plugin. | |
110 | |
111 | |
112 .. _cla: | |
113 | |
114 Contributing to the code of Orthanc | |
115 ----------------------------------- | |
116 | |
117 Third-party vs. internal code | |
118 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
119 | |
120 It is important to make the distinction between third-party code | |
121 and internal code: | |
122 | |
123 * **Third-party code** refers to source code that takes advantage of | |
124 Orthanc and/or that extends Orthanc, such as new :ref:`plugins | |
125 <plugins>`, :ref:`Lua scripts <lua>`, or any higher-level | |
126 application that uses the :ref:`REST API <rest>` of Orthanc. This | |
127 code can live outside of the official source repositories of the | |
128 Orthanc ecosystem. The third-party contributors can distribute such | |
129 code on whatever platform they prefer, in a way that is fully | |
130 uncoupled from the Orthanc project, and keep the intellectual | |
131 property of their developments. Such contributors are however kindly | |
132 invited to index their contributions in the `dedicated repository on | |
133 GitHub <https://github.com/jodogne/OrthancContributed>`__. | |
134 | |
135 * **Internal code** refers to source code that only makes sense if | |
136 embedded within the Orthanc core or within one of the official | |
137 plugins. This includes new features and bugfixes. The way to | |
138 contribute to the internal code of the Orthanc ecosystem is | |
139 described in the sections below. | |
140 | |
141 | |
142 | |
143 Contributor License Agreement | |
144 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
145 | |
146 It is necessary for the Orthanc project to make sure that the internal | |
147 code of Orthanc can be interfaced with proprietary systems, as those | |
148 are still unfortunately everywhere in the healthcare market. This | |
149 forces us to require all the intellectual property over the source | |
150 code of Orthanc to be centralized, with the University Hospital of | |
151 Liège together with the Osimis company acting as the official | |
152 guardians of the whole Orthanc ecosystem. This centralization also | |
153 enables the dual licensing scheme described above, which in turn | |
154 allows Osimis to collect money from the industry in order to fund | |
155 further free and open-source development of the Orthanc ecosystem to | |
156 the benefit of the worldwide community of medical imaging, according | |
157 to a virtuous cycle. | |
158 | |
159 As a consequence, before any code can be accepted into the official | |
160 repositories of Orthanc, the individual code contributors must sign a | |
161 `Contributor License Agreement (CLA) | |
162 <https://en.wikipedia.org/wiki/Contributor_License_Agreement>`__. Here | |
163 is the procedure: | |
164 | |
165 1. Download the individual CLA (ICLA) form from the `Orthanc homepage | |
166 <https://www.orthanc-server.com/resources/2019-02-12-IndividualContributorLicenseAgreementOrthanc.pdf>`__. | |
167 | |
168 2. Print the document, then write down your signed initials on pages 1 | |
169 and 2, and sign page 3. | |
170 | |
171 3. Return a scanned copy of the document to e-mail ``orthanc-legal@osimis.io``. | |
172 | |
173 4. Wait for confirmation from the Osimis company. | |
174 | |
175 **Important:** This form is only valid for individual contributors | |
176 acting as physical persons. If your company wishes to become | |
177 contributor, please request a Corporate CLA at the same e-mail | |
178 address: ``orthanc-legal@osimis.io``. | |
179 | |
180 | |
181 Submitting code | |
182 ^^^^^^^^^^^^^^^ | |
183 | |
184 Once the CLA onboarding process has succeeded, use `Mercurial | |
185 <https://en.wikipedia.org/wiki/Mercurial>`__ to fork the official | |
186 repository of interest from BitBucket. Here are the location of those | |
187 repositories: | |
188 | |
189 * The `Orthanc server <https://bitbucket.org/sjodogne/orthanc/src>`__. | |
190 | |
191 * The `official plugins <https://bitbucket.org/sjodogne/>`__ originating from the University Hospital of Liège. | |
192 | |
193 * The `official plugins <https://bitbucket.org/osimis/>`__ originating from Osimis. | |
194 | |
195 Once you have finished modifying the code in your forked repository, | |
196 issue a `pull request | |
197 <https://confluence.atlassian.com/bitbucket/tutorial-learn-about-bitbucket-pull-requests-774243385.html>`__. | |
198 | |
199 **Some words of warning:** | |
200 | |
201 * Please stick to the :ref:`coding style <coding-style>` of Orthanc. | |
202 | |
203 * It is your responsibility to make sure that you have the | |
204 intellectual property over all the source code you commit into | |
205 Orthanc. | |
206 | |
207 * All the contributions will be carefully reviewed. Some contributions | |
208 may be modified, yet even rejected. A rejection might for instance | |
209 occur if your contribution does not match the Orthanc roadmap, does | |
210 not meet our high-quality code standards, or breaks backward | |
211 compatibility. Please be sure that we warmly welcome contributions, | |
212 but that we are quite strict. | |
213 | |
214 * In the case of a doubt wrt. a potential contribution, please discuss | |
215 it on the `Orthanc Users | |
216 <https://groups.google.com/forum/#!forum/orthanc-users>`__ | |
217 discussion group before starting the actual development. |