Recently I've seen people pressuring @testcontainers for its Lombok usage.
Here is a tiny thread of _my_ opinion on the topic.
Spoiler: it _does not_ match some of @whichrich's and @Kiview's opinions, and does not represent @testcontainers view, at least not fully.
1/...
Here is a tiny thread of _my_ opinion on the topic.
Spoiler: it _does not_ match some of @whichrich's and @Kiview's opinions, and does not represent @testcontainers view, at least not fully.
1/...
There is a popular argument "project X have migrated away from Lombok".
First of all, "X" usually is some project that is being developed by a company, or an individual who earns money doing consulting for said project.
2/...
First of all, "X" usually is some project that is being developed by a company, or an individual who earns money doing consulting for said project.
2/...
@testcontainers is being developed by a few enthusiasts.
None of us are being paid for doing it, at best we get lucky and our employers allow us to spend _some_ of our time on it (btw, huge thank you, @VMware!)
We've very little time to do so and need to invest carefully
3/...
None of us are being paid for doing it, at best we get lucky and our employers allow us to spend _some_ of our time on it (btw, huge thank you, @VMware!)
We've very little time to do so and need to invest carefully
3/...
Does it hurt to see @testcontainers users having issues debugging it without switching to the .class mode?
A LOT.
And we do want to improve it. But hey, some rewrite their codebases to other languages that are impossible to debug in non-binary mode without plugins, right?
4/...
A LOT.
And we do want to improve it. But hey, some rewrite their codebases to other languages that are impossible to debug in non-binary mode without plugins, right?
4/...
BTW I created http://github.com/bsideup/jabel so that later we can use it in @testcontainers (if we decide to!)
We spend quite some time thinking of ways of how we can make users' life easier. Because that's what @testcontainers is, after all.
5/...
We spend quite some time thinking of ways of how we can make users' life easier. Because that's what @testcontainers is, after all.
5/...
Now comes the "fun" part... why we're using Lombok on a first place.
over the years @testcontainers have became quite big, while the team... Started with @whichrich who created it and later gained 2 more maintainers to help him.
(credits to @Kiview for the picture idea)
6/...
over the years @testcontainers have became quite big, while the team... Started with @whichrich who created it and later gained 2 more maintainers to help him.
(credits to @Kiview for the picture idea)
6/...
Our Lombok usage helps us to focus on what matters when we create new exciting features (most on our spare time!) and not get distracted with "field X is missing in toString/equals/hashCode"-like issues.
It also keeps the code base smaller and easier to navigate.
7/...
It also keeps the code base smaller and easier to navigate.
7/...
"But Lombok is not Java! You're loosing contributors!"
First, not sure who coined this sily statement that Lombok isn't Java (IMO Lombok is a doping for Java - forbidden but powerful).
Second, we have 810 forks + 239 contributors and counting! I think we're fine
8/...
First, not sure who coined this sily statement that Lombok isn't Java (IMO Lombok is a doping for Java - forbidden but powerful).
Second, we have 810 forks + 239 contributors and counting! I think we're fine

8/...
The project I am working on as my primary job uses plain Java.
Due to JVM's limitations, it contains a lot of duplicated code, inlined methods, weird code - everything to make it super fast.
But we have time to write and learn these constructs, we _get paid for it_.
9/...
Due to JVM's limitations, it contains a lot of duplicated code, inlined methods, weird code - everything to make it super fast.
But we have time to write and learn these constructs, we _get paid for it_.
9/...
TL;DR: don't compare @testcontainers to commercial OSS projects. We wish we had time to "drop Lombok", or "support X", or "fix Y".
Unfortunately, we don't
We're making choices, some may not be good, but sometimes we need them to stay sane and be able to continue
10/10
Unfortunately, we don't

We're making choices, some may not be good, but sometimes we need them to stay sane and be able to continue

10/10