Those are good points. To me, the fact that 2.x will be around for a long time 
is one of the main reasons why I even considered this idea. I’d like to hear 
more from the community first, though.

—
Matt Sicker

> On Apr 17, 2022, at 15:42, Volkan Yazıcı <vol...@yazi.ci> wrote:
> 
> Thanks for raising this subject Matt, I am certainly interested in porting
> the plugin system in 3.x to 2.x for a very simple reason: because plugins
> are broken in 2.x. Let me elaborate on this and some more:
> 
>   1. I was working on LOG4J2-3082 (support external serializers, e.g.,
>   Jackson, in JTL) and there I needed `@RequiredClass`. Ralph already
>   implemented this in `master`, I just need to copy it to `release-2.x`,
>   after all it is just a `@ConstraintValidator`, right? Right... But it
>   simply won't work. Because JTL, as `PatternLayout`, uses `PluginManager` to
>   load plugins and that doesn't support `@ConstraintValidator` et al.?! I've
>   discussed this with Matt and we came to the conclusion that porting the new
>   plugin infra from 3.x to 2.x is easier compared to fixing the problem in
>   2.x.
>   2. 3.x plugins use `ServiceLoader`, which doesn't suffer from problems
>   (e.g., maven-flattening issues) 2.x does.
>   3. 3.x plugins are backward-compatible, i.e., they support 2.x plugins.
>   4. Plugin refactoring is one of the most important changes in 3.x. By
>   porting this to 2.x, we will be testing it earlier and zeroing the chances
>   of a surprise in the domain of plugins while migrating from 2.x to 3.x.
>   5. 2.x is here to stay, probably for decades.
> 
> Regarding the *"I can start using the plugins package inside core in 2.x so
> it’s the same package name as in 3.x"* option, I'd indeed prefer that.
> Though let's first have a resolution on whether to proceed or not.
> 
>> On Sat, Apr 16, 2022 at 7:15 PM Matt Sicker <boa...@gmail.com> wrote:
>> 
>> Hey all, I’m considering porting the new DI system back to 2.x (but put
>> all in core as there’s no plugins module there) as there seems to be
>> interest in using this earlier than in 3.0. While I’d be willing to do
>> this, I wanted to see what anyone else thinks about the idea. I’d likely
>> begin on a branch or fork, so it’d be nice to get another 2.17.x release
>> out before I merged anything about this.
>> 
>> Only real disadvantage of doing this is that the packages move around a
>> little in 3.x, so I’ll have to add more duplicate annotations in 3.x
>> afterwards to maintain compatibility. Although maybe I can start using the
>> plugins package inside core in 2.x so it’s the same package name as in 3.x.
>> 
>> —
>> Matt Sicker

Reply via email to