==========================
Chapel License Information
==========================

The Chapel implementation is composed of two categories of code:

1) code that was specifically developed for, or contributed to, the
   Chapel project.  This code comprises the core of the Chapel
   implementation: the compiler, runtime, and standard/internal
   modules.  Code in this category is made available under the
   Apache v2.0 license, which can be found in 'LICENSE.chapel' in
   this directory or at http://www.apache.org/licenses/LICENSE-2.0.html.

2) code from other open-source projects that we package and
   redistribute for the convenience of end-users.  Packages in this
   category are made available under the terms of their original
   licenses, respectively.

   Packages in this second category are redistributed in the highlight/,
   third-party/ and tools/ directories.  The following table provides a summary
   of the packages, their uses, and their licenses.

   directory/package  use                                          license
   -----------------  -------------------------------------------  -------
   highlight/
     emacs            emacs-based syntax coloring                  GPL
     vim              vim-based syntax coloring                    VIM

   third-party/
     chpl-venv/       python packages supporting chpldoc, 'start_test',
                        `c2chapel`, CLS, `chapel-py`, `chplcheck`
       argcomplete    Tab completion of arguments                  Apache v2.0
       babel          Internationalization utilities               BSD
       breathe        Sphinx doxygen renderer                      BSD
       docutils       Python Documentation Utilities               public domain
                                                                   Python
                                                                   BSD
                                                                   GPL 3
       filelock       Platform independent file lock               Unlicense
       Jinja2         A template engine written in Python          BSD
       junitparser    Manipulate JUnit/xUnit result XML files      Apache v2.0
       MarkupSafe     XML/HTML/XHTML Markup safe string impl.      BSD
       pycparser      A C parser in Python                         BSD
       pycparserext   Extensions for pycparser                     MIT
       Pygments       A syntax highlighting package                BSD
       PyYAML         YAML parser and emitter for Python           MIT
       setuptools     Download, build, install, upgrade, and uninstall Python
                      packages                                     MIT
       Sphinx         Python documentation generator               BSD
       sphinxcontrib-chapeldomain
                      The Chapel language domain for Sphinx        Apache v2.0
       sphinx-rtd-theme
                      ReadTheDocs.org theme for Sphinx             MIT
       urllib3        HTTP client for Python                       MIT
     gasnet           portable communication library               BSD-like
     gmp              optional multi-precision math library        L-GPL
     hwloc            portable NUMA compute node utilities         new BSD
     jemalloc         alternative memory allocator                 BSD-like
     libfabric        portable networking library                  BSD
     libunwind        used for runtime stack tracing               MIT
     llvm             CLANG C parsing/optional back-end compiler   Apache 2.0
     mimalloc         alternative memory allocator                 MIT
     qthread          alternative lightweight tasking option       new BSD
     re2              optional regular expression parsing library  new BSD
     utf8-decoder     used for runtime UTF-8 string decoding       MIT
     whereami         for locating the _real binary in launchers   MIT

   tools/
     chapel-py/       Python packages supporting Chapel Python bindings and
                        programs that rely on it (i.e., `chplcheck` and CLS)
       attrs          Classes Without Boilerplate                  MIT
       cattrs         Composable complex class support for attrs and dataclasses
                                                                   MIT
       ConfigArgParse Allow setting options via config files       MIT
       exceptiongroup Backport of classes supported by Python 3.11 MIT
       lsprotocol     Python types for Language Server Protocol    MIT
       pygls          Pythonic generic language server             Apache v2.0
       PyYAML         see the PyYAML listing under chpl-venv, above
       toml           Tom's Obvious, Minimal Language              MIT
       typeguard      Run-time type checker for Python             MIT

   For a more complete introduction to these packages and their
   licensing terms, refer to highlight/README.md, third-party/README, and the
   README and license files in the subdirectories listed above.

   Note that not all of these packages are used by Chapel by default. The
   following table summarizes the conditions under which each package is used
   (see chplenv.rst for details on CHPL_* settings):

   directory/package  when used
   -----------------  ----------------------------------------------------
   highlight/
     emacs            only used if a user modifies their emacs environment
     vim              only used if a user modifies their vim environment

   third-party/
     chpl-venv        only used when running 'chpldoc', 'start_test', `c2chapel`
                        CLS, `chapel-py`, `chplcheck` or the developer-only
                        'chplspell'
     gasnet           only used when CHPL_COMM is 'gasnet'
     gmp              only used when CHPL_GMP is 'gmp'
     hwloc            only used when CHPL_HWLOC is 'hwloc'
     jemalloc         only used when CHPL_TARGET_MEM/CHPL_HOST_MEM is 'jemalloc'
     libfabric        only used when CHPL_COMM is 'ofi'
     libunwind        only used when CHPL_UNWIND is 'libunwind'
     llvm             only used when CHPL_LLVM is 'llvm'
     qthread          only used when CHPL_TASKS is 'qthreads'
     re2              only used when CHPL_RE2 is 'bundled'
     utf8-decoder     bundled into the Chapel runtime to decode UTF-8 strings
     whereami         used when starting a program with a launcher

   tools/
     chapel-py        only used when using the Chapel Python bindings or
                        programs that rely on it (i.e., `chplcheck` and CLS)

   For packages that are used based on a CHPL_* setting, note that this
   setting may either be explicitly or implicitly set. Additionally,
   some packages are only used if a speculative build was successful.
   See https://chapel-lang.org/docs/usingchapel/chplenv.html to
   see which packages are used by default and which ones are built
   speculatively. You can also check your CHPL_* settings by running
   $CHPL_HOME/util/printchplenv after Chapel has been built
