Ross Fenning's Digital Garden

Semantic Arguments

As a species, we like to debate a lot. There are debates over politics, religion, music, art, films, programming languages, ethics, favourite "My Little Pony" character and many more important topics.

One of my favourites in the web engineering world is debates about what "REST" is or is not. While I argue there is value on understanding what REST was originally defined to be, I'm probably inviting a debate with arguments such as "REST isn't that, it's this" or semantic debates about whether a given system "is RESTful" or not.

What's missing in that hypothetical argument? Something that's missing in a lot of discussion on the web about this: any concrete discussion of whether properties of the thing being discussed are good or useful. We are just focusing instead of whether things qualify for a label and possibly not even acknowledging that all sides involved could be using different definitions for that label.

This happens in multiple fields:

The debate has broken down to arguing the ontological commitments made by assigning something to a class or category, rather than discuss the thing originally being debated. Consider the productive discussions we could have with each of these examples:

These are arguably a more epistemological debate around what we know about these nuances, how our opinions are justified and what beliefs are reasonable and rational. We are also viewing politicians -- to use that example -- through a lens where we judge people on their actions, policies and effectiveness thereof, rather than on whether they are "truly left wing" or "a true Conservative".

Don't accept someone saying they do not like a programming language because, for example, it is "not truly functional". Ask instead to debate the merits of various features. Perhaps also ask to focus on the objective qualities of a programming language.

As I've covered in both REST and programming language, the semantics and proper use of labels should not be ignored. They are a useful proxy and shortcut for getting across our meaning. If I say a web service is not "RESTful" (i.e. does not follow the REST architectural style) then I'm taking a shortcut for talking about how it's coupled to its clients or too reliant on out-of-band information for integration, which couples it further.

Where we need to be careful is that arguments cannot progress if we argue over labels without unpacking what definitions we are using for those labels. If we fundamentally disagree on what a label means, then perhaps we need to drop semantics altogether and talk only about properties and nuances for a while.

When someone says "this is not music", they are telling you they do not like it. A reasonable person might be willing to expand on it further or you might uncover prejudices that led to their knee-jerk dismissal of that genre. Again, the debate cannot progress if two sides disagree on the definition of music, but discussion on why our definitions differ would be interesting.

If we call a leader "not left wing" or "not a real Conservative" we are likely alluding to specific policies or actions with which we do not agree. Maybe we can discuss those further? Maybe we can recognise that even in a right wing government, some traditionally left-wing policies make sense in the modern world? Perhaps these ideas are not so imcompatible?

I assert that behind any semantic discussion is a more useful debate waiting to happen. So, next time someone tells you some music "isn't music" or some art "isn't real art", instead of justifying why they do fit those labels, ask instead what they like and do not like about it. Maybe even discuss why people like different kinds of art and music.

Not only might we learn a lot more, but we might even get along a lot more.