Skip to content
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

Current status ofreact-select, how you can contribute and what the future looks like. #3910

Closed
marcelltoth opened this issue Jan 21, 2020 · 29 comments

Comments

@marcelltoth
Copy link

Right now we have 97 open pull requests, some important bugfixes, some interesting new features.

Among these pull requests there are numerous that have been open for more than about half a year, without any sort of feedback. See #3666 (feature), #3633 (bugfix), #3669 (bugfix) just to name a few. In the meanwhile, there was a single (refactoring) PR accepted in December, and we didn't get even a patch release out for 4 months (see npm).

These pull requests would also close down many of the 1200+ open issues, some of which are repeated bug reports. (About issues that we already have fixes for, standing in the PR queue for months.)

I understand that maintaining high-usage open source projects is hard, and it takes a lot of time.
Therefore I would like ask the question: How can we help?

It looks like PRs are not helping much, comments and reactions on them neither. I really would like to get this project going as it is essential for myself, my company, and in my opinion the React community as a whole.

I am trying to avoid having to fork the project, because that creates a hard division line, but right now it seems like this is our only option to move forward, hence my question here. If you are in the need of a maintainer, I can happily help, and I'm sure other experienced engineers can, too. Or if we can provide support in a different way, let us know, I believe many of us are open to contribute, just not finding the means right now.

@BrandonKowalski
Copy link

I know its less than ideal, but given the radio silence on this and other issues do we as the community make a temporary fork?

I absolutely love this project as it has been a life saver at work and I'd hate to see it rot.

@Tirzono
Copy link
Contributor

Tirzono commented Feb 13, 2020

There are already a lot of people that fork the library to get their features in. For example one of the forks is actually used by Grafana and therefore has a lot of weekly downloads.

I think making a temporary fork is the good way to go for now. It would stop people having to fork the library themselves and it would continue the development of the project. When the current maintainers start being active again we could contribute back to this original project and stop the temporary fork. It should be made clear from the start that the fork is temporary.

How can we make a temporary fork work for everyone? Are there examples of libraries that have been at this stage before so we can learn from their experiences? Who wants to contribute to this?

@marcelltoth
Copy link
Author

Sadly I have to agree with you, there does not seem to be another way.

Actually I have already started working on setting up a fork yesterday after @BrandonKowalski's message. It turns out it's a lot more complicated than just forking it, changing the name and running yarn release, but I think I have it configured now.

Check out my fork react-select-reborn at https://github.com/marcelltoth/react-select-reborn/ Work I have already done:

  • Figure out and set up the build pipeline
  • Set up CircleCI integration
  • Set up Coveralls integration
  • Change the package name (hopefully) everywhere
  • Publish the new package on NPM
  • Publish a new release onto NPM with a few changes that have been made to the original repo since the last release. You can actually npm install it at this point. It is bascially equivalent with react-select v3.0.8

My main goals:

  • Be semver compatible with the original react-select, so versioning continues from 3.1.0 and no breaking modifications until v4.
  • Fix the outstanding issues in react-select.
  • Pull in the high quality react-select PRs as much as possible.
  • Keep the focus on code quality. I'd especially like to increase code coverage as much as practical.
  • Be community driven. I have spent and probably will spend a lot of time setting up infrastructure, sorting through issues, etc, but that does not mean I should form the project to my liking. All discussions should happen over issues / PRs, so anyone can contribute with their code and opinion.

I will post this in more detail as soon as possible, just wanted to post a quick heads up here so you know I'm already working on the solution.

Also any discussion is welcome on the Issues page on my repo, come over, check it out, share your thoughts, lets build this together!

@Tirzono
Copy link
Contributor

Tirzono commented Feb 13, 2020

Good to hear that you already started the work. I wanted to nominate you already as the one to kick off this process, but I didn't want to put you on a spot where you had to do some work while maybe you didn't want to or didn't have time for it. I will have a look and open an issue if I think there is something that is worth discussing.

@BrandonKowalski
Copy link

BrandonKowalski commented Feb 13, 2020

Woo! Please let me know how I can help. I total agreement with @Tirzono on merging back to mainline once it becomes active again.

@Tirzono
Copy link
Contributor

Tirzono commented Feb 17, 2020

It looks like there's some activity now again from the maintainers. This pull request got merged:

#3933

This is good news, because it would be great if we don't have to fork the library. I am not sure if the maintainers are aware of this issue thread, so I'm pinging them here: @JedWatson @mitchellhamilton

@marcelltoth
Copy link
Author

Oh wow, that'd be great news. Hopefully they'll jump on the rest of the PRs, especially your focus-bugfix, which is a long-awaiting fix.

@flexdinesh
Copy link
Collaborator

Hey everyone! Thanks for your patience and being considerate in bringing this up. This is the best part about OSS community. Rest assured, there's going to be more activity in the repo going forward.

As to how you can help — there are an overwhelming amount of issues in the repo at the moment. We are getting through them one at a time. A handful of issues are either legacy version issues that's already been fixed or users asking for directions in implementation or clarification about the docs. If you find any issue that could be closed, feel free to tag me in the issue and I'd be happy to jump in and close. We could use as much help as possible to get the stale issues out of the way.

@Tirzono
Copy link
Contributor

Tirzono commented Feb 21, 2020

Thank you for you reply @flexdinesh, I tagged you in one of my pull requests. Out of curiosity: did you join the react-select team recently or are you taking over stuff? I am happy to see some activity. If that would mean we don't need a fork at all then I would be even more happy.

@flexdinesh
Copy link
Collaborator

flexdinesh commented Feb 21, 2020

Hey @Tirzono, I just joined the team recently and will be helping other maintainers maintain this amazing lib. Feel free to tag/nudge me in issues and PRs and I'd be happy to help wherever I can.

re: tag — I saw the PR. I'm still catching up on stuff. I'll get to it as soon as I can. 🤞

@Tirzono
Copy link
Contributor

Tirzono commented Feb 24, 2020

Happy to hear you are helping the other maintainers. There's no rush on the PR, feel free to look at it whenever you have time. If you need any help (such as help with reviewing) then don't hesitate to ask, as I think more people would be willing to have a (first) look at current open PR's.

Thank you for spending your time on this awesome library 🙏

@0xdevalias
Copy link

0xdevalias commented Apr 22, 2020

@flexdinesh Would it be possible to get this issue pinned, so that others can easily find it and know where things are at? Currently the state of the issues/etc makes it feel unmaintained, but if this was pinned it would be easier to know that it's just in a state of flux/catching up.

I'll also link this comment from @razh here for visibility: #3720 (comment)

There is currently a rewrite in progress...

@emmatown emmatown pinned this issue Apr 22, 2020
@flexdinesh flexdinesh changed the title Is react-select still maintained? How can we contribute? Current status ofreact-select, how you can contribute and what the future looks like. Apr 22, 2020
@flexdinesh
Copy link
Collaborator

flexdinesh commented Apr 22, 2020

Hey @0xdevalias! It's a good idea and we've edited the title and pinned the issue now. We can use this to track maintenance status moving forward.

@JedWatson
Copy link
Owner

👋 Hi everyone, I wanted to introduce @bladey who's also started helping get issues and PRs into shape with @flexdinesh, @gwyneplaine and myself. You might notice we have several hundred less open today than we did yesterday, and will keep working through them to wrestle things under control.

Something I've noticed over time with react-select is people do get in and help ❤️ but it's a challenging project and people tend to burn out after a while because of the sheer volume of issues, support, and complexity. So we're hoping that with a few of us now to pass the baton between, we can do a better job of staying on top of things.

In terms of plans from here, @mitchellhamilton contributed a significant rewrite of our tests not too long ago which was blocking some updates we'd like to make (hello hooks) and now we're making a concerted effort to review all the current open issues and PRs before we embark on any major code changes that would invalidate fixes people have contributed already.

When that's done, I'm really keen to get into the core and start teasing out the complicated logic into a cleaner hooks-based implementation which will probably result in a new major version with some other improvements we've got planned (including shipping an unstyled select without the default theme, some performance improvements, and other ideas that we'll experiment with)

Another thing is the website and docs are... pretty comprehensive, but hard to comprehend. So that's on the radar to improve.

And finally flow is starting to feel like maybe not the best choice at this point in time, and I suspect that while we're refactoring the project to use hooks we'll probably look at converting to TypeScript.

So I hope that gives everyone a good update on what we're planning to do. As we get closer to getting issues and PRs down to a really small number, we'll open issues for discussion about the next series of changes I've described. (we did this "triage then evolve" process for v1 before v2 as well, thanks to a herculean effort by @gwyneplaine, and it was exhausting but effective)

In the meanwhile, with regards to:

How can we help?

It's really tricky unless you've got all the context. Some things that seem safe and obvious aren't, so when we assess an issue or PR we're really starting from scratch reviewing it every time unless they come from someone we know has a lot of experience working on the project.

However, there are a lot of things more advanced users can help us do to keep things in check, providing detailed comments on pull requests, and solving issues that already have answers.

What the project needs more than anything else is open source gardeners - people who can help us keep things under control and spend our time on the most important issues and PRs (which are currently lost in the noise)

For example, tonight I resolved several including #3775 which I'm sure many people could have done just as good a job on, especially people who are experienced with the project.

A great example of helpful gardening is @razh's comment on #3720 explaining the reason a lifecycle warning issue has been closed, and @eugene1g's comment on #4036 pointing at the same. This sort of thing is really helpful 🎉

Every issue that we go to review that already has a correct solution, or PR that has a comprehensive explanation of what's going on, is a small but meaningful win and lets us focus on pushing the project forward.

@JedWatson
Copy link
Owner

Oops, did not actually mean to close this, I've been pressing that button a lot tonight 😅

I might leave it closed though as hopefully I've answered enough, and everyone can see the activity has picked up after some time away.

We'll leave it pinned for a while though, and don't take the close as me shutting down the conversation.

@Methuselah96
Copy link
Collaborator

Methuselah96 commented May 29, 2020

@JedWatson @bladey Per #3389, I've started working on porting this project to TypeScript. You can see the progress I've made so far here: master...Methuselah96:typescript (Edit: now here: master...Methuselah96:typescript-final). I'll open a PR when it's ready.

@Methuselah96
Copy link
Collaborator

Methuselah96 commented May 29, 2020

@JedWatson @bladey I'm thinking that it will make sense to convert the docs to TypeScript first using @types/react-select. The docs will then serve as make-shift TypeScript tests when converting the main package. What do you think of that plan?

Also would you prefer one large PR that converts the entire docs folder to TypeScript or should I try to incrementally convert in smaller PRs so that it's easier to review? I think it would be easier to do it one large PR just to rip the band-aid off (and so I don't have to figure out how to get Flow and TypeScript to work together), but I thought I'd check first. I will add a GitHub comment at each place in the code where I have to make an actual code change in order to get the types to work.

@ebonow
Copy link
Collaborator

ebonow commented Jun 1, 2020

Thank you both @JedWatson and @bladey for closing most of the issues. It was something that made it hard to identify existing issues vs implementation questions/feature requests.

As someone who has played a role as a very minor part time role as an open source gardener, I have been wondering if there would be community interest in having some kind of gallery or cookbook for different react-select solutions.

I read so many requests for things I have personally had to solve (floating labels, checkbox multi-select, multi-select displayed as sorted comma separated single value ty for the long awaited index prop btw, making a selected option text editable, group filtering, nested lookup options, etc...)

That said, are there considerations for something like a react-select gallery where people can showcase certain styles, solutions, or functionality in a collective manner? This could possibly help manage the influx of questions and feature requests while helping fellow developers from reimplementing the wheel.js or simply moving on to try a different fork/repo instead. If not, would there be any objections to open sourcing this so that the community can share what they build?

@JedWatson
Copy link
Owner

@ebonow I love that idea! we should definitely add that as a page to the site (could probably replace/expand on the current "experimental" section of the advanced page)

@Methuselah96
Copy link
Collaborator

Methuselah96 commented Sep 23, 2020

@JedWatson What would you think about giving @ebonow Triage permissions to help keep the issues clean? He's been consistently active and has shown that he knows his way around the library.

@ebonow
Copy link
Collaborator

ebonow commented Sep 25, 2020

I would be happy to help triage. Additionally, it is somewhat ironic that I was composing a post of discussing when we can expect a new update.

There are several known issues regarding bugs, feature requests, and documentation clarifications. I have a list I would love to share and get feedback on that I compiled from the many pages of existing issues, but most importantly, the last release was 6 months ago this week and it should be possible to schedule the time to make a minor version bump whether it be 3.1.1 or 3.2. Either way, a roadmap would go a long way in knowing what's actually being addressed/ignored and when.

Also, it's not clear how far underway version 4 is, and no doubt that replacing Flow/Class components with Typescript/hooks is not an easy undertaking, but having a WIP branch should make it possible to add any new features to both existing and future versions.

That's all to say, I am happy to help and keep this project moving forward.

@Methuselah96
Copy link
Collaborator

@ebonow Thanks for all your hard work on the issues so far and I agree with everything you said.

@JedWatson First of all, I want to thank you for building react-select and also for your status update above. I mean nothing but respect for the work you’ve done and recognize that you have no obligation to the community to continue working on this project.

The plans that you’ve listed above sound really good and @bladey did a great job of cleaning up the issues to make them more manageable. However, it seems most important at the moment to continue support for the current version of react-select and release critical patches that allow users to continue using the latest version without issues or having to fork their own version.

In order to do this, there needs to be someone with Write privileges and the ability to publish the package who could consistently devote just a couple of hours a week or even a month to merge in and release the most critical bugs and feature requests. If it would be helpful, the community could help compile and vote on the most critical issues/PRs to get through in the next release and this would hopefully make it very easy to publish a release and only include the most important fixes.

Lastly, I understand that this project is funded by Thinkmill and Atlassian. It seems like the only people who have Write privileges are people who work at Thinkmill. Do you ever plan to allow community members to become maintainers?

@shulcsm
Copy link

shulcsm commented Oct 21, 2020

It has been a while. How about cutting a release?

@dakur
Copy link

dakur commented Oct 21, 2020

@JedWatson Is there any plan? There are people who would like to help, but they have no reply.

In your talk, you say you don't understand why people can not be just nice to each other, why they blame you. But you know... it's pretty hard to be nice when somebody creates library you start to use and then when you have problem the author's reactions are as slow as turtles or none at all. You're stuck and can do nothing but hacking existing code – but even if you know how. That's frustrating and just step away from not being nice.

I understand you have family and it's good you do not exchange it for work. I do have family too and it's really time consuming. I know I could not do anything beside my regular job, so I understand the cause of this state. But couldn't you just pass the project to people who have time for it? Or at least the technical management of the project? It would save time and energy of many and "niceness" would be a secondary effect undoubtedly.

Thanks for considering.

@Methuselah96
Copy link
Collaborator

Methuselah96 commented Nov 13, 2020

I'm starting a fork. Feel free to submit PRs and we can get them merged and released.

EDIT: 🎉 I've archived the fork now that we've got some momentum in this repo and Jed is involved again. Sorry for the disturbance!

@Rall3n
Copy link
Collaborator

Rall3n commented Nov 14, 2020

@Methuselah96 It´s nice that you are trying to keep this active, but spamming every open issue / PR is not the way to spread the message.

@Methuselah96
Copy link
Collaborator

Methuselah96 commented Nov 14, 2020

@Rall3n My apologies if the comments on the open issues/PRs were not helpful. My goal was to post in issues and PRs where many people seem frustrated with the lack of a solution and were asking for updates (which only turned out to be about 22 (out of 328) issues and 12 (out of 79) PRs; I did not post it in every open issue/PR). I didn't know how else to spread the message except to add it as a comment in the places where it seemed relevant, since not everyone is subscribed to this issue or the repository as a whole and are likely only subscribed to the issues they care about.

@ebonow
Copy link
Collaborator

ebonow commented Jan 22, 2021

Happy Anniversary! It's been one year since this issue was created.

It was this thread that opened up a conversation that has led to where we are today. I return to this because I am proud of the work that's been done and relate to the frustration and confusion that so many had. Ultimately, it was Jed's reply that had me become more active.

So it's with this irony of dates, that I come to return bearing what stands as the current status of react-select:

  • Version updates
    • Versions 3.1.1 and versions 3.2 have been released.
    • Version 4.0 is being deployed now as I type this.
  • A Discussions section has been added to offload conversations away from issues to include
    • Roadmap forward
    • Codesandbox examples for common requests
  • Issues
    • One thousand four hundred and fifty-two - That's how many issues have been closed since the time this thread was created... 1,452 issues closed
    • That leaves 140 issues, some of which will likely be resolved by v4
  • Pull Requests
    • 151 PR's closed, 56 PR's merged
    • This leaves 50 PR's still open
    • Of the 50 that are open, 9 are already assigned to a future milestone release
  • Collaborators
    • 3 new collaborators have been added, and also welcome back to @gwyneplaine!

And there is still work to be done.

  • My goal is to have a response to every issue and every PR within the next 30 days. The community deserves better than radio silence especially when time is taken to report or even contribute.
  • react-select will continue to have more frequent releases with a11y, required, Typescript coming soon
  • New documentation is being worked on
  • More bug fixes, more features

Thank you @JedWatson for being receptive and making time to allow this to continue to grow. I know we're all excited to see where this goes. @bladey , @Rall3n , @Methuselah96 thank you all for your support, issue replies, PRs, and collaboration! To the community, thank you for being patient. Looking forward to co-creating!

@marcelltoth
Copy link
Author

Thank you for all your hard work @ebonow!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests