Skip to content

[Tracking Issue/Discussion] The Ecosystem Guide #6

Open
@Lokathor

Description

@Lokathor

I know that there's an open PR for the start of an ecosystem guide, but since this is one of our goals before the next meeting I wanted to have a general discussion and get people's thoughts about the subject without totally clogging up the review of kvark's specific PR.

The general subject of this issue is anything related to the gamedev-wg doing an ecosystem guide.

Assuming that we do make an ecosystem guide, I feel compelled to ask: What format should such a guide take?

  1. Obvious first point: AreWeGameYet is already an ecosystem guide.
  • We don't maintain it, though this is not itself a problem because it does get active attention.
  • There's a lot of open issues but not many open PRs. It seems like once someone does the PR work that PR gets merged fairly promptly, but the owner isn't constantly putting in the new entries themselves.
  • AreWeGameYet is fairly un-opinionated regarding one library or another, it just sorta throws everything into the pile with minimal descriptions and lets readers figure things out for themselves.
  1. The Charter of this WG fairly specifically says that we should not be promoting one library over another.
  • AreWeGameYet fills the space of an un-opinionated list of everything.
  • The only good space after that is to have an opinionated list of everything (and perhaps some things don't even make it onto the list, which is itself an opinion).

Combined, these two items make me want to back up and ask: Do we make an ecosystem guide at all?

  • I think that there should be an ecosystem guide that's says a lot more about each particular library in the guide. Like the Guide To Rust Graphics in 2019 that @icefoxen wrote. That article is really good, and frank opinions about the fitness for use of major crates is really valuable advice for the community.
  • However, as soon as you say anything more than basic facts about each crate you start having to have an opinion about things, which is pretty close to "promoting one library over another", which the charter says for the WG to not do.
  • I do recall from seeing some early discussions before the WG was formed that some folks wanted the WG to rally the community around one specific library for each particular programming element. Getting everyone to pour all effort into Amethyst or Nalgebra or whatever library. That clause in the charter seems to be a reaction to that idea, and a lesser statement of just saying "these libraries are actually fit for use for developing games right now [list here]" might be acceptable in the long term.

My conclusion from these facts: Either we have to change the charter at least a bit (not an action to be taken lightly!!) or we can't have an ecosystem guide that is usefully different from AreWeGameYet, and we probably shouldn't do a separate guide at all. Instead, we should just direct people to work on AreWeGameYet.

Thoughts on this? Or thoughts on anything else about the subject of an Ecosystem Guide?

Activity

17cupsofcoffee

17cupsofcoffee commented on Aug 10, 2019

@17cupsofcoffee
Collaborator

I'm a bit torn on this!

On the one hand, I feel like there's a massive need for a semi-official 'state of the ecosystem' post; something we can point new gamedevs to as a starting point that's not quite as overwhelming as AreWeGameYet. On the other, I think the WG not being too biased towards any one set of tools is really important.

For example, Icefoxen's guide to Rust game engines was pretty critical of Piston. Now, I think those criticisms were extremely fair, but there's a big difference between "this one guy says you shouldn't use Piston" and "this group that is somewhat officially linked with Rust says you shouldn't use Piston", and I'm not sure if I'd be comfortable with the latter. So that's the tightrope that needs to be walked, I guess.

icefoxen

icefoxen commented on Aug 10, 2019

@icefoxen
Contributor

I sure as hell wouldn't want to proselytize my graphics library guide as an official position, and I heckin' wrote it. To write something like that, which IS baldly critical, you have to be unencumbered by other concerns and know that you are only speaking for yourself. It's much easier to say the things that you feel must be said when you are saying them from the outside, without any official status.

Easy option for the matter of opinion: have the ecosystem guide be a collection of other people's guides, without endorsing or criticizing particular ones. Just organize them by topic and note that some of them are opinionated. The WG could serve a useful role by having this index, and keeping it up to date, since guides go stale and get updated and so on.

Also for any collection of information there need to be clear rules for removing things as well; one of my biggest annoyances with arewegameyet is there's lots of stuff like mold2d and corange-rs which never went anywhere but they're still included alongside mature and actively developed stuff that's actually usable.

17cupsofcoffee

17cupsofcoffee commented on Aug 10, 2019

@17cupsofcoffee
Collaborator

Easy option for the matter of opinion: have the ecosystem guide be a collection of other people's guides, without endorsing or criticizing particular ones. Just organize them by topic and note that some of them are opinionated. The WG could serve a useful role by having this index, and keeping it up to date, since guides go stale and get updated and so on.

I'm super on board with this idea, both for ecosystem guides and just guides/blog posts in general.

Lokathor

Lokathor commented on Aug 10, 2019

@Lokathor
MemberAuthor

Yeah, if we end up with one guide we certainly don't want to go full Icefox spicy curry level of opinion with it. Something closer to a plain teriyaki level of opinion would potentially be appropriate: a useful guide for people who aren't sure where to start and who want someone to just suggest something to start with and where they might want to look, but not too strongly worded so that people don't get totally scared off of going their own route.

But I do strongly support the "list of guides" approach, now that I'm thinking about it.

aclysma

aclysma commented on Aug 10, 2019

@aclysma
Contributor
  • I agree that this workgroup should not promote one library over another in a general sense. (i.e. "X" is broadly better than "Y")
  • If we want to have a list of crates somewhere, positive statements-in-fact, if used carefully, might be a way to help people find the best crates for them without actually endorsing them. For example, "abc has many regular contributors and is sponsored by A, B, and C." This way we can help someone make their own choice of where to start without feeling unfair or biased to anyone. (If we go this route, we need to do it carefully!)
  • Endorsement by individuals (i.e. someone's personal blog) could fill the need for more opinionated advice. Maybe we should encourage people to write more. (I'm planning writing a quick run-down of what crates I would use for a handful of common situations.) Ideally, there would be more than one. :)
    • Blog posts, etc. that are helpful could be linked to in WG communications like a monthly newsletter (as long as it's clear the link goes to a non-WG resource that does not represent the WG as a whole.)
  • As long as AreWeGameYet continues to be alive and well, and occupies the space of "unopinionated inventory of gamedev-relevant crates", I think it's fine for the WG to recommend that as a resource and help maintain it. (i.e. put in PRs). If it's status ever changes (it dies, it is no longer unopinionated, etc.), there's no reason the WG can't start providing an unopinionated list of its own at that point.
icefoxen

icefoxen commented on Aug 10, 2019

@icefoxen
Contributor

Now that I think of it, can we get the owner of arewegameyet, @doppioslash , in on this conversation to tell us more about their current status and what they want arewegameyet to be? I think that it can use lots of work but it also seems very much a passive maintenance effort, and there's stuff there that hasn't been updated since pre-Rust-1.0 days that I'd really like to clean out. (Hopefully it's not an opinionated statement to say that having corange-rs in the rust-gamedev/wg#3 spot under "game engines" isn't really helping anyone.)

Could a semi-concerted effort by the WG to either rework the site or just make a bunch of PR's to bring it up to snuff be something people would consider?

doppioslash

doppioslash commented on Aug 10, 2019

@doppioslash

Personally, I'd want arewegameyet to stay an un-opinionated repository of everything that may be useful.
If you're going to make pull requests updating obsolete parts, they will be merged.
I don't like to remove libraries, but we could put on them an "obsolete" tag if they haven't been updated for a long time.
Some parts of arewegameyet work better than others. I think the list of libraries works well.
We ended up having a list of games and articles too. That felt like a good idea at the time, but they feel less useful and harder to keep updated now that the community is bigger.

doppioslash

doppioslash commented on Aug 10, 2019

@doppioslash

The lists could also be reordered to put the most useful libraries on top, though I'm not keen on the piles of discussion that may entail. If the wg manages to decide on an order, then we can reorder them.

icefoxen

icefoxen commented on Aug 10, 2019

@icefoxen
Contributor

Yeah there was some discussion of that on the unofficial Discord. The acceptable options seemed to be "do nothing", "write code to order them randomly on each page load", or "write code to order them by how lately they have been updated and assume nobody's enough of a dick to try to game it". There's probably other good solutions; I'd be fine just by ordering them alphabetically or by some other obvious-and-arbitrary criteria as long as there was an "obsolete" tag or subsection to make it easier to search.

aclysma

aclysma commented on Aug 10, 2019

@aclysma
Contributor
  • crates.io has a metric "recent downloads" - but it has its own problems. A project with a popular downstream project will see a lot of incidental downloads.
  • Showing time (days/weeks/months) sounds useful even if the list wasn't sorted by that.
Lokathor

Lokathor commented on Aug 10, 2019

@Lokathor
MemberAuthor

crates.io can show reverse-dependencies, which seems like a fair starting point.

HeroesGrave

HeroesGrave commented on Aug 11, 2019

@HeroesGrave

Just throwing in my 2 cents:

My ecs crate is currently # 2 on arewegameyet despite its (relatively) terrible performance in benchmarks and the fact that I haven't been updating it for years other than merging the rare pull request from people using it. I have no interest in updating it because in order to make it "good" I had to rewrite it from scratch and now it's a completely different library (also specs is probably better).

I think a possible solution (which would require some effort) would be to run a regular "audit" of crates in the ecosystem to check for inactive projects and (only if they've been inactive for a while) contact the owner(s) to see what they think of the state of their project and in particular, whether people should consider using it for new projects. Crates that aren't intended to be used for new projects or whose owners have gone AWOL can be marked as such and put in a less prominent position in any sort of list/ranking (whether that's arewegameyet or some other resource).

While you could "game" such a system, there aren't really any benefits to doing so, and I think this would at least filter out a lot of projects that the owners are "done" with (which I think is the primary problem here). The main question is whether this approach would be worth the effort.

doppioslash

doppioslash commented on Aug 11, 2019

@doppioslash

One idea I had was to add a bit of frontend code, and make the list sortable by various criteria.

kvark

kvark commented on Aug 14, 2019

@kvark
Collaborator

Thank you for filing this @Lokathor and not derailing my PR :) ❤️

There is an obvious conflict: having a guide would have a great value for the community but we the WG can't be opinionated. Listing all the things like AreWeGamesYet isn't helpful enough to navigate the ecosystem, it's just better than doing a "crates.io" search. Having an opinionated guide is not helpful, since it will be changing often and there is no way to make all the participants happy.... But I think, there is a middle ground we could take to get the best of both sides.

We could list the existing libraries with some extra information that is:

  1. objective (!): meaning that it's in scope of the WG
  2. concisely useful: meaning that the reader would be able to make an informed judgement based on the facts we present. We can state the status, major pieces of the tech stack and features.
  3. not found on crates.io: we'll need to do some digging and maintenance, to a reasonable degree. For example, games and apps using a library typically don't upload themselves to crates, so they don't show up in reverse dependencies.

Here is an example of such an entry:

Three-rs:

Note that some filtering needs to take place when talking about priorities, features, and (most importantly) users, e.g. I didn't include ones that don't have a screenshot in the Readme (with an exception of "plane-splitter" which I have screenshots for).

AlexEne

AlexEne commented on Aug 15, 2019

@AlexEne
Member

Anyone against me moving this on the website repo?

I think that's a reasonable place for the ecosystem guide to have a page on once it's done. T1he PR has already started, but it's markdown so once that gets merged it's a matter of just opening a PR with adding it to the site too.

I'm on an issue cleaning spree :)

12 remaining items

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      [Tracking Issue/Discussion] The Ecosystem Guide · Issue #6 · rust-gamedev/rust-gamedev.github.io