-
Notifications
You must be signed in to change notification settings - Fork 565
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
Add Fire OS compatibility #1438
base: main
Are you sure you want to change the base?
Conversation
1086ce1
to
01e8823
Compare
Co-authored with @chris-trag and @giolaq |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inserted ⏎
per warning
Hey @mosesroth, thanks for working on this addition! I would like to ask few questions before we can proceed. About which Fire OS we are talking about, is it the Android TV fork? Or this is about the new, proprietary Linux-based OS announced earlier this year? |
Hi @Simek , yes Fire OS is the Android fork mentioned on the doc you linked, which is what we tested on. Thanks, Moses |
Thanks for the clarification Moses! 👍 We were discussing this addition internally, and with AFAIK when it comes to Android TV, all libraries marked with Android or tvOS support should be working fine on Android TV (so also on Fire OS) devices, since most of the code is shared with Android mobile platform. You can check the RN tvOS readme for a bit more details on that topic: This is also a take that the Fire OS page I have linked previously stand by:
If there are something that we miss, any concerns about compatibility or important differences between regular Android TV and Fire OS please let us know. We are happy to learn more about TV apps ecosystem, and work on clarifying the state of libraries support for different TV targets. |
Hi @Simek , Fire OS runs on Fire tablets too, not just Fire TVs. It is based on Android, but there can be some inconsistencies, not all Android libraries will work on FOS. For example, if a library requires Google Play Services, it won't work on FOS, because those aren't present on Fire devices. |
Hey @Simek, To add to @mosesroth points -- we took on the effort of testing each of these libraries because developers have asked for confirmation of Fire OS support: For both Fire TVs and Fire Tablets. It's an oversimplification to say Android == Fire OS since the core issues come with monetization and auth built-in support. Google Play Services and Login with Google are propriety and not part of the Android Open Source Project. Any app that tries to load an library with dependencies beyond Google Play are running into functional testing issues and app submission challenges on multiple devices -- which is why we pulled this PR together. Our original plan was to create a directory showing each library and confirming Fire OS compatibility but were encouraged by MSFT and META teams to aim for reactnative.directory as a single source of truth that developers can go to - whether it's a core platform or an out-of-tree extended offering. I doubt the |
Hey @chris-trag, Introducing an additional platform to the directory happens really rarely, and usually it's a string-forward case due to how obvious are differences between, or limitations on certain platform. It was not obvious in this case, since no context has been provided in the initial PR comment about reasoning behind, or the FireOS itself, and why it requires a separated categorization in the directory, hence my follow up questions. There are also different core contributors of this project, and other people from the React Native community whom I have asked about this topic which seems to lean more towards lack of separation. It also have been stated on the FireOS website that the system should be basically threaded as an Android. Based on that, I have proposed a solution, but still was open to further discussion which last paragraph shows. After getting bit more familiar with Android Open Source Project ecosystem it looks like to avoid the further fragmentation it would be ideal to use generic "AOSP" flag instead since there are several more AOSP-based OSes, besides FireOS, from different brands or manufacturers (https://en.wikipedia.org/wiki/List_of_custom_Android_distributions), and having a separate platform defined for every one of those distributions definitively feels like too many. If we separate-out one of the distributions, we should then treat the others similar, so this suggestion is more futureproof based. An another approach might be introduction of Google Play Services field which would enhance existing "Android" tag with a tooltip, which will show if Google Play Services are required/needed or not. The similar feature we have for the New Architecture notes. It could also become one of the misc filters we already offer. I wonder what are your thoughts on that, and "AOSP" flag idea? If you feel strongly about retaining the separation would be great if you can provide more information on how FireOS differs from other distributions, and why there might be compatibility difference between certain AOSP OSes. I'm happy to learn more about that, since it might be easier to justify the separation, and more information can help up better asses the FireOS support claims on new entries. Thanks for posting a bit more information, context, and your opinion. Hope we were able to find a solution which works for both invested parties, and it's more clear now what are the concerns from the directory side. To clarify few misconceptions:
|
I really don't like what you are implying here, @chris-trag. I think it's pretty rude to drop in to an established community and make a demand, then cast doubt on the intentions of the people who have been working on it for many years when they ask questions about it. @Simek is trying to ensure that what we are doing here is best for this site in the long run, and for the maintenance that he does in his spare time. While Expo created the directory, as @Simek mentioned above, we also transferred it to the React Native Community organization with the intention to have shared stewardship - it just so happens that @Simek has been the main person to take responsibility for it. |
@Simek thanks for the thoughtful response and I see & appreciate your points @brentvatne -- candidly after the time and effort we put into manually reviewing 50-100 libraries we’re bummed to get blocked at this stage. @Simek it’s incredible the sheer amount of work you’ve put into this project — Thanks for you all you do! Truthfully I’m open to a compromise that lets your team feel good about the outcome and helps us avoid creating an entirely separate directory for the same information -- I think a single place of truth for react native compatibility across the ecosystem is a shared benefit and we’d love to contribute to regularly and actively test new libraries so the directory info stays fresh. We’ve had a lot of developers confused by not knowing which libraries work with Amazon devices versus Apple or Google Play. If we were to re-work this PR, would you be open to the following changes (?) :
Let me know what you think? Thanks! |
Hello! Thanks for the info, here's what I'm thinking:
You've mentioned above that one of the conditions where a library would not work on Fire OS is when Google Play Services is required by the library. If we can list all of these conditions independently and use these to classify libraries, then we could add a higher level concept where Fire OS support is defined by a combination of these filters (which you could then link to from your docs). Other Android forks like Meta Quest, Huawei Harmony, and so on would then be definable with these feature classifiers as well (none of them support Google Play Services, for example). What are other conditions in which a library would not be compatible with Fire OS? |
📝 Why & how
This PR adds Fire OS compatibility as an option to the directory and includes 45 libraries that have been tested and confirmed compatible with Fire OS.
✅ Checklist
react-native-libraries.json
react-native-libraries.json