Home / Alt manpages / perlartistic(1)

  • perlartistic(1)
  • User command
  • linux

Read the Perl Artistic License Locally Before You Ship

You will use perldoc perlartistic to read the Artistic License installed with Perl, record which Perl version supplied it, and turn the licence text into a release checklist. Allow about 15 minutes for a first pass. This is a practical reading guide, not legal advice: if your distribution is unusual or commercial, have the final interpretation checked by the appropriate legal or compliance adviser.

1. Confirm the local Perl and documentation

The manual page is supplied by the perl-doc package. Check the interpreter and the documentation command without changing the system:

$ command -v perl
/usr/bin/perl
$ perl -v | sed -n '1,4p'
This is perl 5, version 38, subversion 2 (v5.38.2) built for x86_64-linux-gnu-thread-multi
(with 67 registered patches, see perl -V for more detail)
$ command -v perldoc
/usr/bin/perldoc
$ perldoc -l perlartistic
/usr/share/perl/5.38/pod/perlartistic.pod

The exact path and patch count depend on the installed package. The local manual is the source to use when you need to know what this machine can display. The Perl 5.38.2 manual identifies perlartistic as the Perl Artistic License and gives perldoc perlartistic as its normal entry point.

Checkpoint: you can open the licence

Run the short form first. It prints the full document in the terminal, or sends it through your configured pager when one is available:

$ perldoc perlartistic

If this reports that the page cannot be found, do not copy a licence from an arbitrary web page into your release. Check that perl-doc is installed through your normal package manager, then rerun the command. Installation may require elevated privileges, but reading the page does not.

2. Establish which licence choice applies

The document describes Perl as distributable under either the GNU General Public License, version 1 or any later version at the recipient's option, or the Artistic License that comes with Perl. This page is specifically the Artistic License text. It is not a command that changes the licence of your project, and running perldoc does not add licence metadata to a package.

For a project that contains Perl itself, or code copied from a Perl distribution, first identify the exact files and notices involved. Do not assume that every Perl module, script or bundled dependency has the same terms. Read each dependency's included licence and preserve its copyright notices and disclaimers.

3. Match your source release to the conditions

The Artistic License defines a Package as the distributed collection of files and a Standard Version as an unmodified package, or one modified in the ways the licence allows. Use that vocabulary when reviewing your release:

  1. For a verbatim source copy, retain the original copyright notices and associated disclaimers.
  2. For bug fixes, portability fixes or changes derived from the public domain or copyright holder, record the source of the change and keep the relevant notices.
  3. For other modifications, add a prominent notice to each changed file stating how and when it was changed. Then choose one permitted route: make the changes freely available, keep the modified package within your organisation, rename non-standard executables and document their differences, or make another arrangement with the copyright holder.

That last step is easy to miss. A private fork and a public redistribution are not the same release situation. Keep a small change log alongside your source so you can show which files changed, when, and which condition you relied on.

4. Check an executable or binary release

If you distribute programs in object code or executable form, the licence lists several ways to satisfy the source-related condition. A release can include a Standard Version and instructions for obtaining it, the machine-readable source with your modifications, non-standard names with clear documentation and instructions for obtaining the Standard Version, or another arrangement with the copyright holder.

Inspect the actual artefact rather than only the source repository. Check the archive, installer, container image or embedded interpreter for notices and a clear route to the corresponding source. If a build renames a program, make sure the documentation says what differs from the Standard Version. Do not describe a modified executable as the Standard Version.

$ tar -tf release.tar.gz | grep -E '(^|/)(COPYING|LICENSE|NOTICE|README)(\.|$)'
$ tar -xOf release.tar.gz RELEASE-NOTES.txt | sed -n '1,80p'

Replace release.tar.gz and RELEASE-NOTES.txt with paths that exist in your release. These commands only inspect an archive. Do not extract an untrusted archive into a directory containing working files.

5. Separate bundled code from your own code

The manual says that scripts and library files supplied as input to, or produced as output from, Perl programs do not automatically become part of the Perl package. They belong to whoever generated them and may be sold or aggregated, subject to the facts of the particular distribution. C subroutines linked in to emulate Perl features are treated similarly when they do not change the language in a way that makes its regression tests fail.

Use that distinction as a review prompt, not as a blanket exemption. List the Perl interpreter, copied Perl files, third-party modules, generated application files and native extensions separately. Attach the licence notice that actually applies to each group. If you combine Perl with a commercial distribution while keeping its interfaces hidden from end users, the manual describes that as permitted embedded aggregation, but a different presentation may require a different analysis.

6. Record the boundaries before publishing

The Artistic License permits a reasonable copying fee for distribution and any fee for support, but not a fee for the package itself. It permits aggregation with other, including commercial, programs when the package is not advertised as your own product. It also restricts use of the copyright holder's name for endorsement or promotion without specific written permission.

Finally, the package is provided without express or implied warranties. Keep the complete warranty wording with the licence notices. Do not remove it from a source or binary release because it looks like boilerplate.

Done means

  • perldoc perlartistic opens the installed licence, and you recorded the local Perl version.
  • You know whether your release is a source copy, a modified package, an executable distribution or embedded aggregation.
  • Changed files have prominent change notices where the licence requires them.
  • Your source, binary artefact and documentation preserve the applicable notices and a route to the Standard Version or source.
  • You reviewed bundled dependencies separately and have not presented a modified package as the Standard Version.