MeshBay interface — additional permission for group applications
under GNU AGPL version 3, section 7
==============================================================================

The MeshBay interface is free software under the GNU Affero General Public
License, version 3 or (at your option) any later version (AGPL-3.0.txt, beside
this file), with the following additional permission. Its protocol layer, the
files marked SPDX-License-Identifier: LGPL-3.0-or-later, is under the GNU
Lesser GPL instead and needs no such permission.

Definitions

  "The Interface" is the MeshBay web interface: the files of
  packages/meshbay-hub/src/meshbay_hub/static/ that are under the AGPL,
  wherever they are conveyed — served by a hub, or carried by the desktop or
  the Android application.

  "The Application Interface" is:
    1. the properties the Interface passes to a group application's component
       and to its settings pane, and the fields of an entry in its application
       registry (apps.js), as docs/MESHBAY_DESIGN.md sections 9.2 to 9.4
       describe them;
    2. the names exported by these modules of the Interface:
         i18n.js
         icon.js
         file-utils.js
         settings-ui.js
         folder-tree.js
    3. the CSS class names style.css defines, and the message keys of the
       catalogues under locales/.

  "An Application" is a module, or a set of modules, that the Interface loads
  as a group application and that interacts with the Interface only through
  the Application Interface. It may also use the protocol layer and the
  third-party files under vendor/, each under its own licence. It contains no
  part of the Interface itself, copied or modified.

Permission

  As a special exception, the copyright holders of the Interface give you
  permission to combine an Application with the Interface, and to convey the
  resulting combination, with the Application under terms of your choice,
  provided that the Interface itself — including any modification of it, of
  which registering the Application in apps.js or adding its messages to the
  catalogues is one — remains under the GNU AGPL with this permission, and
  that you meet the AGPL's terms for it, section 13 included. An Application
  does not become a work based on the Interface by using the Application
  Interface, and conveyed on its own carries no obligation from the
  Interface's licence.

  This permission covers the Interface only. The hub, the node and the
  desktop and Android shells keep their licence unchanged: code running there
  on an Application's behalf is a modification of them.

  If you modify the Interface, you may extend this permission to your version
  of it, but you are not obliged to do so. If you do not wish to, delete this
  permission from your version (section 7).

Why: the point of the application store is that people other than MeshBay's
authors write applications, under the licence they choose — free or not. An
application runs in the same page as the Interface and calls into it, which
without this permission would make it a work based on the Interface, under the
AGPL. The permission is limited to a named, documented surface so that what an
application may rely on is a deliberate commitment, not whatever happens to be
importable.
