Re: [VOTE] Engine 2.0 RC5 Release quality

Michael Osipov <[email protected]> Mon, 16 Jan 2017 22:29:12 +0100
Newsgroups gmane.comp.jakarta.velocity.user
Message-ID <[email protected]>
Am 2017-01-16 um 15:02 schrieb Claude Brisson:
> The Velocity Engine 2.0 RC5 is available.
>
> Main changes since the RC4:
>
>  * the default encoding is now UTF-8 (and not the platform default)
>  * commons-collections is not any more a compilation dependency
>  * commons-lang3 dependency is not any more shaded
>  * the configuration API doesn't use ExtProperties anymore
>  * the events API has been reviewed: all events do receive the current
> Context as argument
>
> Release notes:
>
> *
> https://dist.apache.org/repos/dist/dev/velocity/velocity-engine/2.0/release-notes.html
>
>
> Distribution:
>
>  * https://dist.apache.org/repos/dist/dev/velocity/velocity-engine/2.0/
>
> Maven 2 staging repository:
>
>  *
> https://repository.apache.org/content/repositories/orgapachevelocity-1015
>
> If you have had a chance to review the test build, please respond with a
> vote on its quality:
>
>  [ ] Leave at test build
>  [ ] Alpha
>  [ ] Beta
>  [ ] General Availability (GA)
>
>
> Everyone who has tested the build is invited to vote. Votes by PMC
> members are considered binding. A vote passes if there are at least
> three binding +1s and more +1s than -1s.

Here are my comments referred in my the previous mail:


* README.txt requires a rewrite, it still talks about Ant, old directory 
structures, and much more
* POM: use of JavaCC Maven Plugin: never ever add auto-generated code to 
src/, it completely breaks
   the agreed convention. Have it in target/ and attach the source code 
with Buildhelper Maven Plugin, if
   the JavaCC Plugin doesn't do it on its own.
* POM: The deletion/creation of the JavaCC parser should rather be a 
complete profile rather than
   a hack with properties passed to Ant, if this is necessary at all. I 
see no difference here to code generation by JAXB's XJC or Modello, etc.
* There are several spots which
** don't use SLF4J's {} placeholder,
** don't use System.lineSeparator() but '\n'
** do a toLowerCase() (e.g., #sameEncoding()) instead of 
toLowerCase(Locale.ROOT)
* There is a lot trailing whitespace throughout the code
* Generally, don't use log#isXXXEnabled() because of SLF4J's {} 
placeholders' foo
* There are a few null argument checks which can be better handled with 
Common Lang's Validate class
* StringBuffer is used sometimes where StringBuilder would suffice (w/o 
synchronization)
* Stuff like BUILD_README.txt absolutely do not belong to src/main/java, 
see second point
* There are some unused imports once in a while
* Rather use maven.compiler.source and maven.compiler.target properties 
to avoid duplicate value setting, checkstyle, findbugs, JavaCC, etc.
* If a dependency is used several times, e.g. SFL4J, it shall be added 
to the dep mngt section of the parent POM to avoid repetition of version 
elements. Hint: this can be done with reactor modules too

There are likely to be more issues I have missed.

What is the benefit of velocity-engine-assembly actually? I know, ages 
ago Velocity and other software was delivered as a tarball or zip file 
with all JARs and the rest, including source. I think this is pretty 
much obsolete now and partially redundant:
* Apache Parent already provides predefined descriptors which create a 
source-release.zip for you, no further work necessary
** source-release.zip is used for release testing/votes, as well as for 
clients/users who do not want to clone from Git or checkout via Subversion
* Binary artifacts are always available on Maven Central, I hardly 
believe that someone will really download dist.zip to get the JARs and 
add them manually somewhere, even if, they can get them from 
search.maven.org


Michael