annotate Sphinx/source/faq/licensing.rst @ 278:9bf644571511

fix doc wrt recycling order
author amazy
date Mon, 09 Sep 2019 12:34:27 +0200
parents 76c76af97a2a
children 0122c668f4ec
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1 .. _licensing:
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
3
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
4 Licensing of the Orthanc ecosystem
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
5 ==================================
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
6
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
7 .. contents::
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
8
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
9
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
10 Philosophy
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
11 ----------
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
12
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
13 The objectives of the Orthanc ecosystem is to share technical
201
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
14 knowledge about :ref:`DICOM <dicom-guide>`, to build a consistent
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
15 platform for developing medical imaging software, and to foster
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
16 scientific collaborations in medical imaging by subscribing to the
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
17 `open-science paradigm
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
18 <https://en.wikipedia.org/wiki/Open_science>`__. To this end, Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
19 is provided as free and open-source software to the benefit of the
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
20 worldwide community of medical imaging.
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
21
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
22 In order to support this objective of global knowledge sharing, the
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
23 Orthanc project enforces reciprocity. If someone finds Orthanc useful
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
24 to her academic work or to her business, the community of medical
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
25 imaging should gain an advantage from this use by enlarging the
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
26 knowledge base. This virtuous circle guarantees the fact that Orthanc
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
27 will be developed in a sustainable way in the long-term, to the
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
28 benefit of all stakeholders. Predatory behaviors should be prevented,
201
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
29 while preserving the freedoms of the users of Orthanc, including the
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
30 commercial uses.
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
31
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
32 According to this philosophy, the University Hospital of Liège decided
201
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
33 to release the Orthanc ecosystem under the `GPLv3+ license
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
34 <https://www.gnu.org/licenses/gpl-3.0.en.html>`__ in 2012. The GPL is
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
35 a strong copyleft license that is recognized worldwide, and that is
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
36 designed to enforce reciprocity.
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
37
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
38 As Orthanc is lightweight and designed for Web applications and for
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
39 sharing medical images over Internet, it has been quickly deployed on
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
40 cloud platforms in order to host large amount of data. Orthanc
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
41 considers this use as very legitimate, for instance for scientific
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
42 purpose (think of open-data databases) or for societal needs (think of
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
43 teleradiology platforms in developing countries). Unfortunately, the
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
44 GPL does not protect from predatory commercial behaviors over cloud
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
45 platforms because of the so-called "`ASP loophole
201
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
46 <https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License>`__",
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
47 that does not enforce modified versions of a free and open-source
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
48 software running on a server to be given back to the community.
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
49
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
50 For this reason, the plugins that provide scalability-related or
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
51 cloud-related features (for instance the :ref:`PostgreSQL
201
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
52 <postgresql>` and :ref:`Web viewer <webviewer>` plugins that are
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
53 necessary for Web applications distributed at a large scale) were
201
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
54 released under the stronger `AGPLv3+ licence
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
55 <https://www.gnu.org/licenses/why-affero-gpl.en.html>`__.
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
56 This license protects the community of medical imaging by ensuring
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
57 that the features included in Orthanc instances running in remote
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
58 servers are publicly available as well.
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
59
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
60
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
61 Guidelines
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
62 ----------
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
63
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
64 Over the years, it was observed that people fear the use of GPL and
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
65 AGPL licenses, that are wrongly considered as preventing commercial
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
66 uses. This is most often a wrong assumption, given that the Orthanc
200
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 199
diff changeset
67 server is a standalone executable, not a software library.
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
68
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
69 The following table provides a simple summary of the most common
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
70 situations, and indicates whether the use is accepted ("Yes"),
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
71 prevented ("No"), or restricted ("Dual licensing"):
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
72
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
73 +-----------------------------------------------------+--------------------------------------------------------------------------------------------+
201
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
74 | | Mode of distribution of the third-party system, or of the third-party plugin/script |
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
75 +-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+
201
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
76 | Usage of the Orthanc ecosystem | Permissive | GPLv3 | AGPLv3 | Internal use | Proprietary software | Proprietary cloud |
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
77 | | (MIT, BSD, | | | | distributed to clients | platform |
203
b79ef7808f16 note about plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
78 | | Apache...) | | | | | |
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
79 +=====================================================+===============+=======+========+==============+========================+===================+
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
80 | Using Orthanc as such, even if some AGPL-licensed | N/A | N/A | N/A | Yes | Yes | Yes |
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
81 | plugin is installed | | | | | | |
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
82 +-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
83 | Calling Orthanc from a third-party application | Yes | Yes | Yes | Yes | Yes | Yes |
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
84 | (using REST API or DICOM protocol), even if some | | | | | | |
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
85 | AGPL-licensed plugin is installed | | | | | | |
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
86 +-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
87 | Creating an Orthanc plugin or a Lua script, that | No | Yes | Yes | Yes | Dual licensing | Yes |
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
88 | is hosted by an Orthanc server where no | | | | | | |
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
89 | AGPL-licensed plugin is installed | | | | | | |
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
90 +-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
91 | Creating an Orthanc plugin or a Lua script, that | No | Yes | Yes | Yes | Dual licensing | Dual licensing |
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
92 | is hosted by an Orthanc server where some | | | | | | |
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
93 | AGPL-licensed plugin is installed | | | | | | |
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
94 +-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+
202
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
95 | Using a modified version of the GPL-licensed | No | Yes | Yes | Yes | Dual licensing | Yes |
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
96 | code of Orthanc, or using a modified version of | | | | | | |
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
97 | some GPL-licensed plugin, or reusing their original | | | | | | |
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
98 | code in a third-party system | | | | | | |
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
99 +-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+
202
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
100 | Using a modified version of some AGPL-licensed | No | No | Yes | Yes | Dual licensing | Dual licensing |
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
101 | plugin, or reusing its original code in a | | | | | | |
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
102 | third-party system | | | | | | |
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
103 +-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
104 | Using the :ref:`Stone of Orthanc <stone>` library | No | No | Yes | Yes | Dual licensing | Dual licensing |
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
105 +-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
106
201
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
107 **Notes:**
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
108
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
109 * The wording "third-party system" is very broad, as it encompasses
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
110 many possibilities. It can for instance be a Web application, a
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
111 heavyweight desktop application, an automated script, or more
202
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
112 generally any system that takes advantage of Orthanc as a service in
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
113 its global architecture.
201
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
114
202
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
115 * If your use case falls in a "**Dual licensing**" cell, please get in
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
116 touch with `Osimis <http://osimis.io/>`__, the commercial partner of
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
117 the Orthanc project that is the only entity entitled to grant a
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
118 `license exception
201
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
119 <https://www.fsf.org/blogs/rms/selling-exceptions>`__ to your
202
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
120 company for the Orthanc core and its :ref:`associated official
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
121 plugins <plugins-official>`.
201
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
122
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
123 * If you reuse code from Orthanc or one of its associated plugins, you
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
124 must mention the copyright of the Orthanc project.
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
125
201
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
126 * An Orthanc plugin cannot be licensed under a permissive license
203
b79ef7808f16 note about plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
127 (MIT, BSD, Apache...) because it cannot run independently of the
b79ef7808f16 note about plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
128 Orthanc SDK, which implies that the plugin and the Orthanc core form
b79ef7808f16 note about plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
129 a single combined program, which in turn means that the plugin
b79ef7808f16 note about plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
130 should be licensed under GPLv3 by `copyleft
b79ef7808f16 note about plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
131 <https://en.wikipedia.org/wiki/Copyleft>`__ contamination. Check out
b79ef7808f16 note about plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
132 the `license compatibility matrix on Wikipedia
201
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
133 <https://en.wikipedia.org/wiki/License_compatibility#Compatibility_of_FOSS_licenses>`__.
203
b79ef7808f16 note about plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
134 Here is the corresponding entry about this topic in the `GPL FAQ
b79ef7808f16 note about plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
135 <https://www.gnu.org/licenses/gpl-faq.en.html#GPLPlugins>`__: *"If
b79ef7808f16 note about plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
136 the main program dynamically links plug-ins, and they make function
b79ef7808f16 note about plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
137 calls to each other and share data structures, we believe they form
b79ef7808f16 note about plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
138 a single combined program, which must be treated as an extension of
b79ef7808f16 note about plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
139 both the main program and the plug-ins. [...] If the main program
b79ef7808f16 note about plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
140 and the plugins are a single combined program then this means you
b79ef7808f16 note about plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
141 must license the plug-in under the GPL or a GPL-compatible free
b79ef7808f16 note about plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
142 software license and distribute it with source code in a
b79ef7808f16 note about plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
143 GPL-compliant way."*
201
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
144
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
145 * If you deal with medical applications in Europe, note that Osimis
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
146 sells **CE-approved** versions of a Web viewer plugin.
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
147
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
148 * You are kindly invited to cite the `reference paper about Orthanc
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
149 <https://link.springer.com/article/10.1007%2Fs10278-018-0082-y>`__
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
150 in your scientific work.
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 200
diff changeset
151
202
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
152 * This is our own simplified, technical interpretation of the GPLv3+
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
153 and AGPLv3+ in the very specific context of Orthanc. It is not
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
154 intended to be a complete guide to copyleft licensing. Please get in
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
155 touch with the `Free Software Foundation <https://www.fsf.org/>`__
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
156 for more legal information.
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
157
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
158
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
159 .. _cla:
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
160
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
161 Contributing to the code of Orthanc
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
162 -----------------------------------
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
163
202
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
164 Contributed vs. internal code
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
165 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
166
202
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
167 It is important to make the distinction between contributed code and
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
168 internal code:
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
169
202
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
170 * **Contributed code** refers to source code that takes advantage of
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
171 Orthanc and/or that extends Orthanc, such as new :ref:`plugins
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
172 <plugins>`, :ref:`Lua scripts <lua>`, or any higher-level
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
173 application that uses the :ref:`REST API <rest>` of Orthanc. This
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
174 code can live outside of the official source repositories of the
202
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
175 Orthanc ecosystem. External contributors can distribute such
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
176 contributed code on whatever platform they prefer, in a way that is
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
177 fully uncoupled from the Orthanc project, and keep the intellectual
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
178 property of their developments. Such contributors are however kindly
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
179 invited to index their contributions in the `dedicated repository on
203
b79ef7808f16 note about plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
180 GitHub <https://github.com/jodogne/OrthancContributed>`__, and
b79ef7808f16 note about plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
181 contributed plugins should also be indexed in the :ref:`Orthanc Book
b79ef7808f16 note about plugins
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 202
diff changeset
182 <plugins-contributed>`.
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
183
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
184 * **Internal code** refers to source code that only makes sense if
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
185 embedded within the Orthanc core or within one of the official
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
186 plugins. This includes new features and bugfixes. The way to
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
187 contribute to the internal code of the Orthanc ecosystem is
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
188 described in the sections below.
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
189
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
190
204
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
191 **Important:** You should always favor the :ref:`creation of a new
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
192 plugin <creating-plugins>` over modifications to the internal code
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
193 (see below)!
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
194
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
195
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
196
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
197 Contributor License Agreement
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
198 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
200 It is necessary for the Orthanc project to make sure that the internal
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
201 code of Orthanc can be interfaced with proprietary systems, as those
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
202 are still unfortunately everywhere in the healthcare market. This
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
203 forces us to require all the intellectual property over the source
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
204 code of Orthanc to be centralized, with the University Hospital of
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
205 Liège together with the Osimis company acting as the official
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
206 guardians of the whole Orthanc ecosystem. This centralization also
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
207 enables the dual licensing scheme described above, which in turn
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
208 allows Osimis to collect money from the industry in order to fund
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
209 further free and open-source development of the Orthanc ecosystem to
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
210 the benefit of the worldwide community of medical imaging, according
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
211 to a virtuous cycle.
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
212
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
213 As a consequence, before any code can be accepted into the official
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
214 repositories of Orthanc, the individual code contributors must sign a
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
215 `Contributor License Agreement (CLA)
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
216 <https://en.wikipedia.org/wiki/Contributor_License_Agreement>`__. Here
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
217 is the procedure:
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
218
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
219 1. Download the individual CLA (ICLA) form from the `Orthanc homepage
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
220 <https://www.orthanc-server.com/resources/2019-02-12-IndividualContributorLicenseAgreementOrthanc.pdf>`__.
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
221
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
222 2. Print the document, then write down your signed initials on pages 1
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
223 and 2, and sign page 3.
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
224
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
225 3. Return a scanned copy of the document to e-mail ``orthanc-legal@osimis.io``.
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
226
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
227 4. Wait for confirmation from the Osimis company.
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
228
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
229 **Important:** This form is only valid for individual contributors
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
230 acting as physical persons. If your company wishes to become
202
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
231 contributor as a juridical person, please request a Corporate CLA at
1e9cb6e1afb0 rephrasing
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 201
diff changeset
232 the same e-mail address: ``orthanc-legal@osimis.io``.
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
233
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
234
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
235 Submitting code
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
236 ^^^^^^^^^^^^^^^
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
237
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
238 Once the CLA onboarding process has succeeded, use `Mercurial
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
239 <https://en.wikipedia.org/wiki/Mercurial>`__ to fork the official
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
240 repository of interest from BitBucket. Here are the location of those
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
241 repositories:
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
242
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
243 * The `Orthanc server <https://bitbucket.org/sjodogne/orthanc/src>`__.
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
244
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
245 * The `official plugins <https://bitbucket.org/sjodogne/>`__ originating from the University Hospital of Liège.
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
246
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
247 * The `official plugins <https://bitbucket.org/osimis/>`__ originating from Osimis.
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
248
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
249 Once you have finished modifying the code in your forked repository,
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
250 issue a `pull request
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
251 <https://confluence.atlassian.com/bitbucket/tutorial-learn-about-bitbucket-pull-requests-774243385.html>`__.
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
252
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
253 **Some words of warning:**
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
254
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
255 * Please stick to the :ref:`coding style <coding-style>` of Orthanc.
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
256
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
257 * It is your responsibility to make sure that you have the
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
258 intellectual property over all the source code you commit into
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
259 Orthanc.
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
260
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
261 * All the contributions will be carefully reviewed. Some contributions
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
262 may be modified, yet even rejected. A rejection might for instance
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
263 occur if your contribution does not match the Orthanc roadmap, does
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
264 not meet our high-quality code standards, or breaks backward
200
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 199
diff changeset
265 compatibility. Please be sure that we warmly welcome and appreciate
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 199
diff changeset
266 your contributions, but be aware of the fact that we are quite
204
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
267 strict, and that the review process might take time. This is why the
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
268 recommended way of contributing to Orthanc is always by
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
269 :ref:`creating contributed plugins <creating-plugins>`.
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
270
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
271 * Your pull requests should be kept **as small as possible**, and
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
272 should be focused on one very specific issue or feature. Large
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
273 architectural changes are reserved for the core development team of
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
274 Orthanc, as we must follow our `long-term roadmap
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
275 <https://bitbucket.org/sjodogne/orthanc/src/default/TODO>`__.
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
276
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
277 * Unit testing is mandatory. Integration tests should be submitted to
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
278 the `dedicated repository
Sebastien Jodogne <s.jodogne@gmail.com>
parents: 203
diff changeset
279 <http://bitbucket.org/sjodogne/orthanc-tests/>`__.
199
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
280
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
281 * In the case of a doubt wrt. a potential contribution, please discuss
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
282 it on the `Orthanc Users
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
283 <https://groups.google.com/forum/#!forum/orthanc-users>`__
3fd71c385391 cla and licensing
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
284 discussion group before starting the actual development.