# Industrial standards for Julia packages

**URL:** <https://discourse.julialang.org/t/industrial-standards-for-julia-packages/16300>\
**Category:** Internals & Design\
**Created:** [October 14, 2018, 5:15am UTC](https://discourse.julialang.org/t/industrial-standards-for-julia-packages/16300 "2018-10-14T05:15:02Z")\
**Posts on this page:** 1\
**Showing post:** 13

<div class="post-metadata">

**Author:** ![chakravala](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chakravala/32/6832_2.png) [@chakravala](https://discourse.julialang.org/u/chakravala)\
**Post date:** [October 14, 2018, 5:59pm UTC](https://discourse.julialang.org/t/industrial-standards-for-julia-packages/16300/13 "2018-10-14T17:59:38Z")

</div>

This issue has been discussed in multiple threads already, most famously

> [@Function name conflict: ADL / function merging?](https://discourse.julialang.org/t/function-name-conflict-adl-function-merging/10335):
>
> Is there any reason why Julia needs me to fully qualify the function name when the argument types are clear and there shouldn’t be any problem with multiple dispatch? Case 1: load JuliaDB before defining Foo julia\> using JuliaDB julia\> stack( stack(t::D) where D\<:Union{IndexedTables.NDSparse, IndexedTables.NextTable} in IndexedTables at /Users/tomkwong/.julia/v0.6/IndexedTables/src/reshape.jl:32 stack(t::D, by; select, variable, value) where D\<:Union{IndexedTables.NDSparse, IndexedTables.Next…

There are a few issues with the whole function merging thing, one of my solution is the `ForceImport` package

> **[GitHub - chakravala/ForceImport.jl: Macro that force imports conflicting...](https://github.com/chakravala/ForceImport.jl)**
>
> Macro that force imports conflicting methods in modules - GitHub - chakravala/ForceImport.jl: Macro that force imports conflicting methods in modules

which helps with selective managing of the local merging of namespaces (at least for `Base` methods). Now, I’m thinking I could extend this package to work with a specified package, not only `Base` methods.

Here is an explanation of how it is used

> [@Operations on expressions](https://discourse.julialang.org/t/operations-on-expressions/13666/12):
>
> The principle which all @force users must keep in mind is this: the goal is to extend Base methods locally without affecting the global method table by type piracy, and to be able to import them into another package to have the same local effect. In order to avoid the type piracy, one must define a new local complementary n-ary method that will fall back on the base method with Any arguments. Then there will be a tiered alternative dispatch layer within the local package scope that redirects to …

---

_[View the full topic](https://discourse.julialang.org/t/industrial-standards-for-julia-packages/16300)._
