Hi Benedict, all, I do not want to hijack this thread, if we want to have separate discussion about that I can open one but anyway ...
What do you think about Javadocs? I do not see that it is mentioned but Javadocs are technically the code as well (well, they are written in the source code, right?). We have a lot of Javadoc warnings / errors when one wants to build it. What I noticed is that the build reports at most 100 of Javadoc issues but there is _way more_ of them. I already started to clean it up but after a while I realized it is too big of a change to do during "rainy afternoon" and I was not even sure what branch I should target. So, do we want to target cleanup of Javadocs? I think we should target just the trunk. Do you think we need any formal documentation / guidance as to how to write Javadocs? Anything specific? I think that we should strive for having 0 issues on Javadocs and flat out error the build if some are found. If we do not seek any significant improvement in this area (as a community), I would like to have it explicitly stated. Regards On Tue, 31 May 2022 at 14:46, bened...@apache.org <bened...@apache.org> wrote: > > I think that it is hard to define what the right extent of a patch is, but it > should be the minimal scope that the author feels sufficient to safely > address the concerns of the patch. I have added a sentence to this effect in > the top section of the proposal. > > > > My view (not propagated to the document) is that we should generally as a > rule avoid pure mechanistic clean-up work, unless it is associated with an > important refactor (and hence, likely to be trunk only). I would normally > give the cleanup its own commits for review, but not at merge. > > > > We don’t currently have any project norms around linter warnings, only errors > that we enforce with checkstyle and ecj. So I think right now it’s down to > personal taste at commit time, as part of any patch-related cleanup. > > > > Do we want to try pursuing zero warnings for commits by some linters? This > might be a good thing, if we are willing to be liberal with @SupressWarnings. > I’m not sure how we would transition, though, with so many existing warnings. > > > > > > > > From: Ekaterina Dimitrova <e.dimitr...@gmail.com> > Date: Monday, 30 May 2022 at 21:37 > To: dev@cassandra.apache.org <dev@cassandra.apache.org> > Subject: Re: Updating our Code Contribution/Style Guide > > I also like it, thank you for putting it together. We can always add more and > more, but I think the current one is already quite extensive. I like the > dependency management point. > > > > I want to clarify a bit only one point. Any kind of old warnings and code > cleaning. If it is not immediately related to the patch, we should do those > in trunk and if it requires a lot of noise - probably in a separate > commit/ticket, no? Is this a valid statement? I've seen different opinions > but I feel it is good to have a consensus and this feels like a good time to > mention it. I mean cases where there are classes with 20 warnings, etc and > they may exist since early versions for example. > > > > Best regards, > > Ekaterina > > > > On Mon, 30 May 2022 at 14:10, Derek Chen-Becker <de...@chen-becker.org> wrote: > > 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 | > > +---------------------------------------------------------------+ > >