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.