Who should own a package extension? Does it matter?

I want to ensure that my package, CliffordNumbers.jl, interoperates with Unitful.jl, and that parametric types dependent on both packages (like Quantity{<:AbstractCliffordNumber}) have operations defined on them consistently (such as the wedge product, ).

However, I’ve found myself wondering whether the package extension should belong to CliffordNumbers.jl or Unitful.jl. On one hand, CliffordNumbers.jl provides a numeric type, and I think it makes more sense for Unitful.jl to own the extension, since it is what wraps the AbstractCliffordNumber instances in its own AbstractQuantity type. On the other hand, I’m the one working on support for this feature and I own CliffordNumbers.jl.

Outside of considerations of who is doing the development: is there any reason to favor having the extension reside in one package over the other?

1 Like

My understanding is that this kind of social and not technical aspects defines the best location for the extension. From the technical standpoint, the extension will be loaded whenever both packages are loaded anyway.

1 Like

Taking it to extremes, separate developers of the packages B, C, D, E, etc can unilaterally make extensions with a package A (though collaboration would help in some ways), and it seems unrealistic for the developer of package A to absorb all those extensions into their own development. They might not have the knowledge or desire to work on most of the extensions, either.

1 Like