Why is backward compatibility important?

In yesterday's email, I mentioned that deprecating code allows it to be backwards compatible - but what does that mean?

If I were to remove a function like drupal_set_message() that is used code elsewhere in an application, the code would no longer work and would break.

As a module or library maintainer, I don't want to cause applications to break by making backward incompatible changes (a "BC break" or a "breaking change").

Maintaining backward compatibility means that people who use the code can update to the latest version without breakages, and if they use any deprecated code, they know to update it to be compatible with future versions.