Please vote. Comments are encouraged!
- Yes, please teach this!
- No, I’m not interested.
Perhaps because I do not have a lot of recent working experience with Java, one of the things I find most confusing in Clojure is how to detect and fix problems due to conflicting dependencies.
For instance, I was unable to run the demo project in a basic heroku walkthrough to get started. After a lot of head-scratching, I realized it worked fine when I erased my
~/.lein/profiles.clj. One of the libraries listed as a user dependency was in some way conflicting with the project. (I’m not sure which one it was, but I think it was
But my larger problem here is this:
- I had no way of understanding from the error message that it was this library in my profiles that “broke” the project. This was just a dumb luck guess on my part. How should I have been able to know this?
- I do not even conceptually understand why a library in my profiles could break a project from loading. If I am not invoking the library, when does it have an opportunity to interfere?
- I do not understand how to watch for and prevent these kinds of conflicts. If I am adding a new dependency to my profiles, or to a project, what should I check to ensure it does not conflict with something else? Is there any way to do this even in theory? Or in practice? Right now my only method is to see if something mysteriously breaks, not understand the reason why, and keep throwing out dependencies until it works again. This is not engineering.
I would love a mentoring topic that provided me a way to understand the issues fundamentally, and advice about working practices to deal with them practically. But the understanding part is more important!