discussions-and-proposals icon indicating copy to clipboard operation
discussions-and-proposals copied to clipboard

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

Open Sharcoux opened this issue 4 years ago • 10 comments

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.

Sharcoux avatar Feb 02 '21 12:02 Sharcoux

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.

brentvatne avatar Feb 03 '21 17:02 brentvatne

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

Sharcoux avatar Feb 03 '21 17:02 Sharcoux

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.

kelset avatar Feb 05 '21 11:02 kelset

👋 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.

mmazzarolo avatar Feb 05 '21 13:02 mmazzarolo

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.

safaiyeh avatar Feb 05 '21 17:02 safaiyeh

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

troZee avatar Mar 02 '21 11:03 troZee

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

troZee avatar Mar 08 '21 13:03 troZee

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

kelset avatar Jun 10 '21 08:06 kelset

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

satya164 avatar Jun 10 '21 09:06 satya164

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.

brentvatne avatar Jun 29 '21 21:06 brentvatne