In general, this sort of thing needs to be submitted as small,
isolated PRs that are focused on exactly one thing. Code review time
is extremely limited. I'm not sure if a non-committer can approve PRs
or not, but if so it would be more helpful to contribute as a code
reviewer than a coder.
I will gladly help out by reviewing the open PRs. While my reviews will be non-binding, I hope it helps to speed up the approval process for the active committers.

Gradle or Maven is a non-starter for now. We can consider that only
after the build actually works, tests run, and releases are possible.
I think there might be a misunderstanding here: On my fork, the Gradle build is already fully functional. It builds the project, executes all tests, and handles the release packaging according to ASF guidelines. However, I completely understand if migrating the build system is not a priority for the upstream project right now.

Lambdas are usually a bad idea. There might be isolated cases where
they're clearer than a simple loop, but that's rare. In any case, I'm
not sure we currently require Java 8. That might be a blocker. I'd
have to check. But whether we do or don't, please don't churn the code
just to introduce the new hotness when the old hotness works perfectly
well.
The lambdas in my fork were exclusively introduced to replace the highly verbose anonymous classes inside AccessController.doPrivileged(...) blocks across the SecuritySupport classes. I agree it's mostly cosmetic to reduce boilerplate, so I am perfectly fine leaving these out of any PRs to avoid unnecessary code churn.

Microbenchmarks rarely identify anything with a macro effect, but as
long as an optimization doesn't make code more opaque or convoluted,
I'll consider it. However, production benchmarks are much more
convincing.
Production benchmarks are indeed harder to get, but I needed a systematic baseline to verify that the micro-optimizations (like skipping redundant array allocations) aren't doing any harm or convoluting the code.
try-with-resources is useful where it fits, especially on code paths
where resources might not be properly closed already.
I agree. Going forward, if I spot unclosed resources on error paths, I can submit those as small, isolated try-with-resources PRs.
JUnit 5 is a maybe, but it doesn't add a lot of benefit, and I'd
prefer not to burn time on it. On the other hand, converting non-JUnit
tests to JUnit is very useful, and needs to be completed before we
consider migrating to a new JUnit version. Some of the Xerces codebase
is very old and might predate JUnit 1.0. We have a lot of "tests" that
do not actually run. There are probably still a couple that are
failing but don't break the build. I have over a dozen PRs to fix this
that have been open for months without any reviews.
Exactly this was the core of my test modernization. On my branch, the legacy test wrappers were migrated to standard JUnit. Additionally, I implemented JUnit test drivers for the external W3C XMLConformance, DOM, XInclude, and Schema test suites so they finally run as part of the normal build. To give you an idea of the test coverage this unlocks, here is the complete breakdown of all tests that are now running transparently during a single build:

Test Suite Category                    | Executed Tests | Skipped
---------------------------------------|----------------|---------
-- W3C Conformance Suites --           |                |
XML Schema Test Suite (XSTS)           |         14,030 |     879
XML Conformance Test Suite             |          5,170 |     774
DOM Conformance Test Suite (DOM TS)    |          1,706 |     120
XInclude 1.0 Conformance Test Suite    |            348 |      64
                                       |                |
-- Internal Xerces Tests --            |                |
Schema (Config, Annotations, etc.)     |            155 |       0
DOM (Events, Traversal, Ranges, etc.)  |             92 |       0
JAXP (Validation, SecurityProcessing)  |             53 |       0
XInclude                               |             41 |       0
Identity Constraints (IDC)             |             27 |       0
Misc (Utilities, Threading, etc.)      |             15 |       0
---------------------------------------|----------------|---------
Grand Total                            |         21,637 |   1,837

(Note: Tests requiring remote network access or containing known spec
inconsistencies within the W3C suites were properly tagged and conditionally
skipped to ensure a reliable offline build).
TBH there are a lot of real issues and bugs we should address. We get
periodic offers to do work like this that churns code without offering
user value.
I completely understand your point and I really appreciate you taking the time to give me such detailed feedback! I will focus on reviewing your open PRs first.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to