-
Notifications
You must be signed in to change notification settings - Fork 573
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? |
Hey @brentvatne, @Simek, and +@douglowder, I talked with the team these past 2 weeks and sought feedback from additional React Native community maintainers for additional perspectives. As a reset, let me share our intentions transparently and see if this opens an alternative that your team at Expo will feel good about approving.
Top need: Clarity on libraries that are confirmed/verified to work on Amazon Devices & ServicesSimilar to how Expo Go is listed in the platforms filter but is not the end device experience, we receive a steady set of requests from developers (indie and Broadcast streaming app teams) to publish a canonical list of React Native libraries that support Amazon Fire devices. Yes I acknowledge the marketing landing page you've been linking to says Fire OS is based on AOSP so there's a base level of compatibility, however we have a specific version fork of AOSP in addition to core libraries that need support in order for developers to have a smooth DX experience publishing on our 250 million devices: Login with Amazon, Amazon Appstore SDK, Location services, Amazon device notifications, Billing support, Matter Casting, Fire device supported DRM formats, Interstitial Ads (Publisher Services), etc. Our aim is to help devs have clarity and specificity on which libraries they can trust will work as expected versus what they need to find alternative libraries/solutions for. Android to Amazon Fire OS common challenges w/ RN librariesIf a developer is taking an existing Android app built for Google Play to Fire TV, a common misconception is since it's all loosely AOSP it should just work. Many of the React Native community libraries are built with mobile-centric use cases that abstract just iOS/TVOS and Google Android backend services. A great example is react-native-iap, which the maintainers added additional support to make sure payments work for Amazon devices as well as existing Android TVs and tvOS. ReactNative.directory as the place of truth for libraries meta information/detailsIn addition, during our React Conf talk last year (28 min mark) I mentioned our ongoing work in testing and sponsoring projects that help RN developers easily get their existing apps onto Amazon devices. The suggestion from the other maintainers (Meta, MSFT, Callstack, SWM) was to reinforce this directory as the place of truth for compatibility with libraries and setting the expectation with the community they should be listing their projects and making clear what it does/doesn't support. We love this recommendation because we can help drive library updates to this site and help this project continue to be community-first. For instance, from our docs we plan to drive developers to this directory to review the full list of supported / verified libraries before they start the work of porting their app to work on Fire TVs, Tablets, and Echo Shows. Rewording: Shift to a "Fire OS verified" approach?From a framework perspective I can see how you'd have a strong desire to not have a flag for Amazon devices. What I'd ask is for your team to reconsider since we're offering to perpetually maintain a "Works with Fire Devices" (flexible on the naming of this and if this rather live under the ASK: Would you be open to side-stepping the "Amazon is not a platform" standoff and let us rework this PR to be a "Works with" or "Verified" flag in a way that you find amenable? π π¦ |
Chiming in from the desktop perspective -- ReactNative.directory has been super helpful for our desktop customers to learn more about which modules work with desktop and we're grateful to partner with folks like @Simek and others to get Windows + macOS represented. @chris-trag mentions:
ReactNative.directory is the quintessential "one stop shop" for the community to learn which modules are available for which platforms -- which is particularly helpful for Windows and macOS as out-of-tree platforms. I can imagine that @chris-trag is looking to get a similar sort of visibility for FireOS. It's a challenge that all out of tree platforms (and really any apps outside of the Expo ecosystem share): how do I know which modules work on the platforms I care about? |
hey folks! @Simek and I discussed this and we're on board with adding a "Works with FireOS" status. one thing we'd like to do at the same time (or shortly after, it doesn't need to be in the same PR and you don't need to do it) is add a status for "Requires Google Play Services". we can then have three possible states for "Works with FireOS":
(names of the statuses are of course totally open, i just wanted to choose the simplest words to communicate the idea as placeholders) what do you think? |
This would be excellent - I really like the approach & filter specificity π We'll clean up the PR for next week. QQ: Should we move the "Works with Fire OS" under the "Status" section? |
@chris-trag - yup, status section works well! @Simek and i were also discussing possibly splitting expo go and fireos into a new section like 'Compatibility' that would go after status, but we can figure that out later |
π 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