Skip to content

Generated bash inherit LGPL obligations from the embedded stdlib #1165

Description

@zlfn

Summary

Amber is licensed under LGPL-3.0, and the compiled Bash output inlines Amber's standard library functions directly. This makes every generated script a Combined Work under the LGPL, so anyone distributing an Amber-compiled script inherits the LGPL's notice and source-availability obligations.

Why it happens

The stdlib is not referenced at runtime, it is copied into the output at compile time. These are derivative works of Amber's LGPL stdlib.

To distribute the output in compliance, the distributor must: (LGPL §4, Combined Works)

  • §4(a) - give prominent notice that Amber's library is used and is LGPL-covered
  • §4(b) - accompany the work with copies of the GPL and LGPL texts
  • §4(d)(0) - make the corresponding source available (the Amber stdlib version used, plus the application sources) so a recipient can rebuild with a modified library

The current generated header carries no license notice at all:

#!/usr/bin/env bash
# Written in [Amber](https://amber-lang.com/)
# version: 0.6.0-alpha

So a script distributed as-is is, strictly speaking, non-compliant.

Request

Absent an exception, every generated file would need a header along these lines, and the distribution would need to ship the ~800 lines of GPL and LGPL license text:

#!/usr/bin/env bash
#
# Compiled with Amber (https://github.com/amber-lang/amber) and contains
# portions of Amber's standard library, licensed under LGPL-3.0.
# Amber source: https://github.com/amber-lang/amber  (0.6.0-alpha)
#
# Per LGPL-3.0 §4(b), the GNU GPL and LGPL texts are reproduced below.
#
# GNU GENERAL PUBLIC LICENSE, Version 3
#
#                     GNU GENERAL PUBLIC LICENSE
#                        Version 3, 29 June 2007
#  Copyright (C) 2007 Free Software Foundation, Inc.
#  ...
#
# GNU LESSER GENERAL PUBLIC LICENSE, Version 3
#
#                    GNU LESSER GENERAL PUBLIC LICENSE
#                        Version 3, 29 June 2007
#  ...

But compilers under copyleft licenses usually avoid pushing their license onto emitted code by adding an output exception (e.g. GCC's Runtime Library Exception and LLVM's LLVM Exception)

I think Amber should adopt a similar exception so that generated scripts are not themselves covered by the LGPL.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions