rust3ds / shim-3ds

Shim implementation for a subset of the newlib library for the Nintendo 3DS.
Apache License 2.0
6 stars 8 forks source link

Naming of this crate / repository #17

Closed ian-h-chamberlain closed 1 year ago

ian-h-chamberlain commented 1 year ago

There's a few names rolling around in this crate at the moment:

I think it would be good to be consistent and use the same name everywhere. We already have a convention of using - rather than _ for these crates, so I think we should probably stick with that. Some options:

Meziu commented 1 year ago

You reminded me of this comment from @AzureMarker.

I really like the “polyfill” name (and it’s also coherent with the definition), so I suggest “polyfill-3ds”.

I must’ve woke up weird the morning of the day I named this repo “rust-linker-fix-3ds”, because I literally cannot think of a worse (yet somehow coherent) name. 😂

ian-h-chamberlain commented 1 year ago

Hmm, polyfill does seem to describe sort of what this crate does, and would be familiar to those who have experience with web dev. Wikipedia seems to indicate this is almost exclusively used to refer to web browsers though, so I'm not sure if that would be a common way to use it.

I think including libc in the name might also be good, since this crate is providing C standard library functions to supplement missing stuff from newlib. I found some articles about doing this type of thing for other platforms but they don't seem to have a specific name for the kind of thing we are doing:

So far I haven't been able to find too many other crates doing something similar, although here are two examples of a full-blown libc implementation in Rust:

I don't have too strong of an opinion here, especially since this crate is likely to stay pretty small and not change a lot. Lmk what you think.

Meziu commented 1 year ago

I would like to avoid the "libc" nomenclature mainly to avoid misleading the end user. One thing is to call this crate a mere "polyfill", another is to call it a "libc implementation". If it were for me this crate would disappear entirely, but it does serve a purpose, which is NOT to be used directly.

For example, I've already seen people discuss pthread-3ds as a "complete implementation", because the name gives away a sense of completeness. From this point of view, rust-linker-fix-3ds is such a bad name people would stay away from using it, which is kind of what we want.

At the end of the day the name is just a form of communication, and for these crates that is a delicate topic. "polyfill" is not the only option (and probably not the best) but, as always, anyone can make other suggestions.

ian-h-chamberlain commented 1 year ago

For example, I've already seen people discuss pthread-3ds as a "complete implementation", because the name gives away a sense of completeness. From this point of view, rust-linker-fix-3ds is such a bad name people would stay away from using it, which is kind of what we want.

That's a fair point, I can see the reasoning behind wanting to make sure people don't expect too much out of this crate (perhaps a good README would help with that).

The wikipedia article references this StackOverflow which mostly seems to suggest that "shim" is a slightly more general term that we could use.

In particular I like this description:

A shim is a library that brings a new API to an older environment, using only the means of that environment.

What do you think about these?

Meziu commented 1 year ago

I'd go with shim-3ds, tell me if you think it could be definitive 👍

ian-h-chamberlain commented 1 year ago

works for me! We can see if anyone else from @rust3ds/active has opinions but I think that plus a small README explaining the purpose of the crate sounds fine

Meziu commented 1 year ago

Opened the PRs to do the job:

I'll need to rename the repo before merging the changes in ctru-rs

Meziu commented 1 year ago

I've renamed the repo and the package. No issues downstream 👍