Now, that said, proofs. Regarding how it affects package developers, most users simply have no clue that using scoped names would solve their problems:
* [https://github.com/timholy/Images.jl/issues/141](https://github.com/timholy/Images.jl/issues/141) * [https://github.com/JuliaStats/StatsBase.jl/issues/208](https://github.com/JuliaStats/StatsBase.jl/issues/208) * [https://github.com/MichaelHatherly/Docile.jl/issues/79](https://github.com/MichaelHatherly/Docile.jl/issues/79) * [http://stackoverflow.com/questions/37926690/qualifying-confilicting-functions-in-julia](http://stackoverflow.com/questions/37926690/qualifying-confilicting-functions-in-julia) * [https://groups.google.com/forum/#!msg/julia-users/9XJX3CJrq10/KpR_K3UICAAJ](https://groups.google.com/forum/#!msg/julia-users/9XJX3CJrq10/KpR_K3UICAAJ) * [http://finance-opt-tools.readthedocs.io/en/latest/tut/solversel.html](http://finance-opt-tools.readthedocs.io/en/latest/tut/solversel.html) * [https://github.com/JuliaStats/DataFrames.jl/issues/877](https://github.com/JuliaStats/DataFrames.jl/issues/877) * [https://github.com/JuliaStats/DataArrays.jl/issues/168](https://github.com/JuliaStats/DataArrays.jl/issues/168) * [https://github.com/JuliaLang/julia/issues/15965](https://github.com/JuliaLang/julia/issues/15965) * [https://github.com/JuliaLang/julia/issues/19116](https://github.com/JuliaLang/julia/issues/19116) * [https://github.com/JuliaStats/DataFrames.jl/issues/1003](https://github.com/JuliaStats/DataFrames.jl/issues/1003) * [https://github.com/JuliaStats/DataFrames.jl/issues/1094](https://github.com/JuliaStats/DataFrames.jl/issues/1094) * [https://github.com/JuliaStats/DataFrames.jl/pull/929](https://github.com/JuliaStats/DataFrames.jl/pull/929) * [https://github.com/MikeInnes/Lazy.jl/issues/9](https://github.com/MikeInnes/Lazy.jl/issues/9) * [https://github.com/MikeInnes/Lazy.jl/issues/27](https://github.com/MikeInnes/Lazy.jl/issues/27) * [https://github.com/JuliaML/Roadmap.jl/issues/8](https://github.com/JuliaML/Roadmap.jl/issues/8) (end) Or even if they do, such warnings **are** considered bugs by developers and are therefore "fixed" by resorting to different methods (look at these pages if you are not convinced)... prefixing, opening bug reports on other developer's package, renaming or even not exporting: > Let's just not export them, then people can call Lazy.cycle etc. if they need > it. Prefixing for instance is quite common, e.g. (and I can assure you that this is only a minute sample, look for "export"-ed function names): * [https://github.com/JuliaCloud/AWS.jl/blob/master/src/AWS.jl](https://github.com/JuliaCloud/AWS.jl/blob/master/src/AWS.jl) * [https://github.com/JuliaPackaging/Git.jl/blob/master/src/Git.jl](https://github.com/JuliaPackaging/Git.jl/blob/master/src/Git.jl) * [https://github.com/JuliaIO/GZip.jl/blob/master/src/GZip.jl](https://github.com/JuliaIO/GZip.jl/blob/master/src/GZip.jl) * [https://github.com/yuyichao/LibArchive.jl/blob/master/src/LibArchive.jl](https://github.com/yuyichao/LibArchive.jl/blob/master/src/LibArchive.jl) * [https://github.com/simonster/MAT.jl/blob/master/src/MAT.jl](https://github.com/simonster/MAT.jl/blob/master/src/MAT.jl) * [https://github.com/randyzwitch/OAuth.jl/blob/master/src/OAuth.jl](https://github.com/randyzwitch/OAuth.jl/blob/master/src/OAuth.jl) * [https://github.com/bnewbold/PyX.jl/blob/master/src/PyX.jl](https://github.com/bnewbold/PyX.jl/blob/master/src/PyX.jl) * [https://github.com/bastibe/WAV.jl/blob/master/src/WAV.jl](https://github.com/bastibe/WAV.jl/blob/master/src/WAV.jl) Is really wavread that much better than wav.read? For a Nimean (or whatever), the answer is most certainly "no" as wavread, wavRead and wav_read (to cite a few) are already considered identical in Nim. So, if one is ready to write wavread or wav_read, why not wav.read? Namespace prefixing has also another advantage: if all the functions are defined as wave_file_codec_* (wave_file_codec_read, wave_file_codec_write, ...), one would have to write a custom macro to rename them to something sane whereas a WaveFileCodec module can always be trivially renamed wav (wav.read, wav.write, ...). But all that said putting namespaces everywhere, especially in small or "well-designed" programs, brings very little value with regard to the potential increase in verbosity. And unfortunately I have no straightforward solution either.
