Skip to content

OMEMO libsignal Licensing Situation

Florian Schmaus edited this page Apr 19, 2017 · 5 revisions
               IM App / GPLv3 *and* APLv2 compatible license
              /            \
             / (A)           \ 
           ↙                  \ (B)
       smack / APLv2 ←---        \
          ↗             (C)\      \
         /                    \     \
        ↙                       \    ↘
   smack-omemo / APLv2 ←------ smack-omemo-signal / GPLv3
                          (D)     ↑
                                  ↓ (E)
                       libsignal-protocol-java / GPLv3

An application that utilizes Smack (A) and smack-omemo-signal (B) must be licensed under the GPLv3 or a compatible license, since smack-omemo-signal uses libsignal-protocol-java (E), which is licensed under the GPLv3.

smack-omemo however does not use any code from smack-omemo-signal or libsignal-protocol-java explicitly, so it can stay licensed under the APLv2.

Since the Free Software Foundation considers the Apache License, Version 2.0 to be a free software license, compatible with version 3 of the GPL, smack-omemo-signal can implement smack interfaces and call smack methods (C, D). Unfortunately the GPLv3 is incomaptible with the APLv2, so applications using GPLv3 code must be licensed under the GPLv3.

Legend:

  • GPLv3: GNU Public License, Version 3.0
  • APLv2: Apache License, Version 2.0
  • X ← Y: X uses Y