Hello Jookia,
Independent modules (things equivalent to userspace programs in Linux I guess)
Linux has a special preamble to the GPLv2 that defines the kernel interface as a license boundary [1].
[1] https://www.kernel.org/pub/linux/kernel/COPYING
Why does the AGPL not apply to the integration code if it uses Genode libraries?
I think we agree that it should not. More generally, it is not our intention to force-feed the AGPLv3 or any other particular license to Genode-component developers. The choice of the open-source license of a component should be up to the component's developer.
The original version of our linking exception clause is somewhat lacking in this respect. It defines an "independent module" as:
"a module which is not derived from or based on Genode."
This wrongly implies that a component that merely uses the Genode API is not an "independent module". To better express our intention, an "independent module" may better be defined as:
"a module which is not derived from or based on Genode, or merely uses the Genode API as defined in the official documentation."
For example, a component forked from an existing component would not qualify as "independent". But a custom component that interacts with the Genode API without copying non-trivial amounts of Genode code into its own code base would meet the definition of "independent". With non-trivial, I mean code that implements actual functionality as opposed to simple boiler-plate code.
Coming back to the glue-code example, with this clarification in place, it should hopefully be clear that the glue code does not get "tainted" with Genode's AGPLv3, only by the license of the 3rd-party code.
Would that modification make the situation sufficiently clear to you?
Thank you for your scrutiny!
Regards Norman