FYI: I'm going to commit a minor list taboo and comment in a thread I'm
not caught up on -- I wrote this on the plane based on some thoughts I had
last night and this morning, and even though i don't have time to catch up
with this thread, I wanted to put this information out there since i
probably won't be online again for a few days...
---
I was reading some interesting stuff about "controversy" in an OSS project
called Pidgin. Based on what I read, the issue there is *vastly*
different then the question of wether or not we should change the logging
API used by Solr, but some of the comments I read did cause me to do a
little "Soul Searching" on the topic of Developers and the user
communities they (for lack of a better term) "serve". I started wondering
if I was being overly dogmatic about logging and not respecting the "will
of the community". I started to ask my self: what would it take for me to
change my opinion on this issue from a "-1" to a "0" or "+1" ?
The various objections I have to switching away from JUL (aka: JDK
Logging) to anything else can be boil down to three main "themes" ...
1) JUL is "the right" API.
2) Making a major change like this could break logging for users that
want to use JUL implementations as it was intended.
3) Reliance on a third party library for something as core as logging
could expose us to class incompatibility issues.
#1, although something I firmly believe, is admittedly subjective. If
doing "the right thing" isn't what the community as a whole wants to do,
then I just have to respectfully disagree with the community. This point
alone basically garuntees that I'll never vote "+1" to switching away from
JUL.
#2 and #3 are admittedly hypothetical situations, but if either did arrise
they would be *massive* failures of the Solr project, so we need to be
dilligent to protect against those possibilities.
If a large subset of the community is in favor of moving away from JUL
towards some alternative (and I'm not sure that's true), and community
members are willing to extensive testing against the possibility of these
problems (using a large set of different Servlet Containers), then I would
be willing to withdraw my objection (ie: vote "0") ... I won't stop
arguing that JUL is "the one true logging API" but I won't stand in the
way of "progress" either.
The caveat to this is that even if a good alternative logging
"abstraction" exists, and we test it extensively, and have a high
confidence that it will play nicely with JUL implementations, I would
strongly suggest that we:
a) Use it only if it's "default" behavior can be set to defer to the
configured JUL LogManager (This is basicly "mandatory" in my
opinion, since otherwise Solr won't be backwards compatible)
b) Note in our documentation that Solr's usage of this abstraction is
"experimental" and may be changed in future releases (If we
encounter problems with it or decide there is some *better*
abstraction) and that configuring a JUL LogManager is the
recommended way to recieve logging messages from Solr.
-Hoss