These naming and classification issues are often the artefact of software abstraction. When you want to support a large array of different devices/behaviours/services you have to create abstractions and group different types of behaviours. However, not everything fits neatly into any one particular set of abstractions.
You can propose different abstractions, groups, classifications and some sets will be better for some things and some for others, but you will always end up with some outlying weirdness.
Switch is a classic example, as the word “swtich” is both noun and verb, so is ambiguous. “A switch” can be seen as a device that allows something to be controlled - a light switch affords switching something. “To switch” is to actually enable/disable/select/toggle, power on, power off a thing - a plug outlet “can be switched”… and of course in our whacky world of automation a light switch can switch a plug outlet on!
It doesn’t matter if you base your abstraction/naming/classification model on verbs or nouns (behaviours or properties) there will always be outliers. If you attempt to use a mixed bag of nouns and verbs it might just be confusing.
The other aspect that often causes issues is the perspective and context. When you look at things on paper or a whiteboard during design things appear clear, but when you come to implement them and find that some things you labelled as distinct actually turn out to be pretty much the same thing and are so close to being the same thing, you end up using the same construct to define them.
This is not new in Home Automation, but has been a challenge for software engineering since it began. Take a course in computer networking and you will find any network can have multiple views that look completely different depending what questions you are trying to answer or what properties of the network you are trying to communicate. Not just one or two, but sometimes dozens of seemingly distinct diagrams of the same network.
I could propose different naming/abstractions for home automation, but it wouldn’t matter as I doubt there is a perfect model that will please all and not have ambiguity or confusion somewhere. In my own home automation software I hid the confusing details close to the devices. If I want to control heating, I use a heating controller, whether that uses one type of switch, relay or another, or actually swtiched 6 different things or if it turns the heating on by posting a facebook message is hidden there in. But I am not dealing with the 100s of different devices available all at once like HA is. I’m only dealing with the handful I have and can add code to support different ones as they are needed. A privileged position that not many are in.