I appreciate the weighty perspective, and I do not think we are misaligned
I am willing to slug out the difficult questions if you are.
I think that this is the weakest constraint - not building within a certain number of recent major versions. This is how some other languages handle it*, and allows for a truly-abandoned package to fall out of scope naturally.
* If they even include it implicitly at all; many esp older languages just outright do not assume that any packages from a previous major version are viable / included.
Hypothetically, after 2 major versions; if on major version n, the package was never built for n-1, AND was not buildable on the last minor version of n-2 (eg it was abandoned during n-2), we can release the name for reuse in major version n, effectively giving users at least one major version to reclaim their package’s registry name, and dying off when their package doesn’t build - and that can be part of the criteria (that if it still builds in a new major version it gets to keep its name, because sometimes lack of maintenance is indicative of stability, not abandonment).
I think it is understandable or even expected that in an up-to-date registry a package name by default refers to the most recent occupant.
They are being active in the maintenance of their project; they still retain total rights over how to structure and update it, regardless of users wishes. In these cases, the traditional ‘fork with new name’ is the appropriate venture, specifically because there is a need to differentiate the improved fork because the original still exists (that it is proceeding down an undesirable path is the impetus for forking).
That is a completely separate case from ‘this package is abandoned and taking up space and we want to reclaim the name for something else that builds on up-to-date systems’ - I’m just emphasizing the different subjects of forking a project, vs reclaiming a name. They are not necessarily coincident.
it is a labor of love
Oh I do agree - to be clear, I think the fork-renaming to crypton was the right thing to do, and I have no intent on forking OR reviving memory but rather am more concerned with the recycling of names - even though I myself am already consigned to taking a different name eg mem or memalloc, because according to my own proposed rules even if instituted it would be GHC 10 or 11 at the earliest before the name were up for recycling. I just don’t want to see this issue befall others.
I think it is sensible that when we use the term foo in a context, we expect that it refers to a package that builds for that contemporary version of eg GHC and hackage. Eg when using 9.x, I expect discussions to be centered around packages that build on 9.x and any references to former or obsolete versions to be called out as such. It is far easier to call out older versions as old, than it is to continually preface current conversation that I am using foo-2026 - and date-based versioning is one of the terminal ends of failing to deal with this issue.
Edited for minor typos.