I made this comment several months ago:
Moderators can do their best to ensure it's used as intended. On SO, I
remove the xcode tag from posts about 10 times per day. My question
would be whether or not this tag is applicable when rolfl's point 1
applies but point 2 does not.
The two points I'm referencing here are these:
- you are specifically trying to mimic some system/behaviour
- you know that there are libraries, language features, etc. that do what you need.
I think the 3rd and 4th points in rolfl's answer are always irrelevant. I think that point 2 might be irrelevant also. If reinventing-the-wheel is going to stay, what's wrong with using it when trying to implement something that already exists, but there's not an available way of implementing it (to your knowledge) without writing the code from scratch?
For example, take the alerts that pop up on an iPhone. Let's say you want to be able to specify the location and background color of the alert (two things I don't think can be done with the UIAlertView
class which produces the standard looking alerts). You've written some code to produce your own custom alert which acts exactly like the default iOS alerts... it just looks different. Does this count as reinventing-the-wheel? It certainly falls under point 1... but it doesn't necessarily fall under point 2, because for argument's sake, there's not a library on github that does this to my knowledge. Perhaps I'm trying to develop the first open-source library that lets me do this.
Now, independent of that question, let's look at a case where points 1 and 2 actually both apply. It just so happens that on github I've written a library for connecting Objective-C applications to MS SQL Server. I also know that there is at least one other library out there on github that existed before mine.
The idea of the reinventing-the-wheel tag seems to be "Hey, don't post an answer linking me to another library!"
In this specific case, I am beyond confident that my library is better in every aspect than the already existing library. Should I be obligated to tag my question with reinventing-the-wheel to prevent answers which link me to the inferior library?
The problem with answers that say "Hey, someone already did this for you!" is that they tend to not actually review the posted code, and they tend to make no effort to demonstrate why the library they link to is actually better than the posted code.
These points are made mostly for discussion, but particularly in light of my last point, I feel that reinventing-the-wheel should be burninated, and questions that do no more than link to an existing library and say "You should just use this instead" (without explaining why that library is better than the code asking to be reviewed) should be deleted as non-answers.