Hi all,

Matt made an interesting proposal to use JSpecify nullability
annotations in Log4j:

https://github.com/apache/logging-parent/issues/88

I am a big fan of nullability annotations but in my professional
experience they are worthless, unless the whole team agrees to use
them and how to introduce them.

IMHO we should:

 * create a branch that will differ from `main` only for the present
of nullability annotations,
 * depend directly (scope `provided`) on JSpecify, although this might
cause issue reports like this one [1],
 * only merge the changes of one module at a time (starting with `log4j-api`),
 * start by marking all fields and return types as `@Nullable` and all
parameters as `@NonNull`,
 * only merge the change if a tool (NullAway/Checker Framework)
guarantees that the code is NPE-free.
 * target 3.1.x as the first release with nullability annotations.

What do you think?

Piotr

[1] https://github.com/apache/logging-log4j2/issues/2144

Reply via email to