8

The International Astronomy Union's Standards of Fundamental Astronomy is a software library providing an authoritative suite of functions useful in astonomonical and geospatial calculations. It is officially available in C and FORTRAN flavours, and there are a variety of unofficial wrappers available in various languages.

The most popular Github project based on SOFA, with a whopping 14 stars, is under the MS Reciprocal License. The readme file also separately includes the text of the SOFA software license. Other projects have chosen, e.g., the MIT license or have simply included the SOFA license with no other licensing declared (e.g.).

I'm new to open source projects, both releasing and including/adapting, and understanding the implications of licensing fills me with anxiety. Especially when it comes to including work such as SOFA which seems, if I'm reading the license right, to be beer-free but not quite free-free.

My question is in two parts:

  • Are the requirements of the SOFA license (royalty-free use, modification permitted with stipulations) compatible with most/any/some of the fully FOSS licenses, where the SOFA code is included without modification, as in the libraries linked above?

  • Acknowledging that the SOFA license explicitly states that "third-party modifications are discouraged", if one were to re-implement some or all of the SOFA functionality natively in another language, would the choice of license this was released in be limited by the SOFA license conditions? I.e., how much freedom can the creators of derived works based on my own SOFA-derived work have?

It's possible I'm worried about nothing, but while I understand code just fine, I don't (yet) understand the fine points of licensing rights and derived works!

8

I'm not aware that OSI has taken any position on the SOFA licence, but I can see a number of reasons why it might not be regarded as a free licence.

Section 3c provides that The names of all routines in your derived work shall not include the prefix "iau" or "sofa". This seems to me at odds with freedom four of the four freedoms, the freedom to improve the software in any way you choose.

Section 4 provides that You shall not cause the SOFA software to be brought into disrepute, either by misuse, or use for inappropriate tasks, or by inappropriate modification. This seems to me at odds with freedom one, the freedom to use the software for any purpose, as well as with freedom four. The SOFA authors don't say what "inappropriate tasks" are, but I can imagine that using the routines in (say) a piece of astrological software wouldn't make them happy. In any case, it doesn't matter exactly what tasks or modifications they wish to proscribe, only that they reserve the right to do so.

Are the requirements of the SOFA license (royalty-free use, modification permitted with stipulations) compatible with most/any/some of the fully FOSS licenses, where the SOFA code is included without modification, as in the libraries linked above?

If I'm right about SOFA code being non-free, there's no bar on combining it with code covered by a permissive free licence (eg Apache, MIT), but you couldn't combine it with code under a copyleft licence (eg GPL).

if one were to re-implement some or all of the SOFA functionality natively in another language, would the choice of license this was released in be limited by the SOFA license conditions?

SOFA s3e requires that These requirements must be reproduced intact in any source distribution and shall apply to anyone to whom you have granted a further right to modify the source code of your derived work, which reads to me a lot like a (crayon) copyleftish licence. As I read it, the SOFA authors intended you to have to release derivative works under the SOFA licence. A port of this code to another language is almost certainly going to be a copyright derivative of the SOFA code, so you would have to release it under the SOFA licence also, as would those who produced works which were derivatives (in copyright terms) of your port.

4
  • Okay great, I wasn't worried for nothing! One small matter of clarification: Any work which includes unmodified SOFA code should be distributable under a permissive free license, but my derived code probably would probably need to be licensed exactly as per the original SOFA license. That then implies that works which include my derived code would be okay with a permissive license, right...? So, does not my library that contains my derived code "include" that code, allowing it to be licensed under, say, MIT or Apache, as you suggest?
    – Johnny
    Jul 12 at 11:23
  • I don't say that licensing the derivative work under Apache2 or MIT would be fine. I say that, as I read it, any derivatives have to be licensed in their entirety under SOFA. That condition doesn't prevent you from using code that you received under eg Apache2 or MIT in this derivative, but it would prevent you from using code received under eg GPLv2 in the same way. The same constraints apply to anyone who takes your derivative work under the SOFA licence, and makes a further derivative from it.
    – MadHatter
    Jul 12 at 11:28
  • Ah, right, I understand now what you mean by "combining it with" code covered by a permissive free license. So, as you understand the SOFA license, all works that include the SOFA code or anything derived from it must themselves be licensed under the SOFA license, including commercial applications? 🤔 Sorry if I'm being dense!
    – Johnny
    Jul 12 at 11:39
  • 1
    That's my read, yes, though IANAL/IANYL.
    – MadHatter
    Jul 12 at 12:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.