I was talking to a technical boss yesterday. Its about a project in C++ that depends on opencv and he wanted to include a specific opencv version into the svn and keep using this version ignoring any updates which I disagreed with.We had a heated discussion about that.
Everything has to be delivered into one package and we can't ask the client to install external libraries.
We depend on a fixed version so that new updates of opencv won't screw our code.
We can't guarantee that within a version update, ex from 3.2.buildx to 3.2.buildy.
Buildy the function signatures won't change.
True everything has to be delivered to the client as one package,but that's what build scripts are for. They download the external libraries and create a bundle.
Within updates of the same version 3.2.buildx to 3.2.buildy its impossible that a signature change, unless it is a really crappy framework, which isn't the case with opencv.
We deprive ourselves from new updates and features of that library.
If there's a bug in the version we took, and even if there's a bug fix later, we won't be able to get that fix.
Its simply ineffiecient and anti design to depend on a certain version/build of an external library as it makes our project difficult in the future to adopt to new changes.
So I'd like to know what you guys think. Does it really make sense to include a specific version of external library in our svn and keep using it ignoring all updates?