Hi Kill Bill team,
I've been exploring the Kill Bill codebase and would love to contribute some Java modernisation improvements. I wanted to check in on the mailing list first before opening any PRs, as your CONTRIBUTING guide suggests.
The two categories I have in mind are:
1. StringBuffer → StringBuilder in toString() methods (Few files across account, invoice, jaxrs, payment, catalog, tenant, usage, util). StringBuffer is synchronised, but all the usages I found are local variables with no cross-thread sharing, so StringBuilder is the right choice. No behavioural change.
2. Manual prime-31 hashCode() implementations → Objects.hash() (Some files, all modules). The existing pattern uses the classic `result = 31 * result + (field != null ? field.hashCode() : 0)` idiom throughout. Objects.hash() produces equivalent results and is significantly more readable.
Both changes are purely readability and maintainability improvements — no API or behavioural impact, no Java version requirement beyond what's already in use.
A few questions before I start:
- Are these kinds of PRs welcome? Any concerns with either category?
- Do you have a preferred PR size or module ordering (e.g. one module per PR)?
- Is there a commit message convention I should follow?
Happy to start small with a single module to demonstrate the approach before expanding.
Thanks for the great project — looking forward to contributing!
Vinod Kumar M