In Defense of Duplication
A meme going around PHP lately is that developers should stop building open source libraries that duplicate existing establish packages. I couldn’t be more against this line of thinking. A few points on why.
Duplication Is How Technology Moves Forward
no matter what tech you are talking about it always evolves by people building on what came before. Sometimes directly, other times by taking a slightly new angle on the issue.
We tend to think of technological advancement as huge leaps but of course it is the slow grind that pushes us forward year after year.
You Can’t Know the Future
3 years ago if I told you an .NET/COBOL developer would build a hugely popular PHP framework that would be a big part of the revitalization of PHP you would call be bat shit crazy. But we can’t know the future. We don’t know who will come up with the breakthrough at the exact right place and time.
3 years ago people said we had plenty of PHP frameworks. Codeigniter might have been somewhat neglected but it was still being moved forward by users and was easy to use. If you wanted a “real” framework we had Zend and Symfony. Beyond that all the others like Cake, Yii, etc.
Lucky for us at the time nobody gave a hoot about PHP and so nobody bothered to tell Taylor that Laravel was stupid and pointless duplication.
Duplication as Learning
Often those objecting to duplication are very accomplished developers. Yes, for these people building Yet Another Cache Package may be a waste of time. However for a less seasoned developer, the process of building a package that duplicates high quality existing packages can be a great learning experience.
This is especially true in open source where the dev may often be working in isolation from other more experienced engineers.
This also leads to the obvious other issue of what should they build instead? People often bring up more complicated problems that people should be working on. In my experience in open source though telling others what they should build doesn’t work very well.
It’s also very often the case that the developer is not ready to take on that more complicated project yet. There’s nothing wrong with them taking in more established problems before moving on to bigger fish.
Let’s Not Discourage Future Greatness
I get really concerned that when we talk down about these projects that seem duplicative we’re pushing out developers who may bring PHP great innovations in the future.
Keeping the community a positive welcoming place is really hard, but so important.
Why Do You Give a Fuck?
Finally :) there’s 800,000 packages nobody uses on Github. Is one more really a problem? Is it actually causing confusion? Seems very unlikely to me.
The downside is so minimal and the upside so great. Let’s keep encouraging people to develop new code in PHP and the rest will work itself out just fine.