The EditAttemptStep schema's save_failure_type and save_failure_message fields contain lots of useless data.
Some editing interfaces actually log the error message shown to the user in save_failure_message. This text is localised, so it's difficult to compare the data between different wikis, or estimate how often errors occur globally. Also, it can contain personally identifiable information (e.g. your IP address could be shown in the error message for when you're blocked), forcing us to be very careful when sharing the result of any queries on that data.
Some other editing interfaces instead log the name of the error message in save_failure_message, which is only slightly better, because many of the messages are defined by the abuse filter settings, and also differ between different wikis.
save_failure_type is supposed to group some error types (e.g. 'extensionAbuseFilter' for all abuse filter messages), but it doesn't work correctly in many cases, partially because of the above and partially because the format of the errors has changed since this code was written and they're not detected right.
I think the original idea was for save_failure_type to cover all possible errors, in which case it would be okay for save_failure_message to contain this excessively-detailed data for debugging, but it doesn't even come close, and new and exciting error types are continually being invented.
All editing interfaces should follow what we did with DiscussionTools (and which is actually useful for analysis like T270346#6702699) and log API error codes in the save_failure_message field.