Changing the name of a package

I have been developing the package RecurrenceAnalysis for some time. I used that name because the usual way of calling what it does looked too long for a package name (“Recurrence Quantification Analysis”), and acronyms like “RQA” are discouraged in the guidelines.

But now that I could release a version for Julia 1.0 I feel like updating its name, perhaps to the also commonly used “RecurrencePlot” (originally there was no plotting support, but now there will be).

I might just mirror the existing Github repository to another one with a new name, and submit the new one to be registered. But what should I do with the old package (already registered)? Is there a way to tag it as “defunct” or “superseded by”…?

Or should I do something different?

RecurrenceQuantificationAnalysis.jl seems good to me.

Or just RecurrenceQuantification.jl.

3 Likes

I like it “RecurrenceQuantification.jl” as well.

Neverthless, my main question is about what is the good practice if a new package supersedes an already registered package.

I think this has been already asked several times, but here are the steps:

  1. move the repository on GitHub to the new name (so that you keep stars, users watching it, record of issues and pull requests, etc…)
  2. in the new repository, actually change the name of the package (move the src/RecurrenceAnalysis.jl to the new name, adapt elsewhere as needed)
  3. [this is optional, but a good way to redirect users to the new package] Fork the new repository on GitHub to the old name. In this repository (with the old name), prepare a new version of the package. This should issue a warning telling the users to move to the new package. For example, right after the beginning of the module you can add:
    @warn("This package is deprecated.  Use NEWNAME.jl instead:
               pkg> update
               pkg> add NEWNAME")
    
    As an alternative, the warning can be moved to the init function of the module, so that every time people will load it will get the info.
    In addition, this new version of the package with the old name should set an upper bound to the allowed Julia version. I see that currently your package requires at least Julia 0.7. Set the version 1.0 as an upper bound (excluded) in this way:
    julia 0.7 1.0
    
    Tag a new version of the package and update accordingly in METADA.jl (if you use attobot, you don’t have anything to do but crafting a new release on GitHub).
  4. Register the new package in METADATA.jl
  5. Enjoy

Step 3 is optional in the sense that instead of doing all of that I suggested you can simply set an upper bound on METADATA.jl to all the versions of your package, but I recommend doing a new release that informs the users to switch to another package.

You can see as an example this package: GitHub - giordano/CmplxRoots.jl: DEPRECATED PACKAGE. Use PolynomialRoots.jl instead I made it very clear in the repository description that the package is now deprecated, I also emptied the README.md and redirected the users to the new package

8 Likes

How can this be done effectively? I want to copy PDMP.jl into here while keeping stars, etc. See also this

Instead of copying PMDP.jl to another repository, what you want to do is to change the name of the former. You may do this in the “Settings” tab of the repository page in Github.

Since you already created the repository with the new name, you should delete it first (also in settings). I guess you just created it and there is no clone pointing to it with contents that might conflict, so deleting it should be safe in this particular case.

1 Like