I’ve become frustrated over the years with the amount of churn there is in the technology / programming languages space.
There seem to be a couple different types of churn.
- Things that are upgraded without regard to backwards compatibility and therefore cause breakage.
- Things that work are replaced with other equivalent (or slightly improved) ways of accomplishing the same thing.
The Ruby / Rails community is famous for breaking compatibility between releases.
The Python community on the other hand seems to have a different issue where new things are developed to replace the current system, and after a while you have 3 or 4 different ways to do the same thing, and you have to figure out which way is now the best (and there are usually trade-offs because none of the alternatives actually support all the options of the other ones).
Microsoft is sort of famous for it’s tendency to every couple of years have a new favorite way to accomplish various tasks. Usually the old way is still available, but not as well supported going forward.
The Java world seems like there was a long time where new things would be started, and then not really ever finished, so lots of APIs and packages sort of languished with unfinished functionality.
Languages with High Churn
- Ruby (type 1)
- Microsoft languages (type 2)
- Python (type 2)
Languages with Low Churn
In the case of Perl, low churn doesn’t mean that new stuff isn’t getting developed, it just means that usually the old way of doing things is still stable and well supported. This may be the case in other low churn languages also.