VCGLIB: Refactoring with a sledge hammer
18 Dec 2014My R-package Rvcg is (as the name suggests) based on the VCGLIB library. Unfortunately, they do not version their releases and I am simply using snapshots that I update about every 6 months. And each and every time, they break stuff. Not that there was a nicely documented and comprehensive API to begin with (some of the inline documentation is even in Italian) - I usually try to guess how to set up the structures and algorithms by reading the code of meshlab plugins.
I don’t know. I guess, they just don’t care.
It usually takes me half a day grepping through code and examining diffs to find where they broke things. If I am lucky, there are simply changes in the high-level functions’ names (often for no obvious reasons). If I am unlucky (more often than not), member functions disappear, are combined, get reshuffled or the whole thing gets a complete overhaul. I would be fine with that - if there was proper documentation of the changes.
The lesson I learned from this is NOT to do this but instead trying hard to provide backward compatibility and break things only in major versions.