+1 to the profile approach for building these studies only when interested

and keep in mind flexibility about sharing one general studies branch vs taking 
extra structure of a dedicated Git orphan branch

Le lundi 13 janvier 2025, 22:23:26 CET Gerd Aschemann a écrit :
> > On 13. Jan 2025, at 08:01, Hervé Boutemy <herve.bout...@free.fr> wrote:
> > 
> > oh, someone who seriously tries to maintain Maven Source Aggregator: nice!
> > https://github.com/apache/maven-sources/tree/master/aggregator
> 
> Let’s see if I can manage this endeavour in the long run ;-).
> 
> > I'm not really surprised that Maven Studies in that reactor may cause
> > issues https://github.com/apache/maven-studies
> > https://maven.apache.org/studies/
> > As said in the master readme, they replace Maven Sandbox from svn time, to
> > avoid creating a separate Git repo that has limited interest, or not yet
> > proven
> 
> I do not object to still have them in the overall code base (`repo` tool
> based Maven Source), but would like to remove them from the reactor build
> or at least ban them to a profile.
> 
> What would be the most important goal of a reactor build? In my opinion it
> should allow for a simple embracement of all (production) relevant modules.
> Therefore it should IMHO only contain the respective (self-maintained)
> tools and libraries, underlying (former separate) libraries (like Plexus
> and Sisu), the Maven core itself and the plugins. All components which
> qualify to be part of the reactor should be maintained and kept up to date.
> 
> I wouldn’t treat studies as equal citizens, in particular as they seem not
> to be well maintained. They perhaps were working at the time the respective
> study was necessary. But then either the idea was given up or it was
> incorporated into some other components. Aren’t both good reasons to drop
> them from the major reactor builds in this moment. Hey, we have an SCM, we
> can reactivate them anytime, but no reason to keep the burden with every
> build, right?
> 
> Additionally, I wonder about the technical implementation. Keeping them in
> one repo on separate branches makes using `repo` real hard. Could we at
> least combine them on a single branch? They could have separate
> subdirectories, or even a common reactor if it helps. New studies could
> still be developed on separate branches. But they should then be merged to
> the common `main` (`master` seems to be politically incorrect these days)
> if they mature.
> > This permits to avoid empty GH repos like maven-metric-extension, created
> > but never used: if code had been initiated as a study, it's only after a
> > sufficient tested codebase that Git repo would have been created.
> 
> Sure, I am a big fan of cleaning up outdated and non-maintained (or even
> empty) stuff.
> > I feel that recently quite a few maven-* Git repositories were created
> > that
> > may quickly become unmaintained: creating a separate orphan branch in
> > maven- studies is a way to stress test an idea
> > 
> > 
> > Studies are not meant to be components for release, but "studies":
> > - either with a limited time value, like the first studies for consumer
> > POM
> > - or with complex compatibility tests in mind, like the extensions study
> > 
> > Some past studies (= Git orphan branches) may completely be deleted;
> > Some studies may be removed from the full source code aggregator build, or
> > moved to specific pom.xml profiles to document the specifics
> > 
> > This pom.xml profile approach seems relevant for extensions study: not
> > fully dropped, but not part of normal full source code of Maven
> 
> Thats the last resort, exclude them by a profile if not completely.
> 
> > Regards,
> > 
> > Hervé
> > 
> > Le lundi 13 janvier 2025, 03:53:28 CET Gerd Aschemann a écrit :
> >> Hello Maven committers,
> >> 
> >> some of you already noticed that our Maven Support-and-Care
> >> <https://github.com/support-and-care/maven-support-and-care> initiative
> >> started working in the last weeks. Sandra has prepared and supported
> >> migration of Jira issues to GitHub.
> >> 
> >> Now it’s my turn to start contributing to successful individual project
> >> builds and in particular reactor build. This does not only improve the
> >> Maven project but also enables further analysis of code quality and
> >> enforcement of unique standards to all Maven projects. We expect to send
> >> in
> >> first formal analysis results soon, e.g., based on jQAssistant
> >> <https://jqassistant.org/>.
> >> 
> >> Therefore I have run a due diligence
> >> <https://github.com/support-and-care/maven-support-and-care/issues/77>
> >> process to make at least all 133 current Maven projects including the
> >> reactor build with Maven 3.9.9 and JDK 21. After reaching this state by
> >> the
> >> end of 2024 I meanwhile could refactor the results, some of my insights,
> >> and also a lot of my tooling. Additionally, I started to work on Maven 4
> >> with it (and will also try to cover M3.6.3 as soon as possible). I will
> >> try
> >> to report more about this to you in the next weeks. You may already look
> >> into my complete epic report
> >> <https://github.com/support-and-care/maven-support-and-care/blob/wip/77-m
> >> av
> >> en-due-diligence/src/docs/epics/77-maven-due-diligence/index.adoc> (I am
> >> happy to discuss anything with you).
> >> 
> >> For now I would like to focus on the most important changes, the
> >> so-called
> >> quick wins
> >> <https://github.com/support-and-care/maven-support-and-care/blob/wip/77-m
> >> av
> >> en-due-diligence/src/docs/epics/77-maven-due-diligence/index.adoc#quick-w
> >> ins>> 
> >>> . Therefore, I kindly propose to make some (rather small) changes to
> >> 
> >> incorporate my work into the Apache Maven codebase (which you will also
> >> find as appendix below). This would make further changes easier, and - as
> >> I
> >> said - enables further code analysis. The longer and more complex our
> >> forks
> >> get and stay, the harder it is to work seamlessly on them. I have already
> >> prepared some Draft PRs covering most of my changes.
> >> 
> >> But let me start with a brief summary of my changes.
> >> I would like to drop certain components, at least from the reactor build,
> >> if not completely from the Maven Source. They are either archived or
> >> announced to become archived and sometimes cause some trouble to the
> >> build. If possible I am happy if we can even archive/drop more
> >> components in the future. Studies (at least the three from the report,
> >> causing trouble) Project Utilties (soon to be archived)
> >> Artifact Transfer (deprecated)
> >> Repository Tools (aka. Meeper; ~15 years old; doesn’t build for various
> >> reasons, is not used somewhere in the other projects) Maven 3: The
> >> required
> >> changes are very small (one duplicate file removal, three times setting
> >> the
> >> Java Version from 7 to 8 as JDK 21 no longer builds with source/target
> >> set
> >> to 7). Maven 4: Requires some more changes (Upgrade of Parent POM version
> >> in 4 cases; Adding some dependency versions; dropping parent.
> >> relativePath
> >> here and there; Refactoring a method to less than 150 lines; Applying
> >> Spotless).
> >> 
> >> To show the problems and successful application of the changes I have
> >> added
> >> GH Actions (copied from project with existing GH Action) to the
> >> respective
> >> repositories (links below). As the Maven 3 changes are almost trivial, I
> >> spared the PRs but could raise separate PRs for M3 if desired. For the M4
> >> changes they were mostly small, except for the spotless application which
> >> reformatted several files (In fact, for the new format there were no
> >> semantical changes as far as I could see). Would you in general accept
> >> the
> >> respective PRs? Then I would make them final and we could perhaps discuss
> >> details during the PR process.
> >> 
> >> I understand that it is common to raise a Jira first when working on some
> >> open issue. If desired, I could create Jira tickets (or GH issues) in the
> >> respective components. Or I could just raise one (where)? Then I would
> >> refer to the ticket(s) in the PRs when making them final.
> >> 
> >> As outlined above there are some more improvements in my pipeline, but I
> >> wanted to get the ball rolling and rather push changes in small portions.
> >> 
> >> Looking forward to get some feedback from you.
> >> 
> >> Have a good start into the week,
> >> 
> >>  Gerd
> >> 
> >> P.S.: Sorry for the inconvenience I caused to some of you by creating
> >> draft
> >> PRs (and reworking or even closing them). I promise to get used to the
> >> project standards. --
> >> Gerd Aschemann --- Veröffentlichen heißt Verändern (Carmen Thomas)
> >> +49/173/3264070 -- g...@aschemann.net -- http://www.aschemann.net
> >> 
> >> 
> >> Quick wins
> >> 
> >> To visualize the problems and the results of below discussed quick wins,
> >> we
> >> added a build to the Maven projects. Both currently make use of JDK 21
> >> and
> >> Maven 3.9.9, as well as Maven 4.0.0-RC-2. We can show the initial results
> >> of the builds (without changes), and the results for both Maven versions.
> >> 
> >> It is clear, that this does not yet cover all remaining (and to be
> >> detected) open problems of the Maven build. For instance, it does not
> >> yet cover full integration tests, or documentation checks. Nevertheless,
> >> it is a starting point which allows for step-by-step improvements. In
> >> particular, it allows to build the projects (and execute at least their
> >> unit tests) with the required JDK and currently two out of three
> >> supported Maven versions.
> >> 
> >> For each of the single repositories below (running mvn verify), the build
> >> (on the respective PRs) is successful (both M3 and M4). See the build
> >> links
> >> in the discussion below. For the reactor build (running mvn install
> >> site.[1
> >> <x-msg://54/#_footnotedef_1>]), it is a bit more complicated. For Maven
> >> 3.9.9, the build is successful, but with some errors (resulting from site
> >> building). For Maven 4.0.0-RC-2, the build still has some problems, and
> >> it
> >> will take us some time to resolve them (→ Work-in-Progress). We derived
> >> following tasks from the current state above. They make sure that we can
> >> at
> >> least execute the Maven build with the required JDK and Maven versions
> >> without running into basic build problems.
> >> 
> >> Triage
> >> Check with the Maven committers if we could thin out the reactor build
> >> and
> >> the overall Maven Source and Reactor Build
> >> <x-msg://54/#box:maven-source>.
> >> 
> >> Archive unnecessary components.
> >> Drop them from the Maven Source (or at least from the reactor build;
> >> Draft
> >> PR for both M3 and M4 <https://github.com/apache/maven-sources/pull/13>).
> >> The reactor build would become easier if the following components would
> >> be
> >> dropped from the reactor build The so-called Maven Studies (as they are
> >> causing trouble, cf. our forks), Consumer POM
> >> <https://github.com/apache/maven-studies/tree/consumer-pom> (Sac: fork
> >> <https://github.com/support-and-care/maven-studies/tree/consumer-pom>,
> >> bugfix
> >> <https://github.com/support-and-care/maven-studies/tree/bugfix/77-make-pr
> >> oj
> >> ect-build-again-consumer-pom>, Successful GH Action with M3
> >> <https://github.com/support-and-care/maven-studies/actions/runs/127334566
> >> 92
> >> 
> >>> ), Extension Demo Study
> >> 
> >> <https://github.com/apache/maven-studies/tree/maven-extension-demo> (SaC:
> >> fork
> >> <https://github.com/support-and-care/maven-studies/tree/maven-extension-d
> >> em
> >> o>, bugfix
> >> <https://github.com/support-and-care/maven-studies/tree/bugfix/77-add-mav
> >> en
> >> -verify-maven-extension-demo>, Successful GH Action with M3
> >> <https://github.com/support-and-care/maven-studies/actions/runs/127340235
> >> 31
> >> 
> >>> ), Eventsound Extension Demo
> >> 
> >> <https://github.com/apache/maven-studies/tree/maven-eventsound-extension>
> >> (SaC: fork
> >> <https://github.com/support-and-care/maven-studies/tree/maven-eventsound-> 
> >> >> ex
> >> tension>, bugfix
> >> <https://github.com/support-and-care/maven-studies/tree/bugfix/77-make-pr
> >> oj
> >> ect-build-again-maven-extension-demo>, Successful GH Action with M3
> >> <https://github.com/support-and-care/maven-studies/actions/runs/127340235
> >> 31
> >> 
> >>> ), The Maven Project Utils
> >>> <https://github.com/apache/maven-project-utils>
> >> 
> >> as they are soon to be archived, The Maven Artifact Transfer
> >> <https://github.com/apache/maven-artifact-transfer> as it is deprecated
> >> and
> >> should be archived soon, and The Maven Repository Tools
> >> <https://github.com/apache/maven-repository-tools> (aka. Maven Meeper)
> >> from
> >> the reactor build (Draft PR for M3
> >> <https://github.com/apache/maven-sources/pull/13> will be withdrawn) as
> >> It
> >> is archived (so no further development is expected),
> >> It has many non-straightforward problems (see below).
> >> For the next steps below we assume that the components mentioned above,
> >> will not survive the triage <x-msg://54/#desc-item:triage> and
> >> concentrate on the remaining components. Maven 3 (.9.9) Updates
> >> To enable successful build with Maven 3 (.9.9) the following changes are
> >> necessary.
> >> 
> >> Maven Verifier Plugin <https://github.com/apache/maven-verifier-plugin>
> >> Update the Java version to at least Java 8, and
> >> Drop duplicate license from VerifierMojo.java
> >> <https://github.com/apache/maven-verifier-plugin/blob/1330656e1945dfe7ef1
> >> a1
> >> f3e8034b64138887f10/src/main/java/org/apache/maven/plugins/verifier/Verif
> >> ier Mojo.java#L29> as it leads to a checkstyle error due to splitting the
> >> import statements. Maven Stage Plugin
> >> <https://github.com/apache/maven-stage-plugin>: Update the Java version
> >> to
> >> at least Java 8 Maven Mapping <https://github.com/apache/maven-mapping>:
> >> Update the Java version to at least Java 8 Maven 4 (.0.0-RC-2) updates
> >> To enable successful build with Maven 4 (.0.0-RC-2) the following changes
> >> are necessary.
> >> 
> >> Maven Shared IO <https://github.com/apache/maven-shared-io> (Draft PR for
> >> M3 <https://github.com/apache/maven-shared-io/pull/27>, also works with
> >> M4;
> >> Successful GH Action
> >> <https://github.com/support-and-care/maven-shared-io/actions/runs/1273404
> >> 21
> >> 42>): Upgrade to Parent version 43,
> >> and add Plexus-XML dependency (in test scope).
> >> Maven Verifier Plugin (Draft PR
> >> <https://github.com/apache/maven-verifier-plugin/pull/6>, Successful GH
> >> Action
> >> <https://github.com/support-and-care/maven-verifier-plugin/actions/runs/1
> >> 27
> >> 38839164>): Upgrade to Parent version 43.
> >> Apply Spotless to the codebase.
> >> Maven Stage Plugin (Draft PR
> >> <https://github.com/apache/maven-stage-plugin/pull/15>, Successful GH
> >> Action
> >> <https://github.com/support-and-care/maven-stage-plugin/actions/runs/1273
> >> 88
> >> 68925>): Drop parent.relativePath.
> >> Refactor DefaultRepositoryCopier::copy to use less than 150 lines of
> >> code.
> >> Upgrade to Parent version 43.
> >> Apply Spotless to the codebase.
> >> Maven Mapping (Draft PR <https://github.com/apache/maven-mapping/pull/8>,
> >> Successful GH Action
> >> <https://github.com/support-and-care/maven-mapping/actions/runs/127341506
> >> 20
> >> 
> >>> ): Drop parent.relativePath.
> >> 
> >> Upgrade to Parent version 43.
> >> Apply Spotless to the codebase.
> >> 
> >> 
> >> 
> >> --
> >> Gerd Aschemann --- Veröffentlichen heißt Verändern (Carmen Thomas)
> >> +49/173/3264070 -- g...@aschemann.net -- http://www.aschemann.net
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> > For additional commands, e-mail: dev-h...@maven.apache.org
> 
> --
> Gerd Aschemann --- Veröffentlichen heißt Verändern (Carmen Thomas)
> +49/173/3264070 -- g...@aschemann.net -- http://www.aschemann.net





---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to