Looks great! On Mon, May 30, 2022, 5:37 AM bened...@apache.org <bened...@apache.org> wrote:
> Any more feedback around this? Everyone happy with the latest proposal? > > > > *From: *bened...@apache.org <bened...@apache.org> > *Date: *Sunday, 15 May 2022 at 15:08 > *To: *dev@cassandra.apache.org <dev@cassandra.apache.org> > *Subject: *Re: Updating our Code Contribution/Style Guide > > I agree with this sentiment, but I think it will require a bit of time to > figure out where that balance is. > > > > I’ve inserted a mention of @Nullable, @ThreadSafe, @NotThreadSafe and > @Immutable. > > > > > If we only use one of the two - for example @Nullable - that leaves us > with "We know the original author expected this to be null at some point in > its lifecycle and it means something" and "We have no idea if this is > legacy and nullable or not" > > > > My inclination is to start building some norms around this, carefully as > we don’t have enough experience and understanding of the pitfalls and long > term usage. But, my preferred norms would be that properties should be > assumed to be @Nonnull and that all nullable parameters and properties > should be marked as @Nullable. This is how I use these properties today; > Nonnull always seems superfluous, as it is rare to have a set of properties > where null is the default, or where it is particularly important that the > reader or compiler realise this. > > > > There will be an interim period, in particular for legacy code, where this > may lead to less clarity. But in the long term this is probably preferable > to inconsistent usage where some areas of the codebase indicate @Nonnull > without indicating @Nullable, and vice-versa, or where every variable and > method ends up marked with one or the other. > > > > This is probably also most consistent with a future world of cheap > Optional types (i.e. Valhalla), where Nullable may begin to be replaced > with Optional, and Nonnull may become very much the default. > > > > That said, as stated multiple times, the author and reviewer’s > determinations are final. This document just sets up some basic > parameters/expectations. > > > > *From: *Derek Chen-Becker <de...@chen-becker.org> > *Date: *Saturday, 14 May 2022 at 20:56 > *To: *dev@cassandra.apache.org <dev@cassandra.apache.org> > *Subject: *Re: Updating our Code Contribution/Style Guide > > On Sat, May 14, 2022 at 11:00 AM Josh McKenzie <jmcken...@apache.org> > wrote: > > > > Incidentally, I've found similar value in @ThreadSafe, const, readonly, > etc - communications of author's intent; being able to signal to future > maintainers helps them make modifications that are more consistent with and > safer with regards to the original intention and guarantees of the author. > > > > Assuming you trust those guarantees that is. :) > > > > I think author's intent is important, which is why I also think that > judicious/effective commenting and naming are important (and I'm glad that > naming is called out in the guidelines explicitly). However, I also think > that these are also opportunities to help the compiler and tooling help us, > similar to how Benedict's draft calls out effective use of the type system > as a way to encode semantics and constraints in the code. These > annotations, while clunky and verbose, do open the door in some cases to > static analysis that the Java compiler is incapable of doing. I don't know > exactly where it is, but I think there's a balance between use of > annotations to help tooling identify problems while not becoming onerous > for current and future contributors. I know this is more difficult in Java > than, say, Rust, but I'm an eternal optimist and I think we can find that > balance :) > > > > Cheers, > > > > Derek > > > > -- > > +---------------------------------------------------------------+ > > | Derek Chen-Becker | > > | GPG Key available at https://keybase.io/dchenbecker and | > > | https://pgp.mit.edu/pks/lookup?search=derek%40chen-becker.org | > > | Fngrprnt: EB8A 6480 F0A3 C8EB C1E7 7F42 AFC5 AFEE 96E4 6ACC | > > +---------------------------------------------------------------+ > > >