Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[epl-discuss] [Topic] Use of the terms "source code" and "object code"

EPL makes several references to the term "object code" without defining it. Object code is generally understood to refer to compiled code in non human-readable form suitable for direct execution. This term generally does not apply to interpreted languages, although interpreted languages sometimes still undergo transformations such  as concatenation, minification, or obfuscation. If you have a software project with a variety of artifacts, including compiled and interpreted code, documentation, etc, it is very unclear how any of the object code-related clauses in the EPL apply. There are two places in the EPL that make use of the term object code:

Section 2. Grant of Rights: this section applies to both source and object form so the clarity of the term is not critical here

Section 3. Requirements: this section allows for commercial distribution of object code under a different license. This implies that contributions written in interpreted languages, and other  non-code artifacts such as  documentation, cannot be distributed under a different license.

Similarly, EPL makes many references to "source form" without definition. Does this include non-code artifacts such as documentation? Does this include source code that has been minified or obfuscated but is still legal source code from a technical perspective?

I propose that EPL remove the term object code and replace it with a more technology neutral term. For example MPL 2.0 uses the term "Executable Form". More importantly, both of these terms should be clearly defined. Apache license also uses "Object" form but with a more inclusive definition to avoid these ambiguities. To throw out a concrete suggestion, MPL has nice neutral definitions here that capture all the subtleties mentioned above:

        Source Code Form: the form of the work preferred for making modifications.
        Executable Form: any form of the work other than Source Code Form

Apache's definition is more verbose but equally valid:

        "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.

John Arthorne

Back to the top