But yes, if every library took a top level namespace name, the odds of a namespace collision go up, and you'd have to hack on the library source to fix it. Java really needs a built-in module system to address this
This is silly. Java *already* has a mechanism to address this, and it's the aforementioned reverse-domain naming convention.
The problem is arrogant devs who think that somehow their library is exempt from the naming rules.
I started new little game and this is how I organized it
--src
--------ba.jaso.logic
--------ba.jaso.modules
--------ba.jaso.ui
--------ba.jaso.resources
.
.