Julia needs a unified industrial standard to guide the API designs.
For example, we have
X operator in Pauli algebra. Although the entity is same, it can be defined independently with different names (such as
PauliX) in different packages. When one uses two of such packages at the same time, these packages do not share methods!
Unlike OOD languages, Julia types/methods are designed to be open, methods defined on the same entity should be able to be used at the same time.
Here, I suggest to build an official package
AbstractJulia.jl, which includes abstract types and methods from various fields, users can submit PR to make it better.
For example, it contains an abstract type like
AbstractPauliX. People can either subtype it or dispatch methods on it, just like extending Base packages.
Here is an example to show how developers can benefit.
Cliffords.jl is a small and neat package, but sadly, I won’t use its types for developing my own packages, just because it is small and its Pauli gates do not meet some requirements in my projects. To use
Cliffords.jl, I have to make some dirty copies out of it. If some of its methods are defined on standard abstract type tree in
AbstractJulia, I can extend
AbstractJulia instead without copying.
I am going open a repo for this if JuliaLang is not going to have one, how do you like this idea?