react-native-community / discussions-and-proposals

Discussions and proposals related to the main React Native project
https://reactnative.dev
1.68k stars 127 forks source link

Stop using the @react-native-community npm org for packages not in the org #330

Open Sharcoux opened 3 years ago

Sharcoux commented 3 years ago

Introduction

After being moved out from React Native, some packages got registered under @react-native-community in order to make it easier to update the projects depending on them. The issue today is that the growth and maintenance of those projects is unbalanced, and the character of officialism conferred by this repo can be a problem for the growth of React Native ecosystem.

Details

If a project placed under @react-native-community gets abandoned, or stop being maintained because the maintainers don't have the time anymore to do so, the RN ecosystem will be penalized because better alternatives won't be able to replace them as they would sound "less official".

For instance, @react-native-community/react-native-slider is full of bugs, is receiving many feature requests for basic features that are not being addressed, and there are plenty of libs out there making a better job, but the community is dragged to this project because of its name, and I heard many people telling me "I'd rather not to change, I prefer to stick to the official repository".

Check this for a more common example. Does the React Native Community maintain callstack/react-native-slider?

Discussion points

How can we prevent giving a character of "officialism" to projects that are not necessarily maintained, and how can we provide a more equitable environment for new alternatives to grow up. This seems important to me so that only the best tools survive, and not only the most antique ones for history reasons.

brentvatne commented 3 years ago

We didn't want to rush maintainers to move off of the react-native-community npm scope because that is a bit harder than moving a GitHub repo, but I think we should revisit this soon and urge maintainers who have not yet migrated their npm packages to do so.

We should start by creating a list of packages that still operate on this scope (derived from this list), and then reach out to those to see if we can help them with the move, and then updating https://reactnative.directory when the move is completed. If someone wants to create this list, I can take care of reaching out and supporting the maintainers in migrating their packages.

Sharcoux commented 3 years ago

I'd gladly help, but I'm not quite sure about how to accurately list those packages?

kelset commented 3 years ago

So I went with the brute-force approach and via npm.com I was able to see the full list of packages published under the @react-native-community org.

Here's the full table: | package name | Publisher | published | when | | :----------------------------------------------------- | --------------------------: | -----------: | ------------: | | react-native-modal | @mmazzarolo | 11.6.1 | 2 months ago | | react-native-webview | @react-native-community-bot | 11.2.1 | 11 days ago | | @react-native-community/cli | @thymikee | 4.14.0 | 16 hours ago | | @react-native-community/netinfo | @react-native-community-bot | 5.9.10 | a month ago | | @react-native-community/async-storage | @krizzu | 1.12.1 | 4 months ago | | @react-native-community/viewpager | @trozee | 4.2.2 | a month ago | | @react-native-community/masked-view | @mike.nedosekin | 0.1.10 | 9 months ago | | @react-native-community/push-notification-ios | @naturalclar | 1.8.0 | 2 months ago | | @react-native-community/image-editor | @trensik | 2.3.0 | 10 months ago | | @react-native-community/slider | @mike866 | 3.0.3 | 7 months ago | | @react-native-community/status-bar | @dmtr.kovalenko | 1.0.3 | 2 years ago | | @react-native-community/segmented-control | @naturalclar | 2.2.2 | 2 months ago | | @react-native-community/react-native-clipboard | @harisbaig100 | 1.0.1 | 2 years ago | | @react-native-community/cameraroll | @bartolkaruza | 4.0.2 | 9 days ago | | @react-native-community/eslint-config | @mattoakes | 2.0.0 | 8 months ago | | @react-native-community/react-native-simple-share | @ansal_ali | 1.0.3 | 2 years ago | | @react-native-community/blur | @msand | 3.6.0 | 10 months ago | | @react-native-community/bob | @satya164 | 0.17.1 | 2 months ago | | @react-native-community/geolocation | @react-native-community-bot | 2.0.2 | a year ago | | @react-native-community/cli-tools | @thymikee | 4.13.0 | 5 months ago | | @react-native-community/cli-platform-android | @thymikee | 4.13.0 | 5 months ago | | @react-native-community/cli-platform-ios | @thymikee | 4.13.0 | 5 months ago | | @react-native-community/image-picker-ios | @johan.dev | 1.0.1 | 2 years ago | | @react-native-community/eslint-plugin | @eliwhite | 1.1.0 | 10 months ago | | @react-native-community/art | @esemesek | 1.2.0 | a year ago | | @react-native-community/datetimepicker | @vonovak | 3.0.9 | a month ago | | @react-native-community/audio-toolkit | @scott.beca | 2.0.3 | 10 months ago | | @react-native-community/checkbox | @nicholaslee119 | 0.5.7 | a month ago | | @react-native-community/picker | @bartolkaruza | 1.8.1 | 4 months ago | | @react-native-community/google-signin | @vonovak | 5.0.0 | 4 months ago | | @react-native-community/cli-types | @grabbou | 4.10.1 | 7 months ago | | @react-native-community/cli-debugger-ui | @grabbou | 4.13.1 | 3 months ago | | @react-native-community/async-storage-backend-legacy | @krizzu | 2.0.0-rc.0 | a year ago | | @react-native-community/async-storage-backend-web | @krizzu | 2.0.0-rc.0 | a year ago | | @react-native-community/progress-bar-android | @naturalclar | 1.0.4 | 3 months ago | | @react-native-community/react-native-cookies | @react-native-community-bot | 1.1.1 | a year ago | | @react-native-community/toolbar-android | @connectdotz | 0.1.0-rc.2 | a year ago | | @react-native-community/progress-view | @naturalclar | 1.2.3 | 3 months ago | | @react-native-community/cookies | @react-native-community-bot | 5.0.1 | 4 months ago | | @react-native-community/clipboard | @naturalclar | 1.5.1 | 3 months ago | | @react-native-community/hooks | @pvinis | 2.6.0 | 8 months ago | | @react-native-community/voice | @safaiyeh | 1.1.9 | 5 months ago | | @react-native-community/rxjs | @cpojer | 6.5.4-custom | a year ago | | @react-native-community/protobufjs | @cpojer | 6.7.3-custom | 10 months ago | | @react-native-community/react-native-translucent-modal | @cpojer | 1.1.0 | 10 months ago | | @react-native-community/cli-server-api | @grabbou | 4.13.1 | 3 months ago | | @react-native-community/cli-hermes | @thymikee | 4.13.0 | 5 months ago |

Note: the publisher name (by the look of it) is not necessarily the same username on GitHub.

mmazzarolo commented 3 years ago

👋 thanks for the ping. For react-native-modal, I thought we were already out of the react-native-community scope — or at least the lib can be installed directly with yarn add react-native-modal as described in the README. I'll check if there's anything left that needs to be updated.

safaiyeh commented 3 years ago

Mentioned this internally:

Yeah could we just put deprecation notices on the NPM packages https://docs.npmjs.com/deprecating-and-undeprecating-packages-or-package-versions#deprecating-an-entire-package. The notice can mention the package it got moved to or maintenance is not continued depending on the package.

Some people depend on old versions and moving these legacy versions to another npm package might be a hard/tedious task. This enables the access without breaking existing codebases pulling the old versions.

troZee commented 3 years ago

Hello everyone 👋 The name react-native-viewpager is used by @race604. Currently I am requesting this name. I'm asking for your patience.

troZee commented 3 years ago

Together with @satya164, we moved viewpager lib to new npm repo https://www.npmjs.com/package/react-native-pager-view.

kelset commented 3 years ago

What's the current status on this? Are there still libs using the npm org or did the transition fully happen?

satya164 commented 3 years ago

@kelset I noticed netinfo still using the old package name yesterday

brentvatne commented 3 years ago

some folks have not yet moved out of the react-native-community scope on npm, but there isn't much we can do about that. it's up to the maintainers, and they should do it when they have sufficient free time to do so. i'm happy to help out maintainers if needed.