@gavanderhoorn : I totally agree with all of your points, that was a very insightful post.
Two more points why people don’t submit enough PRs IMO:
-
"This PR works for my use case": Oftentimes people fix or enhance something so that it works for their use case and then just “throw a PR over the fence” and expect the maintainers to be happy. However, it’s the maintainer’s responsibility to make sure that every new PR actually works with all use cases of a repo. It’s sort of understandable that people don’t want to spend effort on making their code work with use cases that are of no interest to them; on the other hand, if the maintainer would just merge half-baked solutions all the time, the overall quality of the repo would plummet. (Example: I’ve recently submitted a PR to
vision_opencv
that implementsunrectifyImage
. I spent almost two extra days to make it work withbinning
andROI
, even though I don’t use these features. I can kind of understand if not everyone is motivated enough to do this.) -
There are already tons of unmerged PRs: Many ROS repos are under-maintained. I.e., the maintainers don’t have enough time to review PRs in a timely manner. I can fully understand this and am guilty of it myself for the repos that I maintain. However, whenever I’m about to submit a PR, I always first check the list of open PRs to see if the problem has already been solved. If I see that there are dozens of perfectly good PRs that haven’t been merged in two years, I often don’t even bother to put the work in to prepare a PR, since it’s very likely to just be ignored. By “putting the work in” I don’t mean submitting the PR (that takes 20 seconds), it means cleaning it up and making sure that it actually works with all use cases.
Since the nav stack was mentioned earlier: It currently has 35 open PRs, with some great examples for both points 1 and 2.
I have no idea how to fix problem 1. As for problem 2: It would be great if more qualified people would volunteer to maintain some ROS packages, and starting to review open PRs (even if you’re not a maintainer yet) is a great way to get started.