API Backward Compatibility: Safe Changes, Breaking Changes, and Migration