# HG changeset patch # User Sebastien Jodogne # Date 1549975640 -3600 # Node ID 3fd71c38539174734469ffc3d6626a3e44b20e8c # Parent d50b794434c3d168a64f4523378f7af030ab7e17 cla and licensing diff -r d50b794434c3 -r 3fd71c385391 Sphinx/source/faq.rst --- a/Sphinx/source/faq.rst Mon Feb 11 07:19:58 2019 +0100 +++ b/Sphinx/source/faq.rst Tue Feb 12 13:47:20 2019 +0100 @@ -9,6 +9,7 @@ .. toctree:: :maxdepth: 1 + faq/licensing.rst faq/troubleshooting.rst faq/dicom.rst faq/query-retrieve.rst diff -r d50b794434c3 -r 3fd71c385391 Sphinx/source/faq/licensing.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Sphinx/source/faq/licensing.rst Tue Feb 12 13:47:20 2019 +0100 @@ -0,0 +1,217 @@ +.. _licensing: + + +Licensing of the Orthanc ecosystem +================================== + +.. contents:: + + +Philosophy +---------- + +The objectives of the Orthanc ecosystem is to share technical +knowledge about :ref:`DICOM `, and to foster scientific +collaborations in medical imaging by subscribing to the `open-science +paradigm `__. To this end, +Orthanc is provided as free and open-source software to the benefit of +the worldwide community of medical imaging. + +In order to support this objective of global knowledge sharing, the +Orthanc project enforces reciprocity. If someone finds Orthanc useful +to her academic work or to her business, the community of medical +imaging should gain an advantage from this use by enlarging the +knowledge base. This virtuous circle guarantees the fact that Orthanc +will be developed in a sustainable way in the long-term, to the +benefit of all stakeholders. Predatory behaviors should be prevented, +while preserving the freedoms of the users of Orthanc, including for +commercial uses. + +According to this philosophy, the University Hospital of Liège decided +to release the Orthanc ecosystem under the `GPL license +`__ +in 2012. The GPL is a strong copyleft license that is recognized +worldwide, and that is designed to enforce reciprocity. + +As Orthanc is lightweight and designed for Web applications and for +sharing medical images over Internet, it has been quickly deployed on +cloud platforms in order to host large amount of data. Orthanc +considers this use as very legitimate, for instance for scientific +purpose (think of open-data databases) or for societal needs (think of +teleradiology platforms in developing countries). Unfortunately, the +GPL does not protect from predatory commercial behaviors over cloud +platforms because of the so-called "`ASP loophole +`__", that +does not enforce modified versions of a free and open-source software +running on a server to be given back to the community. + +For this reason, the plugins that provide scalability-related or +cloud-related features (for instance the :ref:`PostgreSQL +` and :ref:`Web viewer ` plugins that are +necessary for Web applications distributed at a large scale) were +released under the stronger `AGPL licence +`__. +This license protects the community of medical imaging by ensuring +that the features included in Orthanc instances running in remote +servers are publicly available as well. + + +Guidelines +---------- + +Over the years, it was observed that people fear the use of GPL and +AGPL licenses, that are wrongly considered as preventing commercial +uses. This is most often a wrong assumption, given that the Orthanc +server that is a standalone executable, not a software library. + +The following table provides a simple summary of the most common +situations, and indicates whether the use is accepted ("Yes"), +prevented ("No"), or restricted ("Dual licensing"): + ++-----------------------------------------------------+--------------------------------------------------------------------------------------------+ +| | Mode of distribution of the caller system or of the third-party plugin/script | ++-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+ +| Usage of the Orthanc ecosystem (callee) | Permissive | GPLv3 | AGPLv3 | Internal use | Proprietary software | Proprietary cloud | +| | (MIT, BSD...) | | | | distributed to clients | platform | ++=====================================================+===============+=======+========+==============+========================+===================+ +| Using Orthanc as such, even if some AGPL-licensed | N/A | N/A | N/A | Yes | Yes | Yes | +| plugin is installed | | | | | | | ++-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+ +| Calling Orthanc from a third-party application | Yes | Yes | Yes | Yes | Yes | Yes | +| (using REST API or DICOM protocol), even if some | | | | | | | +| AGPL-licensed plugin is installed | | | | | | | ++-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+ +| Creating an Orthanc plugin or a Lua script, that | No | Yes | Yes | Yes | Dual licensing | Yes | +| is hosted by an Orthanc server where no | | | | | | | +| AGPL-licensed plugin is installed | | | | | | | ++-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+ +| Creating an Orthanc plugin or a Lua script, that | No | Yes | Yes | Yes | Dual licensing | Dual licensing | +| is hosted by an Orthanc server where some | | | | | | | +| AGPL-licensed plugin is installed | | | | | | | ++-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+ +| Reusing code from the Orthanc code (GPL) or from | No | Yes | Yes | Yes | Dual licensing | Yes | +| an official Orthanc plugin that is released under | | | | | | | +| the GPL license | | | | | | | ++-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+ +| Reusing code from an Orthanc plugin that licensed | No | No | Yes | Yes | Dual licensing | Dual licensing | +| under the AGPL license | | | | | | | ++-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+ +| Using the :ref:`Stone of Orthanc ` library | No | No | Yes | Yes | Dual licensing | Dual licensing | ++-----------------------------------------------------+---------------+-------+--------+--------------+------------------------+-------------------+ + +If your use case falls in some "**Dual licensing**" cell, please get +in touch with `Osimis `__, the official commercial +partner of the Orthanc project that is the only entity able to sell a +`license exception +`__ to your company. + +Also, if you are dealing with medical applications in Europe, note +that Osimis sells **CE-approved** versions of a Web viewer plugin. + + +.. _cla: + +Contributing to the code of Orthanc +----------------------------------- + +Third-party vs. internal code +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +It is important to make the distinction between third-party code +and internal code: + +* **Third-party code** refers to source code that takes advantage of + Orthanc and/or that extends Orthanc, such as new :ref:`plugins + `, :ref:`Lua scripts `, or any higher-level + application that uses the :ref:`REST API ` of Orthanc. This + code can live outside of the official source repositories of the + Orthanc ecosystem. The third-party contributors can distribute such + code on whatever platform they prefer, in a way that is fully + uncoupled from the Orthanc project, and keep the intellectual + property of their developments. Such contributors are however kindly + invited to index their contributions in the `dedicated repository on + GitHub `__. + +* **Internal code** refers to source code that only makes sense if + embedded within the Orthanc core or within one of the official + plugins. This includes new features and bugfixes. The way to + contribute to the internal code of the Orthanc ecosystem is + described in the sections below. + + + +Contributor License Agreement +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +It is necessary for the Orthanc project to make sure that the internal +code of Orthanc can be interfaced with proprietary systems, as those +are still unfortunately everywhere in the healthcare market. This +forces us to require all the intellectual property over the source +code of Orthanc to be centralized, with the University Hospital of +Liège together with the Osimis company acting as the official +guardians of the whole Orthanc ecosystem. This centralization also +enables the dual licensing scheme described above, which in turn +allows Osimis to collect money from the industry in order to fund +further free and open-source development of the Orthanc ecosystem to +the benefit of the worldwide community of medical imaging, according +to a virtuous cycle. + +As a consequence, before any code can be accepted into the official +repositories of Orthanc, the individual code contributors must sign a +`Contributor License Agreement (CLA) +`__. Here +is the procedure: + +1. Download the individual CLA (ICLA) form from the `Orthanc homepage + `__. + +2. Print the document, then write down your signed initials on pages 1 + and 2, and sign page 3. + +3. Return a scanned copy of the document to e-mail ``orthanc-legal@osimis.io``. + +4. Wait for confirmation from the Osimis company. + +**Important:** This form is only valid for individual contributors +acting as physical persons. If your company wishes to become +contributor, please request a Corporate CLA at the same e-mail +address: ``orthanc-legal@osimis.io``. + + +Submitting code +^^^^^^^^^^^^^^^ + +Once the CLA onboarding process has succeeded, use `Mercurial +`__ to fork the official +repository of interest from BitBucket. Here are the location of those +repositories: + +* The `Orthanc server `__. + +* The `official plugins `__ originating from the University Hospital of Liège. + +* The `official plugins `__ originating from Osimis. + +Once you have finished modifying the code in your forked repository, +issue a `pull request +`__. + +**Some words of warning:** + +* Please stick to the :ref:`coding style ` of Orthanc. + +* It is your responsibility to make sure that you have the + intellectual property over all the source code you commit into + Orthanc. + +* All the contributions will be carefully reviewed. Some contributions + may be modified, yet even rejected. A rejection might for instance + occur if your contribution does not match the Orthanc roadmap, does + not meet our high-quality code standards, or breaks backward + compatibility. Please be sure that we warmly welcome contributions, + but that we are quite strict. + +* In the case of a doubt wrt. a potential contribution, please discuss + it on the `Orthanc Users + `__ + discussion group before starting the actual development.