3 ms·
I played pull request with a framework recently. There was something that I wanted to do that could only be done if the framework had fully chained a JavaScript
by ynniv 14y ago
I played pull request with a framework recently. There was something that I wanted to do that could only be done if the framework had fully chained a JavaScript function (ie, forwarded all parameters, included "this", and returned the result). It was an easy fix, but it turned out that what appeared to be an omission was intentional due to very specific edge cases in JavaScript that prevented someone from doing something undocumented but maybe useful. A conflict between two users doing things that the framework did not intend seems like a tough decision, one that makes sense to roll with the status quo. Except that from the issues database, I can see that I was not the only person to ask for this change. My pull request was actually proposed 3 or 4 other times, and there were plenty of other people who had found a sort-of-workaround and were shipping code using this workaround. So I sat down and spent a good amount of time investigating the edge cases to figure out what should be done, wrote it all up, linked to the other people who were having problems or working around them, and submitted a new pull request. Again, the results were unsatisfying: closed because they didn't think people should be doing that. Except that they already are doing it in a hackier way. I guess that other lone guy who was doing something really strange but filed his bug report first wins after all. This whimsy is disrespectful, and pushes people to use something else, start their own, or spend time telling the world that you don't know how to play nicely. In the end, maybe that doesn't matter to some maintainers. They had their fame and their fun and they move on.
- slurgfest 14y agoHow would you avoid this? If a change is made quickly due to because that other lone guy filed his bug report first, then the solution would have been to, well, ignore his report. However, a project which did that might well ignore your report too.
- ynniv 14y agoThese are the decisions that build (or do not build) community. The best decision is to look at what is best for the most people, consider as a maintainer where you want the framework to go, and make a careful decision. A cursory glance over someone's suggestion and a dismissal that is ignorant of how the community is working with the project or based on organizational minutia (formatting, variable names, unit tests, etc) erodes other people's interest in making your project a success.
- bmelton 14y agoThat sounds exactly like the last pull request I made to jQuery -- I found a bug in my use case that was so easily fixed it seemed like an omission, only to realize that it was deliberate due to some other, older edge case that had been coded around. I ended up with the same result, however I will say that at least the jQuery team was very polite and respectful and was more than willing to discuss the issue at length, help explain the pros and cons of either scenario, and we were able to end up with a new, third workaround that should work with both edge cases. Sorry that yours went the other way, but I found it spooky how closely your experience mirrored mine, despite a completely opposite resolution.