The React Native Ecosystem
We aim to build a vibrant and inclusive ecosystem of partners, core contributors, and community that goes beyond the main React Native GitHub repository. This document explains the roles and responsibilities of various stakeholders and provides guidelines for the community organization. The structure outlined in this document has been in place for a while but hadn't been written down before.
There are three types of stakeholders:
- Partners: Companies that are significantly invested in React Native and have been for years.
- Core Contributors: Individual people who contribute to the React Native project.
- Community Contributors: Individuals who support projects in the react-native-community organization.
Partners are companies that are significantly invested in React Native and have been for years. Informed by their use of React Native, they push for improvements of the core and/or the ecosystem around it. Facebook's partners think of React Native as a product: they understand the trade offs that the project makes as well as future plans and goals. Together we shape the vision for React Native to make it the best way to build applications.
Our current set of partners include Callstack, Expo, Infinite Red, Microsoft and Software Mansion. Many engineers from these companies are core contributors, and their partner responsibilities also include:
- Callstack: Manages releases, maintains the React Native CLI and organizes React Native EU
- Expo: Builds expo on top of React Native to simplify app development
- Infinite Red: Maintains the ignite cli/boilerplate, organizes Chain React Conf
- Microsoft: Develops React Native Windows for the Universal Windows Platform (UWP)
- Software Mansion: Maintain core infrastructure including JSC, Animated, and other popular third-party plugins.
In terms of open source work, pull requests from partners are commonly prioritized. When you are contributing to React Native, you'll most likely meet somebody who works at one of the partner companies and who is a core contributor:
Core contributors are individuals who contribute to the React Native project. A core contributor is somebody who displayed a lasting commitment to the evolution and maintenance of React Native. The work done by core contributors includes responsibilities mentioned in the “Partners” section above, and concretely means that they:
- Consistently contribute high quality changes, fixes and improvements
- Actively review changes and provide quality feedback to contributors
- Manage the release process of React Native by maintaining release branches, communicating changes to users and publishing releases
- Love to help out other users with issues on GitHub
- Mentor and encourage first time contributors
- Identify React Native community members who could be effective core contributors
- Help build an inclusive community with people from all backgrounds
- Are great at communicating with other contributors and the community in general
These are behaviors we have observed in our existing core contributors. They aren't strict rules but rather outline their usual responsibilities. We do not expect every core contributor to do all of the above things all the time. Most importantly, we want to create a supportive and friendly environment that fosters collaboration. Above all else, we are always polite and friendly.
Core contributor status is attained after consistently contributing and taking on the responsibilities outlined above and granted by other core contributors. Similarly, after a long period of inactivity, a core contributor may be removed.
We aim to make contributing to React Native as easy and transparent as possible. All important topics are handled through a discussion or RFC process on GitHub. We are always looking for active, enthusiastic members of the React Native community to become core contributors.
Community contributors are individuals who support projects in the react-native-community organization. This organization exists as an incubator for high quality components that extend the capabilities of React Native with functionality that many but not all applications require. Facebook engineers will provide guidance to help build a vibrant community of people and components that make React Native better.
This structure has multiple benefits:
- Keep the core of React Native small, which improves performance and reduces the surface area
- Provide visibility to projects through shared representation, for example on the React Native website or on Twitter
- Ensure a consistent and high standard for code, documentation, user experience, stability and contributions for third-party components
- Upgrade the most important components right away when we make breaking changes and move the ecosystem forward at a fast pace
- Find new maintainers for projects that are important but were abandoned by previous owners
Additionally, some companies may choose to sponsor the development of one or many of the packages that are part of the community organization. They will commit to maintain projects, triage issues, fix bugs and develop features. In turn, they will be able to gain visibility for their work, for example through a mention of active maintainers in the README of individual projects after a consistent period of contributions. Such a mention may be removed if maintainers abandon the project.
If you are working on a popular component and would like to move it to the React Native community, please create an issue on the discussions-and-proposals repository.