Re: signifigance of nested parenthesis with only ORs? (was: OpenJ9 license)

David A. Wheeler

Bradley M. Kuhn:
So you can confirm there is *absolutely* no semantic licensing difference
between a series of OR expressions with or without parenthetical
I don't speak for SPDX :-). But I can read, and hopefully that's something :-).
I don't see anything in the SPDX specification that suggests a difference in the cases being discussed.

I consulted the Book of Armaments, I mean,
SPDX specification version 2.1, Appendix IV ("SPDX License Expressions"):
which says:
simple-expression = license-id / license-id"+" / license-ref
compound-expression = 1*1(simple-expression /
simple-expression "WITH" license-exception-id /
compound-expression "AND" compound-expression /
compound-expression "OR" compound-expression ) /
"(" compound-expression ")" )

The last part says that you can always take a compound-expression, and surround it with parentheses. There's no indication that this would *mean* anything different.

So the following are all syntactically legal, and there's no indication that they mean anything different:
1. MIT OR GPL-2.0
2. (MIT OR GPL-2.0)
3. ((MIT) OR (GPL-2.0))
4. (((((MIT))) OR (GPL-2.0)))

Of course, not all syntactically legal expressions are examples of good taste :-). The style recommendation from the spec is to use parentheses to surround expressions with multiple license identifiers and license refs (example #2). Many people use #1, because it's shorter. Examples #3 and #4 are clearly bad style, but they're unambiguous so there's no strong reason to forbid them.

Also, clearly "((X OR Y) AND Z)" is very different from "(X OR (Y AND Z))". There, the location of parentheses is *vital*. But I think everyone already understands that.

--- David A. Wheeler

Join { to automatically receive all group messages.