Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How do we remove crates? #95

Open
icefoxen opened this issue Aug 8, 2018 · 21 comments
Open

How do we remove crates? #95

icefoxen opened this issue Aug 8, 2018 · 21 comments

Comments

@icefoxen
Copy link
Contributor

icefoxen commented Aug 8, 2018

There's clutter-y chaff in some lists... corange-rs is 3rd in engines even though it hasn't been touched in 3 years.

There has to be objective criteria for removing things or else it can get contentious. One person says "We should remove A" and then the owner of A says "wait, why?" and there's an argument. An off-the-top-of-my-head idea for how that might work is, a crate gets removed if:

  • A crate is unmaintained and has no commits for X time (6 months? A year?)
  • And it isn't obviously useful in its current state (a crate such as an audio codec may not get many commits because it's basically done)
  • And someone submits a PR for the removal
@mbillingr
Copy link
Contributor

mbillingr commented Aug 8, 2018

What objective criteria can determine usefulness?

Hmm.. maybe no such criteria are needed if the removal PR is required to contain a succint rationale...

@icefoxen
Copy link
Contributor Author

icefoxen commented Aug 8, 2018

I dunno! Any suggestions? :D

@mbillingr
Copy link
Contributor

No good suggestions from my side :)

A few objective criteria that do not quite measure usefulness come to mind:

  • number of recent downloads on crates.io
  • compiles on current Rust
  • declared abandoned by author/maintainer

@doppioslash
Copy link
Collaborator

We could grey abandoned crates out, or put them in a separate category.
There may still be useful code in them, for reference, so I wouldn't like to just chuck them out.

@workingjubilee
Copy link

workingjubilee commented Mar 7, 2020

I suggest having the lowest threshold being editions since those are a thing now: about once/edition, if it wasn't touched in ~an edition and doesn't represent a "finished work" that is thus "continuously useful"? It gets booted (or downgraded to a historical archive) without comment required. Essentially, someone who was introduced in 2019 to Rust (hi!) will be very confused by the code in a library that was written at the beginning of 2015, when Rust 1.0 was still alpha, so even reading those is less useful.

And from where I am standing, I still kind of blink at the idea of trying to use anything written before 2018. It's still legible, but I am cozier with the newer idioms.

@icefoxen
Copy link
Contributor Author

icefoxen commented Mar 8, 2020

That's... actually not a terrible idea IMO.

@PatrickHoward
Copy link

PatrickHoward commented Jun 23, 2020

Leaving comment here instead of opening a new issue about this..
It looks like there are also some crates that have been yanked/discontinued from Crates.io... nCollide in particular (which has been replaced with nCollide2D and nCollide3D) is the one that comes to mind.
So might I propose adding another criteria for removing crates from the website's list?

  • If a crate has been removed from Crates.io

@ozkriff
Copy link
Member

ozkriff commented Oct 3, 2021

One more case for the historical archive, i guess? https://amethyst.rs/posts/amethyst--starting-fresh

@stefnotch
Copy link

stefnotch commented Feb 28, 2023

I propose at least having a the following rules

  • if the the current maintainers of a crate clearly deprecate it (e.g. Amethyst, nCollide) => remove it or replace it with the new version
  • if it looks unmaintained, fulfilling all of the criteria (subject to debate)
    • no updates for a year
    • author and maintainers don't seem to respond
    • not a finished crate (e.g. an audio codec can be a finished crate)

If a crate seems useful, but isn't being maintained, then it might be worthwhile to

  • either remove it, since recommending an unmaintained crate doesn't seem ideal
  • or point it out that it's unmaintained, and thus encourage people to step up and hopefully get the crate back into shape :)

I also think that the consequences of removing a crate too soon are not that severe, because re-adding it isn't hard at all. Instead it's way more useful to keep these lists a relatively current snapshot of the state of the ecosystem.

@coderedart
Copy link

This issue has been open for 4+ years now. what even is this blocked on?

I thought arewegameyet.rs itself was abandoned because it showed so many old entries like amethyst or conrod etc.. which are explicitly abandoned by the authors themselves.

The older projects just increase noise and diminish the utility of the website imo.

This is not an "official" list, so we don't need rigid rules for deprecation either.

  1. Did the project have any updates in the past six months? No? then deprecate.
  2. If the project is done. Then, keep it.
  3. If the project is explicitly abandoned by the authors with an announcement? deprecate.

If the rules don't work, they can be evolved later. But listing the abandoned projects mixed with the latest maintained projects is just not the way.

@17cupsofcoffee
Copy link
Collaborator

17cupsofcoffee commented Jun 28, 2023

I definitely think dealing with this is long overdue - at the very least it'd be worth us ditching any libraries that are obviously dead (ancient archived repos, etc), but I do think the rules you suggested sound reasonable.

I also think we're going to have our hand forced by API rate limits sooner or later, as the more libraries we have on the site, the more calls we're making into Crates.io/GitHub every time we publish (see #378).

I think the main blockers to moving forward are:

  • We need to decide whether we de-emphasise the old items or just remove them (my vote would be for the latter, as I'm not convinced that many people would look at the archives, but I could be wrong!).
  • Someone needs to actually do the work of figuring out which crates are in scope for removal.
  • Ideally, we should figure out a process for pruning stuff in the future so that we don't end up back here in another four years...

You may notice that the common factor in all of these is actually having time to do the thing - everyone in the gamedev working group has been pretty busy lately, so I think nobody's really had the bandwidth to make this a priority.

@coderedart
Copy link

I am not in the gamedev group, but i can atleast go though all the projects and make a list of all the projects that are either explicitly abandoned (with a link to the announcement) or inactive for more than one year.

Is that acceptable?

@17cupsofcoffee
Copy link
Collaborator

17cupsofcoffee commented Jun 28, 2023

If you want, that'd be a big help, I think :) Once we've got a shortlist, I think it'll be easier to figure out whether the rules need any tweaks.

@coderedart
Copy link

coderedart commented Jun 29, 2023

Name Reason Last Activity Date Repo link
alto archived July 2020 https://github.com/jpernst/alto
ambisonic no activity Feb 2021 https://github.com/mbillingr/ambisonic
amethyst archived April 2022 https://github.com/amethyst/amethyst/
amethyst_network archived April 2022 https://github.com/amethyst/amethyst/
arcana no activity July 2022 https://github.com/arcana-engine/arcana
audir no activity Dec 2020 https://github.com/norse-rs/audir
beehive no activity May 2020 repo deleted :(
bmfont no activity Jan 2021 https://github.com/KalitaAlexey/bmfont-rust
building-blocks no activity Feb 2022 https://github.com/bonsairobo/building-blocks
calx-ecs no activity July 2018 https://github.com/rsaarelm/calx-ecs
caper no activity Jan 2022 https://github.com/shockham/caper
cgmath no activity April 2022 https://github.com/rustgd/cgmath
chariot no activity April 2018 https://github.com/ChariotEngine/Chariot
coffee no activity May 2020 https://github.com/hecrj/coffee
conrod abandoned Jan 2022 https://github.com/pistondevelopers/conrod
const-tweaker no activity Aug 2021 https://github.com/tversteeg/const-tweaker
corange-rs no activity 2015 https://github.com/lucidscape/corange-rs
crayon no activity May 2019 https://github.com/shawnscode/crayon
crow no activity Oct 2021 https://github.com/lcnr/crow
crystalorb no activity Jan 2022 https://github.com/ErnWong/crystalorb
dces no activity May 2022 https://gitlab.redox-os.org/redox-os/dces-rust
distill no activity Nov 2021 https://github.com/amethyst/distill
MuOxi no activity Sep 2021 https://github.com/duysqubix/MuOxi
ears no activity April 2020 https://github.com/nickbrowne/ears
enet no activity March 2022 https://github.com/futile/enet-rs
euler no activity June 2018 https://github.com/alteous/euler
ezing no activity Nov 2018 https://github.com/michaelfairley/ezing
fmod no activity July 2021 https://github.com/GuillaumeGomez/rust-fmod
froggy no activity Sep 2020 https://github.com/kvark/froggy
fungui no activity Jan 2019 https://github.com/thinklibs/fungui
gfx-hal maintenance mode Aug 2021 https://github.com/gfx-rs/gfx
glsp on hold Mar 2020 https://github.com/fleabitdev/glsp/
gme no activity Mar 2021 https://github.com/JayPavlina/Game-Music-Emu-Rust
graco no activity Feb 2020 https://gitlab.com/chrisrabotin/graco
hlua no activity Oct 2018 https://github.com/tomaka/hlua
vulkust abandoned Aug 2022 https://github.com/Hossein-Noroozpour/vulkust
rust-3d no activity Aug 2020 https://github.com/I3ck/rust-3d
imgui-ext no activity Nov 2020 https://github.com/germangb/imgui-ext
imgui-inspect no activity April 2021 https://github.com/aclysma/imgui-inspect
immi no activity July 2018 https://github.com/tomaka/immi
netcode no activity June 2020 https://github.com/jaynus/netcode.io
keeshond no activity May 2022 https://gitlab.com/cosmicchipsocket/keeshond
keeshond_datapack no activity May 2022 https://gitlab.com/cosmicchipsocket/keeshond
ketos no activity Jan 2020 https://github.com/murarth/ketos
laminar no activity April 2022 https://github.com/TimonPost/laminar
legion no activity Oct 2021 https://github.com/amethyst/legion
libovr no activity 2016 https://github.com/lucidscape/libovr-rs
lichen no activity April 2022 https://github.com/viperscape/lichen
liquidfun no activity 2015 https://github.com/rjanicek/liquidfun-rust
luajit no activity Feb 2019 https://gitlab.com/Dreae/luajit-rs
mold2d no activity Dec 2018 https://github.com/DarinM223/mold2d
molt no activity May 2020 https://github.com/wduquette/molt
navmesh no activity Dec 2021 https://github.com/PsichiX/navmesh
ncollide2d passively maintained Mar 2022 https://github.com/dimforge/ncollide
ncollide3d passively maintained Mar 2022 https://github.com/dimforge/ncollide
netstack no activity April 2020 https://github.com/Vengarioth/netstack
nphysics2d passively maintained July 2021 https://github.com/dimforge/nphysics
nphysics3d passively maintained July 2021 https://github.com/dimforge/nphysics
nuklear-rust no activity Oct 2020 https://github.com/snuk182/nuklear-rust
obj no activity Jun 2021 https://github.com/kvark/obj
ogmo3 no activity Aug 2021 https://github.com/17cupsofcoffee/ogmo3
optimath no activity Jun 2021 https://github.com/djugei/optimath/
oxygen_quark no activity Jan 2019 repo deleted
peacock no activity April 2021 https://github.com/maxdeviant/peacock
physme archived Dec 2021 https://github.com/soycan-sim/physme
portmidi no activity May 2022 https://github.com/musitdev/portmidi-rs
pyro archived Aug 2022 https://github.com/MaikKlein/pyro
pyxel no activity Jul 2019 https://github.com/adtennant/pyxel
quicksilver no activity Oct 2020 https://github.com/ryanisaacg/quicksilver
raui no activity Nov 2021 https://github.com/RAUI-labs/raui
rendy no activity Jan 2021 https://github.com/amethyst/rendy
rhusics no activity Aug 2020 https://github.com/rustgd/rhusics
rovr no activity 2015 https://github.com/binsoftware/rovr
vitral no activity Aug 2018 https://github.com/rsaarelm/vitral
rsoundio abandoned Dec 2020 https://github.com/klingtnet/rsoundio
rust-webvr abandoned May 2020 https://github.com/servo/rust-webvr
sharecart1000 no activity Mar 2021 https://github.com/Lokathor/sharecart1000-rs
steering no activity Sep 2018 https://github.com/orhanbalci/rust-steering-behaviors
tachyon-networking no activity Feb 2022 https://github.com/gamemachine/tachyon-networking
tcod no activity Jan 2021 https://github.com/tomassedovic/tcod-rs
tessellation no activity Jun 2021 https://github.com/hmeyer/tessellation
three abandoned Sept 2022 https://github.com/three-rs/three
throne no activity Oct 2021 https://github.com/t-mw/throne
torchbear (renamed jazz) no activity April 2022 https://github.com/jazzdotdev/jazz
vorbis no activity 2016 https://github.com/tomaka/vorbis-rs
weasel no activity Nov 2020 https://github.com/Trisfald/weasel
wrapped2d no activity May 2020 https://github.com/Bastacyclop/rust_box2d
wrapping_coords2d no activity May 2022 https://github.com/facorread/wrapping_coords2d
natura no activity Feb 2022 https://github.com/ziyasal/natura

That too way longer than expected. Anyway, i left some repos alone if i felt like they were sort-of complete or still popularly used. eg: gl wrappers or codec decoders.

These are in alphabetical order, so cleaning up in a PR should be pretty straight forward. When i mean no activity, i generally mean that there was no commit or issue comment etc.. by the author since last july (roughly one year). If the repo is missing, then i used the crates.io last version published date instead.

If any of these sleeping projects wake up, then we can re-add them :)

@17cupsofcoffee
Copy link
Collaborator

That list looks fairly reasonable to me - there's only a few I've spotted that could be contentious:

  • amethyst - could be worth keeping purely for how historically relevant it is to the ecosystem?
  • bmfont - pretty commonly used format (though https://github.com/shampoofactory/bmfont_rs is more recently updated and has a more idiomatic API, so maybe let's just add that instead)
  • cgmath - still fairly widely used as it's stable and has been around for a long time
  • ezing - feels fairly 'done', not sure how much you could really add to this other than more easing functions

As far as I can tell, most of the others are not being developed and/or have been superceded by other crates.

I'll try to see if any other WG members have any strong opinions on this.

@coderedart
Copy link

I found #372 . So, it seems we already removed a bunch of crates in 2020.

amethyst - I don't think users who come to arewegameyet are looking for historically relevant crates. They probably want to look at what rust ecosystem offers them today.

cgmath - I just thought it would better to redirect users towards glam/euclid/nalgebra which are still maintained. But I will leave this to the judgement of WG members.

@stefnotch
Copy link

stefnotch commented Jul 1, 2023

I honestly don't mind either way, and just to get things going, I'll propose:

Do all the non-contentious ones first, and discuss amethyst and cgmath after that.

For amethyst and cgmath, we even have the option of listing them (since they're high up in Google searches) and explicitly pointing the readers to the newer ones.

@coderedart
Copy link

blocked on #546 which might be merged before summer 👍

@17cupsofcoffee
Copy link
Collaborator

17cupsofcoffee commented Dec 6, 2023

blocked on #546 which might be merged before summer 👍

Sorry for the delay on this, I've not forgotten! I need to find a new reviewer for the PR since Ozkriff's no longer available.

Once that PR is merged, my plan is to take the list of crates that Jubilee had removed in their (now-closed) PR, and move them all into the archive section.

If we decide later down the line we do want to go down the route of removing crates entirely, it'll be easy to find them (since they'll all be tagged as archived = true), but hopefully this by itself is a good first step towards cleaning the site up - I agree it's long overdue.

@17cupsofcoffee
Copy link
Collaborator

#546 is merged now1, so hopefully we can get this moving again in 2024 🎆

I've re-raised @workingjubilee's PR using the new archive functionality - I'd appreciate it if people in this thread could give it a look over and make sure I've not missed/broken anything 😄

Once this is merged, we can maybe take a look at archiving some more of the crates mentioned here: #95 (comment)

Given that we're just de-emphasizing crates now instead of removing them from the site entirely, hopefully there'll be a bit more consensus about which ones should be moved.

Footnotes

  1. I had to use admin rights to do it, which I feel a bit uncomfortable about, but nobody other than me is reviewing changes at the moment and I really don't want this issue to be blocked for a sixth year...

@17cupsofcoffee
Copy link
Collaborator

#556 is merged as well now :)

Further PRs to archive crates that are unambigiously dead/unmaintained would be welcomed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants