Hi!
Consumers of data generally cannot tell whether the
addition of a new field to
a data encoding is a breaking change or not. Given this, code that consumes
encoded data should at least produce warnings when it encounters encodings
that it is not expecting and preferably should refuse to produce output in
such circumstances. Producers of data thus should signal in advance any
changes to the encoding, even if they know that the changes can be safely ignored.
I don't think this approach is always warranted. In some cases, yes, but
in case where you importing data from external system using a generic
data exchange format like JSON, I don't think this is warranted. This
will only lead to software being more brittle without any additional
benefit to the user. Formats like JSON allow to easily accommodate
backwards-compatible incremental change, so there's no reason not to use
it.
I would view software that consumes Wikidata
information and silently ignores
fields that it is not expecting as deficient and would counsel against using
such software.
I think this approach is way too restrictive. Wikidata is a database
that does not have fixed schema, and even its underlying data
representations are not yet fixed, and probably won't be completely
fixed for a long time. Having software break each time a field is added
would lead to a software that breaks often and does not serve its users
well. You need also to consider that Wikidata is a huge database with a
very wide mission, and many users may not be interested in all the
details of the data representation, but only in some aspects of it.
Having the software refuse to operate on the data that is relevant to
the user because some part that is not relevant to the user changed does
not look like the best approach to me.
For Wikidata specifically I think better approach would be to ignore
fields, types and other structures that are not known to the software,
provided that ones that are known do not change their semantics with
additions - and I understand that's the promise from Wikidata (at least
excepting cases of specially announced BC-breaking changes). Maybe
inform the user that some information is not understood and thus may be
not available, but not refuse to function completely.
--
Stas Malyshev
smalyshev(a)wikimedia.org