I am currently developing/maintaining a java/maven library. Previously I was using a-lot of additional libraries, after removing the not required ones I only had one remaining: SLF4J api. I want to depend as less as possible to prevent a dependency hell to the end-users.
I thought having slf4j would be fine as a-lot of other projects also use it. I didn't include a binding, so the end-user doesn't need to exclude it explicitly when having another type of binding. So one day someone included a slf4j binding in his project when using my library. This person was not using slf4j at all but was using the java util logging and therefor he was forced to add a binding.
So a solution for this use case on my library side would be maybe drop slf4j api and using the java util logging, but what would be the downside of switching in this case? Will the end-user still be able to configure his own logging and the logging my library when using it together?
Or should I stay with slf4j api and include a default binding which is mark optional within maven. Or not mark optional and provide it as a transitive dependency to the end users.
To be honest, I am not very experienced to decide what would be a proper solution and I hope you guys could help to make it more clear for me.