Pois é, definição de módulos hoje ainda é um problema...
As principais soluções que temos hoje são AMD e CommonJS. De um lado você tem o AMD que é totalmente assíncrono e resolve diversos problemas específicos do ambiente do browser, te fornece uma estrutura muito flexível para escrever código modular, uma imensidão de plugins e que funciona no browser sem precisar de um build step. De outro você tem a elegância e a simplicidade do CommonJS (e por sinal, o Node.js não segue a risca a implementação da API) onde cada arquivo tem seu próprio escopo. Node.js e CommonJS são uma bela dupla, mas quando se fala em ambiente de browser... Muita gente já tem o Browserify como padrão no workflow e está muito feliz com isso, mas você mesmo apontou a "massaroca" gerada por ele para que tudo "simplesmente funcione" no navegador. Fora isso você precisa de um build step para que seu código rode no browser, está condicionado a escrever código síncrono e começa a usar o NPM pra instalar coisas como Normalize e jQuery, que na minha humilde opinião, não faz o menor sentido.
Acho que o maior problema com AMD é a curva de aprendizado dos module loaders, especificamente com a ferramenta de build do RequireJS que realmente não é intuitiva. Você demora um tempo até entender o como e o porque das features.
Enfim, não vejo a hora de começar a usar Harmony modules em tudo (não só em projetos pessoais).
Pois é, definição de módulos hoje ainda é um problema...
As principais soluções que temos hoje são AMD e CommonJS.
De um lado você tem o AMD que é totalmente assíncrono e resolve diversos problemas específicos do ambiente do browser, te fornece uma estrutura muito flexível para escrever código modular, uma imensidão de plugins e que funciona no browser sem precisar de um build step. De outro você tem a elegância e a simplicidade do CommonJS (e por sinal, o Node.js não segue a risca a implementação da API) onde cada arquivo tem seu próprio escopo.
Node.js e CommonJS são uma bela dupla, mas quando se fala em ambiente de browser... Muita gente já tem o Browserify como padrão no workflow e está muito feliz com isso, mas você mesmo apontou a "massaroca" gerada por ele para que tudo "simplesmente funcione" no navegador. Fora isso você precisa de um build step para que seu código rode no browser, está condicionado a escrever código síncrono e começa a usar o NPM pra instalar coisas como Normalize e jQuery, que na minha humilde opinião, não faz o menor sentido.
Acho que o maior problema com AMD é a curva de aprendizado dos module loaders, especificamente com a ferramenta de build do RequireJS que realmente não é intuitiva.
Você demora um tempo até entender o como e o porque das features.
Enfim, não vejo a hora de começar a usar Harmony modules em tudo (não só em projetos pessoais).