For the record, I was testing that same combo Claude mentioned and it did not 
work out of the box but it is definitely possible to set up successfully. I do 
not remember the details.

To replay to Maxim, it all seems good to me, roughly, but I humbly think it all 
boils down to Maven/Gradle refactoring and on top of that we can do all else.

For example, there is (1) where the solution, besides fixing the tests, is to 
introduce an Ant task which would check this on build. That being said, how is 
that going to look like when we change Ant for something else? That stuff 
suddenly becomes obsolete.

This case maybe applies to other problems we want to solve as well. I do not 
want to do something tailored for one build system just to rewrite it all or to 
spend significant amount of time on that again when we switch the build system.

For that reason I think changing Ant for something else should be top priority 
(as I understand that it the hot topic for community for very long time) and 
then everything else should follow. We should spend time on things mentioned 
only in case they do not collide with any build system at all.

(1) https://issues.apache.org/jira/browse/CASSANDRA-17964

Stefan

________________________________________
From: Claude Warren, Jr via dev <dev@cassandra.apache.org>
Sent: Friday, November 25, 2022 10:16
To: dev@cassandra.apache.org
Subject: Re: [DISCUSSION] Cassandra's code style and source code analysis

NetApp Security WARNING: This is an external email. Do not click links or open 
attachments unless you recognize the sender and know the content is safe.



+1 for the concept as a whole.  I am certain I could find nits to pick if I 
looked deeply.

@mck -- I did have a problem with Cassandra + Eclipse + Java11 (Classpath).  I 
gave up and am spending time trying to learn IntelliJ.  I also mentioned it in 
one of the discussion areas.

Claude

On Thu, Nov 24, 2022 at 8:55 PM Mick Semb Wever 
<m...@apache.org<mailto:m...@apache.org>> wrote:
 Thank you for a solid write up Maxim. And welcome to Cassandra, it's
very positive to see you here.

I whole-heartedly agree with nearly everything you write. Some input
and questions inline.


>
> As you may know, the infrastructure team has disabled public sign-up
> to ASF JIRA (the GitHub issues are recommended instead).
>


I suspect (based on chatter in general, but not on dev@ AFAIK) is to
avoid GH issues and stick with jira. The sign-up hurdle we will
document on the website: CASSANDRA-18064



> == 1. Make the checkstyle config a single point of truth for the
> source code style. ==
>
> The checkstyle is already used and included in the Cassandra project
> build lifecycle (ant command line, Jenkins, CircleCI). There is no
> need to maintain code style configurations for different types of IDEs
> (e.g. IntelliJ inspections configuration) since the checkstyle.xml
> file can be directly imported to IDE used by a developer. This is fair
> for Intellij Idea, NetBeans, and Eclipse.


Big +1


> So, I propose to focus on the checks themselves and checking pull
> requests with automation scripts, rather than maintaining these
> integrations. The benefits here are avoiding all issues with
> maintaining configurations for different IDEs. Another good advantage
> of this approach would be the ability to add new checkstyle rules
> without touching IDE configuration - and such tickets will be LFH and
> easy to commit.
>
> The actions points here are:
>
> - create an umbrella JIRA ticket for all checkstyle issues e.g. [8]
> (or label checkstyle);
> - add checkstyle to GitHub pull requests using GitHub actions (execute
> ant command);


Instead of custom GHA scripting, please use our existing
cassandra-artifact.sh (which should already include all such checks).

Something like 
https://github.com/apache/cassandra/compare/cassandra-3.11...thelastpickle:cassandra:mck/github-actions/3.11



> == 3. Enable pushing backwards build results for both Jenkins and
> CircleCI to GitHub pull requests. ==
>
> The goal here is to have a "green checkbox" for those GitHub pull
> requests that have corresponding Jenkins/CircleCI runs. According to
> the following links, it is completely possible to have those.
>
> https://github.com/jenkinsci/github-branch-source-plugin
> https://circleci.com/docs/enable-checks/
>
> Moreover, the GitHub Branch Source Plugin is already enabled for the
> Cassandra project [16]. The same seems should work the same way for
> CirleCI, but I have faced the infrastructure team comment [17] that
> describes admin permissions are required for that, so the question is
> still open here. I could dig a bit more once we've agreed on it.
>
> The actions points here are:
> - enable Jenkins integration for GitHub pull requests;
> - enable CircleCI integration for GitHub pull requests;


Some folk use CircleCI, some use ci-cassandra. The green checkbox idea
is great, so long as it's optional. We don't want PRs triggering the
runs either (there are other mechanisms for triggering for now).


> The actions points here are:
>
> - initiate a wide survey for user and dev lists, to get to know about
> the usages;
> - remove those configurations that are not used anymore;
> - force migration from Ant to Gradle/Maven;


Let's leave this out for now. There's too many unknowns here. If
there's an IDE configuration that's broken, no one has reported it for
ages, and no one is around to fix it, then I say we should raise the
discussion to remove it.

The Gradle/Maven migration is a hot one, contribute to that discussion
but let's not tangle this work up with it, IMHO.

Totally agree that IDE project files should be as light weight as possible.


> Summarizing everything proposed above I think it is possible to
> simplify adding small contributions easier to the codebase as well as
> save a bunch of committer's time.
>
> So,
> WDYT about the things described above?
> Should I create a CEP for this?


I see no need for a CEP here. An epic and tickets will work.
Again, thanks for the input Maxim!

Reply via email to