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.
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)
The current generated header carries no license notice at all:
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:
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.