7

I recently started using an open source library for a project I'm working on. Let's call it Dasypus. It's an established library that's been around for a number of years.

As I got to know Dasypus better, I found some missing features from the API. These features would be easy to implement and wouldn't upset the existing API very much.

How can I convince the author that these changes are worthwhile? Is there a place where I can reach out to people using it? Set up a poll or something?

A little more about Dasypus:

  • Mozilla Public License 2.0
  • It is developed/maintained by a single author
  • 250,000+ downloads
  • Not on GitHub, there's no mailing list
  • 1
    Do it yourself and submit a patch? – user253751 Jul 6 '16 at 23:45
  • 2
    @immibis likely not enough in the case of making a breaking change to an API. As a project maintainer, I would need a compelling use case to justify breaking other people's code. The change would need to make my user's lives better, on average. Not just better, but better enough to go through the pain of a major version change. – RubberDuck Jul 6 '16 at 23:55
  • @RubberDuck Depends how big the project is. Getting an API-breaking change into Linux - forget about it. Getting a API-breaking change into some random project with 5 users? The maintainer probably won't care too much, especially if the breakage is small as you say. – user253751 Jul 6 '16 at 23:57
  • @immibis depends on the maintainers I suppose. I've got just a few thousand users and keeping the API stable is important to me, so perhaps I'm harder to convince than some. – RubberDuck Jul 7 '16 at 0:02
  • 1
    You could always fork it. – Adam Zuckerman Jul 7 '16 at 0:26
8
+100
  1. Submit a patch. (Or multiple patches.) Note in your submission that the patch makes breaking changes, so the maintainer can increment the version number, or whatever signal they use to notify downstream users of such changes.

  2. Make a fork with a different name (DasypusNG). Host your fork somewhere accessible to collaborators (GitLab, GitHub...) and somewhere accessible to users (PyPI for Python, RubyGems for Ruby...).

Sometimes forks fizzle, sometimes they co-exist, sometimes they merge (even after a very long time), sometimes more accessible forks succeed.

  • 4
    In addition to just submitting the patch and letting the maintainers know it broke backwards compatibility, please include a justification on why you had to break the API to add cool new Feature X. It's possible the maintainer knows a way to do the same thing without breaking the API and will recommend a different approach. If not, they'll be much more likely to accept the breakage if you've justified both Feature X and the API break. Some people really care about backward compatibility. – RubberDuck Jul 8 '16 at 11:04
1

You are rather vague about the missing features in the exiting code base, that you claim to add. If you have discovered a better implementation to what is currently implemented, you could perhaps, fork your own branch from the main and submit your patches to your local branch. If your patch does not break any existing API then it would be welcomed by the author and the community.

1

IMO if there are 250k+ downloads and several years of existence but still no established place to communicate with the developer then it's safe to say that:

  • community, if present, is self-established;
  • community is based around a lack of better alternative;
  • there are many more features besides what you want implemented that are missing;
  • it's more or less safe to "hijack" community with a fork or lead it in some direction.

If you want to convince the developer, then probably the best way would be to offer an implementation of what you want added with a reasoning behind it. User voting would help, but the place where to hold it really depends on the project. Sometimes social networks like Reddit are a better way to communicate even though there's an official site/forum.

If I was unsure where the majority of community hangs out, I would start asking around on possible locations or hold a vote on interested subject on all of them at once.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy