I am currently working on a startup project for my own company, and this has been part of the reason for the long hiatus of this blog, as more pertinently for this post, the cause of me having to trawl through literally tens of thousands of lines of code from various open source projects which shall remain unnamed, in various languages in an attempt to avoid reinventing the wheel unless absolutely necessary.
One disturbing fact has come to my attention regarding open source projects in doing so, one that confirms observations I’ve made many years before, but never really had a firmly formed opinion on:
It seems by the time an open source project has reached some level of mass adoption or awareness, most of the time the projects codebase will have degraded into such a poor state as to where it is completely stagnant, or even worse, unmaintainable.
I’m not quite sure why this is, but I could throw out a number of theories, maybe it is:
- Lack of discipline from core developers in enforcing good practices.
- Demands for backwards compatibility locking in frameworks into poor, inflexible API’s, unable to refactor away poor past decitions.
- Tendency among core developers to let in poor code contributions to appease community members.
- Overeagerness to constantly add (sometimes unneeded) features and chase higher version numbers, rather than “sharpen the saw” and improve the core codebase and feature-set.
- Just naturally occurring entropy over time and no one dealing with it?
I don’t have any definitive answers, but I think the problem is too big to simply ignore, as the answer may give us a good indication as to what possible actions we may take to avoid the pitfalls of degrading code quality in large, multi-developer projects in general.
If anyone has any reasonable theories, or can point me to relevant research, I would be very happy to hear about it!