-
Notifications
You must be signed in to change notification settings - Fork 618
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
Switch to the rgb
crate v0.9
pixel types and trait.
#2259
Comments
Having interoperability with the I plan to use the semver trick to keep structs in |
The dynamic of having a contributor say "let's do X!" and then expecting the maintainers to figure out what impact the change would have on downstream users, future compatibility, etc. and write-up a full evaluation of the tradeoffs is exhausting. Would a significant portion of our users have to make code changes if we did this change? How much effort would that be? Would they get good compiler error messages to guide them? What benefit would they get in return for that effort? Would this create API inconsistencies with other parts of the crate? Or add new edge cases where the API produced confusing or incorrect output? Prevent other feature additions in the future? Make it more difficult to drive down the amount of unsafe code in the dependency tree? Are there any alternatives we could do instead? Are there workarounds that users could take today to gain the benefits without us doing an API change at all? |
I don't know where you got this impression from? I view anyone working on open source (including maintainers) as volunteers and as such I have no expectations of any work at all. I am simply suggesting an idea that I think has a good probability of being an improvement to the crate in my opinion, isn't that what we all do with such feature request type issues?
This would depend quite a bit of the specific nature of usage of the
This would depend on how the
I believe so yes, last time I tried migrating the
A more rust-modern powerful and uniform set of pixel types and traits (in my opinion), with more compatibility/interoperability/standardization with other rust crates. Take a look at the new
Do you have any specific areas in mind that this change might create inconsistencies with? I can't really see any at the moment from my limited experience with the
This is a very tricky question to answer because it's very open-ended. I can't really think of any reasons why it might prevent other feature additions, but again I do only have limited experience with the library. It might also depend heavily on the specific type of feature being added.
The only unsafe code in the eventual
You could copy-paste the pixel types/traits from the
Perhaps users could manually convert between |
Based on the increasing number of users and how many code changes would be needed, I think this would likely be the single most disruptive change this crate has ever made. I say that not to be discouraging or to indicate that we definitely won't do it, but to get across that this is not a change we can make lightly. You don't have to be the one to write-up a detailed analysis of how the switch would work, and what the pro and cons would be. However, somebody would have to do so if we were going to make this change |
I thought that was what I've just done by answering all your questions in my previous comment? Alternatively, I could create a draft-PR with the changeover implemented in it so we can do some empirical breaking change testing on some reverse dependencies which might be easier than attempting to predict all the effects ahead of time? |
Although not actually released yet, when
v0.9
is released it should have severalPixel
traits that are just as powerful or more than the one used already in this crate. Similar to that frompixeli
demonstrated in #2255.It would also make this crate more interoperable with other image crates as the
rgb
pixel types are commonly used for interoperability.This would be a breaking change so I'd suggest we implement it for
v0.26
#2245. This may also conflict with #2239.The text was updated successfully, but these errors were encountered: