Mercurial > hg > orthanc-book
changeset 199:3fd71c385391
cla and licensing
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 12 Feb 2019 13:47:20 +0100 |
parents | d50b794434c3 |
children | 3931f1a721dc |
files | Sphinx/source/faq.rst Sphinx/source/faq/licensing.rst |
diffstat | 2 files changed, 218 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- /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 <dicom-guide>`, and to foster scientific +collaborations in medical imaging by subscribing to the `open-science +paradigm <https://en.wikipedia.org/wiki/Open_science>`__. 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 +<https://en.wikipedia.org/wiki/GNU_General_Public_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 +<https://en.wikipedia.org/wiki/Application_service_provider>`__", 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 +<postgresql>` and :ref:`Web viewer <postgresql>` plugins that are +necessary for Web applications distributed at a large scale) were +released under the stronger `AGPL licence +<https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License>`__. +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 <stone>` 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 <http://osimis.io/>`__, the official commercial +partner of the Orthanc project that is the only entity able to sell a +`license exception +<https://www.fsf.org/blogs/rms/selling-exceptions>`__ 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 + <plugins>`, :ref:`Lua scripts <lua>`, or any higher-level + application that uses the :ref:`REST API <rest>` 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 <https://github.com/jodogne/OrthancContributed>`__. + +* **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) +<https://en.wikipedia.org/wiki/Contributor_License_Agreement>`__. Here +is the procedure: + +1. Download the individual CLA (ICLA) form from the `Orthanc homepage + <https://www.orthanc-server.com/resources/2019-02-12-IndividualContributorLicenseAgreementOrthanc.pdf>`__. + +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 +<https://en.wikipedia.org/wiki/Mercurial>`__ to fork the official +repository of interest from BitBucket. Here are the location of those +repositories: + +* The `Orthanc server <https://bitbucket.org/sjodogne/orthanc/src>`__. + +* The `official plugins <https://bitbucket.org/sjodogne/>`__ originating from the University Hospital of Liège. + +* The `official plugins <https://bitbucket.org/osimis/>`__ originating from Osimis. + +Once you have finished modifying the code in your forked repository, +issue a `pull request +<https://confluence.atlassian.com/bitbucket/tutorial-learn-about-bitbucket-pull-requests-774243385.html>`__. + +**Some words of warning:** + +* Please stick to the :ref:`coding style <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 + <https://groups.google.com/forum/#!forum/orthanc-users>`__ + discussion group before starting the actual development.