LibFM version guidelines
The main reason for these guidelines is optimal API stability to keep software up to date but cause as few problems to developers as possible.
- Major version number (X.0.0) is changed only on major API rewrite, which is incompatible with any previous. Hopefully will be never required.
- Minor version number (1.Y.0) is changed with new feature pack. The most probably that will happen not very often.
- Micro version number (1.2.Z) is changed when some bugs are fixed but no new features added.
Libary ABI change
Library ABI number change guidelines are described in many places. In short, that happens when some API are changed or removed. For stability reasons this should happen not more often than once per two minor version updates, preferably more rarely.
API deprecation is always unfavoured. For the best it should never happen. But if that happens then deprecated API should stay for applications backward compatibility for at least two ABI numbers, i.e. the ABI number when it was marked deprecated and next after it. For example, some API was active in libfm.so.3, when libfm.so.4 came it was marked deprecated in it, but it still should stay in libfm.so.5 and can be removed in libfm.so.6, hopefully all applications will migrate to new API by that time.