Given the above, it is possible that SWI-Prolog packages and extensions will rely on the GPL. (81) The predicates below allow for registering license requirements for Prolog files and foreign modules. The predicate eval_license/0 reports which components from the currenly configured system are distributed under copy-left and open source enforcing licenses (the GPL) and therefore must be replaced before distributing linked applications under non-free license conditions.
GPL
license as well as which components prohibit
the use of other license conditions.
As a special exception, if you link this library with other files, compiled with SWI-Prolog, to produce an executable, this library does not by itself cause the resulting executable to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the executable file might be covered by the GNU General Public License.
This should be the default for software contributed to the SWI-Prolog project as it allows the community to prosper both in the free and non-free world. Still, people using SWI-Prolog to create non-free applications must contribute sources to improvements they make to the community.
Other licenses known to the system are guile
, gnu_ada
,
x11
, expat
, sml
, public_domain
,
cryptix
, bsd
, zlib
, constlgpl_compatible
and gpl_compatible
. New licenses can be defined by adding
clauses for the multifile predicate license:license/3.
Below is an example. The second argument is either gpl
or lgpl
to indicate compatibility to these licenses. Other values cause the
license to interpreted as proprietary. Proprietary licenses are
reported by eval_license/0.
See the file boot/license.pl
for details.
:- multifile license:license/3. license:license(mylicense, lgpl, [ comment('My personal license'), url('http://www.mine.org/license.html') ]). :- license(mylicense). |