TEIC / TEI

The Text Encoding Initiative Guidelines
https://www.tei-c.org
Other
268 stars 88 forks source link

How to handle deprecation affecting the writing of ODDs? #2496

Closed raffazizzi closed 4 days ago

raffazizzi commented 8 months ago

Recently (Oct 2023), we deprecated @calendar on a number of elements and in order to enact the deprecation as best as we could, we made changes to the content of att.datable (more info). While the resulting schema will permit @calendar to exist (with a warning) in the same places as before, ODDs will not be able to include @calendar by simply making an element member of att.datable. This change itself did not have a deprecation warning besides a message to TEI-L -- should it have a more formal warning? Should it last as long as other schema changes?

In the past we have been making these changes without deprecation. See for example the release notes for 4.6.0: https://www.tei-c.org/release/doc/tei-p5-doc/readme-4.6.0.html

Changes to classes The model.glossLike class (which contained altIdent, equiv, and gloss) has been renamed to model.identSynonyms.

This change was not preceded by a deprecation period.

sydb commented 8 months ago

In addition to the class change made for 4.6.0 that @raffazizzi points out above, many other such changes have been made without a deprecation period. None of the following, each of which introduced a change that would likely require changes to some ODD files, were deprecated or (in most cases) even announced in advance:

Or the following, which might have required a change to some ODD files:

My point is that the TEI has never deprecated ODD changes before (by which I mean changes that may require changes to a schema specification, but would not, by themselves, require changes to encoded transcriptions); rather, such changes are simply instituted without warning above and beyond the release notes. And, to my (possibly faulty) recollection, no one has complained about the lack of a deprecation period.

I believe that our commitment to, whenever feasible, deprecate changes that break backwards compatibility (the “Birnbaum Doctrine”) is intended to apply to changes that affect the validity or correctness of existing transcriptions, not existing schema specifications.

sydb commented 8 months ago

I realize I should explain why I think we should not work on a deprecation mechanism for changes to classes. In short, it would be hard to do. Really hard, perhaps impossible. And (as alluded to above) the benefit to ODD writers is pretty small. (Remember, as a general rule, no one has to update their ODD to match the latest version of the Guidelines; they very well may want to, but the pressure to switch is generally internal to their project, not from the outside world. I.e., it is very rare that an upgrade to a newer version is required due to an old one breaking. Not sure it has ever happened.) Thus the cost-benefit analysis makes it clear (at least to me, although to be fair, I may be overly pessimistic) that we should continue with our admittedly somewhat cavalier attitude about breaking ODD backwards compatibility. The benefit to ODD writers would be real, but overall pretty minor. The cost, however, would be very high: I really believe that we (Council) would get a lot less done during the ½–2 years spent developing such a mechanism, and then a moderate amount less done every year thereafter (because implementing the system would take time & effort, too). We are already really far behind as it is.</rant>

All that said, being better about announcing potential ODD-breaking changes as such in the release notes might have a much better cost-benefit ratio. (Perhaps we should even make a habit of separating out those changes that we anticipate might break some ODDs into a separate section.)

P.S. I have not really thought through the mid-level solution of a boutique <constraintSpec> for each possible ODD-breaking change. I suspect I may be against the idea, but it is much more reasonable than a generic mechanism.

raffazizzi commented 7 months ago

Given that's been a week and there's been no comments from the community (either here or on the email list), I think you're right, @sydb. No need to give advance warning for these changes. We just need to continue to list them on the release notes.

raffazizzi commented 7 months ago

At 2023-11-10 council call we agreed to not deprecate these changes and to continue documenting them in the release readme.

Additionally, we want to document this practice better, so before we close this issue we will need to update TCW documents as follows.