It's a great suggestion and we must in general keep our eyes open for suitable tasks for newcomers.  I feel there are also reasons for the making this specific case one we do ourselves, however.  If Lombok's very presence stops newcomers, because they struggle to get going with their dev tools of choice then, for as as long we have it, they cannot go directly to working on e.g. a SQL function or a plugin.  They must either make their tools compatible or do our unlomboking for us first.

Entirely separately, Vova volunteered in a Slack message to remove Lombok based on this email thread.  He knows exactly where it's been applied and what we need from the replacement code in those places, so I think it would be very quick and error-free for him...


On 2022/01/24 11:24, luoc wrote:
I recommend creating this small task on GitHub Issues or JIRA, adding the 
"newcomer" tag to provide a good chance (to contribute) for newcomers.

Supporting new developers is the best thing for the Drill community.

Thanks.

2022年1月24日 下午5:01,James Turton <[email protected]> 写道:

Okay, let's approach it that way around: remove it entirely, and Lombok can 
make a return to plugins *after* they start being built and tested away from 
the main tree, if any plugin authors want it.

P.S. Plugins did indeed not annotate any data objects.  Lombok's use there, in 
what I've seen, has been for the automatic generation of stuff like 
constructors, getters, setters, loggers, toStrings and hashCodes.  That's just 
for interest's sake, not an effort to remotivate Lombok's inclusion.

On 2022/01/24 10:16, Paul Rogers wrote:
A quick check of the source suggests that the Easy Format config builder
(which is a nice addition) does not use Lomboc. Someone coded up (or had
their IDE code up) the setters one-by-one. Makes sense, Lombok isn't for
the builder pattern.

Note that, allowing Lomboc in any part of Drill is the same as allowing it
everywhere. The old CS thing that the only numbers that matter are 0, 1 and
infinity. To do a PR, all tests should pass, which means that the IDE needs
to be able to debug any that have problems. If any plugin uses Lomboc, then
developers have to wrestle with it. (But, what is a plugin doing with data
objects?)

So, perhaps remove it entirely for now. It can be added back for extensions
when those extensions are separate projects. (Though, adding that
dependency on one extension adds it for everyone. Will there be Lomboc
version conflicts? Should we wait for class loader isolation before
allowing it back?)

In general, Drill is so large that it should not take on more dependencies
unless they are a huge win. This is a reason to move the obscure plugins
out of the core: mucking with distributed systems should also require one
to muck with Excel.

- Paul

On Sun, Jan 23, 2022 at 11:59 PM James Turton <[email protected]> wrote:

I'll prepare a PR that unlomboks everything except contrib.  Since we're
talking about contrib splitting off into one or many independent code
bases (c.f. install "Drill 2 and plug-in organisation"), working to make
it conform to coding standards that we're selecting for core Drill
probably won't pay.

On 2022/01/23 01:36, Charles Givre wrote:
I guess the question is do we de-lombok what has already been done?  I
really like the builders for plugin configs, but I'm generally in agreement
that if it is causing problems building, we should ditch it.
Best,
-- C



On Jan 22, 2022, at 5:02 PM, Ted Dunning <[email protected]> wrote:

The Lombok story is better in Intellij, possibly because the Lombok devs
use IntelliJ like the majority of devs. Once I knew to install the
plugin,
things were at least comprehensible.

But the problem is that it isn't obvious. As a newcomer, you don't know
what you don't know and because Lombok's major effect is code that isn't
there, it isn't obvious where to look.

The point about it not helping that much due to Drill's design (good
point,
paul) is apposite, but I think the naive reader issue is even bigger.

Net, as a person who isn't developing anything for Drill just lately, I
don't think it's a good idea at all.



On Sat, Jan 22, 2022 at 6:37 AM luoc <[email protected]> wrote:

Hi all,

I have a story here. In Oct 2021, I upgraded Eclipse to the latest
release
(2021–09) and then found out that the Lombok dependency was added Drill
repository, So I installed Lombok (as a new plugin) from Eclipse
Marketplace as I used to. Finally, restarted the IDE and prepared to
open
the Drill project, but it is crushed cause by the issue #2956 <
https://github.com/projectlombok/lombok/issues/2956>, Lombok was not
available until I looked at a temporary solution..

I use both Eclipse and IDEA, but I use Eclipse more often. I have no
objection to the use of Lombok, but suggest the following three points
:
1. Could we use Lombok only in `drill-contrib` module?

2. Could we agree not to use Lombok in common module?

3. It is best to update the dev documentation to describe this results
if
we continue to use Lombok.

In fact, I have the same idea as Paul, more about balancing choices.

Thanks.

2022年1月22日 下午5:34,Paul Rogers <[email protected]> 写道:

Hi All,

I look at any tool as a cost/benefit tradeoff. If Drill were a typical
business app, with lots of "data objects", then the hassle of Lomboc
might
be a net win. However, the nature of Drill is that we have very few
data
objects. We have lots of Protobuf objects, or Jackson-serialized
objects,
but not too many data objects of the kind used with object-relational
mappers.

On the other hand, I had to spend an hour or so trying to figure out
why
things would not build in Eclipse. Then, more time to figure out how
to
install the half-finished Lomboc plugin for Eclipse and various other
fiddling.

So, I'd guess, on balance, Lombok has cost, and will continue to cost,
more
time than it saved avoiding a few getter/setter methods. And, I agree
with
Ted, Eclipse (and, I assume IntelliJ), is pretty quick at generating
those
methods.

Since Lomboc has a cost, and is not a huge win, KISS suggests we avoid
adding extra dependencies unnecessarily.

That's my 2 cents...

- Paul



On Fri, Jan 21, 2022 at 8:51 AM Ted Dunning <[email protected]>
wrote:
A couple of years ago, I had a dev introduce Lombok into some code
without
me knowing. That let me be a classic naive user.

The result was total confusion on my part. Sooo much code was being
automagically generated that I couldn't figure out the code and
spent a
lot
of time chasing my tail and very little time looking at the crux of
the
code.

My own personal preference is either

- use a language like Julia if you want magic. It's fantastic and
all to
have amazing stuff and coders expect to see it.

- use an IDE to generate the boiler plate and put it into its own
little
annex in the code with the interesting bits near the top of classes.
That
lets debuggers and IDEs that don't understand Lombok to function
without
impairing readability much. Concurrent with that, use discipline to
not
do
strange things like changing the expected meaning of the boilerplate.

That's my preference, but I wouldn't want to push that preference
very
hard. My own prioritization is on readability of the code by
outsiders.


On Fri, Jan 21, 2022 at 2:25 AM James Turton <[email protected]>
wrote:
Hi again Devs

This one is simple to describe.  Lombok entered the Drill code base
this
year, but not everyone feels that Lombok is appropriate for every
code
base.  To my, fairly limited, understanding the advantage of Lombok
is
that boilerplate code is reduced while the disadvantage is the
deployment of code generation magic that can have untoward effects
on
build-time tools and IDEs.

So here is a chance to opine on Lombok if you'd like to.  My own
opinion
is very near neutral and goes something like "It burned me a bit
once,
but hasn't since, and less boilerplate is nice.  I guess it can stay
<shrug>.  I hope I don't regret this one day."

Regards
James


Reply via email to