JuliaGeometry / Quaternions.jl

A Julia implementation of quaternions
https://juliageometry.github.io/Quaternions.jl
MIT License
115 stars 37 forks source link

Split `Octonion` into another package? #90

Closed hyrodium closed 2 years ago

hyrodium commented 2 years ago

I think the practical uses of Quaternion and Octonion are totally different, and these types don't have to be provided in one package.

sethaxen commented 2 years ago

I agree, but also, I don't see major benefits from splitting Octonion to its own package. If it's here, we can have a uniform API and implementation, and we support legacy code. I doubt its inclusion changes the load time of this package much.

Probably DualQuaternion could/should be its own package, as this is where our DualNumbers dependency comes from. Without this dependency, the package loads in ~12ms even with Octonion, but with this dependency the load time is ~130ms. And as noted in #79, DualQuaternion could maybe be delivered without any additional code by releasing the Real type constraint on Quaternion.

sethaxen commented 2 years ago

It seems no GitHub-hosted packages use Octonions in package code. LinearMaps.jl uses it in their tests. This is a good argument for moving Octonions to its own package. Do octonions have geometric applications? Should an Octonions.jl package live in JuliaGeometry as well or moved to an org like JuliaMath?

hyrodium commented 2 years ago

Currently, I don't have applications for Octonion. Should we ask this topic on Julia Discourse or Slack?

sethaxen commented 2 years ago

As others commented on Slack, either JuliaMath or JuliaGeometry would be a good host org for this package, though JuliaGeometry might make more sense due to its historical connections to the Quaternions package.

Neither of us have rights in these orgs, but we don't need to to make the package and register it; it's easy to migrate the package to an org after registration. I do think it's important to preserve the contribution history, which we can do with git filter-branch. I've done this before, so I can make the repo, add you as an admin on it, and register it. Then we can transfer it when we get the ear of someone with the necessary org admin rights.

hyrodium commented 2 years ago

I see. I don't have experience with git filter-branch, so it would be nice to be invited to your repository:+1: After creating the repo, we can add warnings to Octonion constructor, and remove it in the next breaking release.

sethaxen commented 2 years ago

I've created the repo at https://github.com/sethaxen/Octonions.jl and invited you to be a collaborator.

sethaxen commented 2 years ago

I registered the package as-is to start the clock for the 3-day embargo: https://github.com/JuliaRegistries/General/pull/68578. We can make any other changes we like after the initial release.