Modules absolutely have to be independent... One wonders, how hard can it be? Just take the dependent code off the other module and store it independently of the modules, and have them require it on demand. Presto, no need to deal with strange module dependencies. It's just a question of organizing the code a bit.