I have a theory, listen carefully.
A theory about why FLOSS sometimes sucks so bad.
Keep reading.
Many of us do FLOSS coding for the ultimate glory of just doing it. Learning, filling empty days with something to do or simply because we need to feel important for somebody else (I’m pointing the finger to you, behated [my opposite of beloved] library developers).
A rainy Sunday is still a rainy Sunday, and most of us find the couch and afternoon naps quite boring.
Here comes the problem. Developer Joe has a boring afternoon to fill, so he starts thinking about how to improve the API of his library that, accidentally, hundred of thousands users are happily using and find fine as it is.
He starts coding and messing with it and, since he’s a free mind, he doesn’t have to respect any API deprecation rules that most companies (for example) have in place for morons like him. Of course, there is no roadmap, Joe just woke up in the morning and decided to change everything. He also has the excuse that he’s not paid and doesn’t give a fuck about supporting users. He just wants to show how good he can be writing code (hoping to get hired by Google, IBM or Oracle — thank god the guy [Developer Joe is a creation of mine] knows ubuntards and doesn’t expect Canonical to hire him after a mission-impossible phone interview where the hardest task was trying to figure out what the interviewer was about to say).
So, it happens that a small change in the API, causes a small change in the ABI, that eventually, causes its shared object name to get bumped from libjoe.so.1 to libjoe.so.2. The little tiny small invisible change Joe did, for sake of speed and architectural cleanliness (OF COURSE! IT HAD TO BE DONE (sarcasm)) breaks other 35 applications and in general around 425 shared objects that were linking against it, requiring their developers to understand what Joe did, voiding all the testing their applications got until now and eventually+hopefully making the program working again with the new libjoe, spending the next two weekends (oh, they don’t have anything else to do, too).
It’s a perverse game that will never stop.
What’s the moral? Unknown people will indirectly break your application someday, and it’s not a security flaw, it’s just because they were getting bored.
Any solution? Yes, don’t use lame fuck people’s libraries.