There's a tag on the main page called , which is very schizophrenic. Specifically, the excerpt says

Questions about interface related design considerations, such as programming to the interface.

to wit "everything about the idea and use of an interface (meaning the hopefully well-defined contact-point between things), as in API, UI and the like".

The tag-wiki on the other hand only lists questions about Java-style interfaces (which might be part of an interface or not, but I digress), as representative of the questions under the tag.


Is the excerpt right, or the tag-wiki (meaning the tagged questions)?

Or did I misread something there?

  • 1
    Or is this just another manifestation that people don't read the tag description when tagging questions. Aug 6, 2018 at 9:28
  • 1
    Looking through the questions tagged interface, it would appear that interface means "an abstract type that contains no data or code but defines behaviors as method signatures." Java is not the only language with such things. See Software interfaces in object-oriented languages. Aug 6, 2018 at 20:42
  • 2
    I would argue that object-oriented data abstraction also presents an interface, even though it is based on procedural abstraction instead of types. Plus, functional languages (may) have interfaces, but they often don't have methods. Aug 7, 2018 at 0:03
  • @RobertHarvey As the page you linked says, interface is a far more wide-reaching concept, which does not in any way imply use of object-orientation, or specifically Java-esque interfaces. And though such restricted abstract base-classes aren't only called interface in Java, it is AFAIK the language which made that (ab-)use popular. I obviously agree that most questions in the tag are about Java-style interfaces instead of software-theoretic interfaces, though the excerpt does not in any way mirror that. Aug 7, 2018 at 11:28
  • @BartvanIngenSchenau That people cannot or simply will not read is beyond question. I'm guilty far more often than comfortable to admit myself. Doesn't change the fact that there is something to improve here, be it by adopting the scope or retagging, and fixing the excerpt and wiki to match the approach taken. Aug 7, 2018 at 11:35
  • 1
    Well, I like Stack Overflow's tag wiki. stackoverflow.com/tags/interface/info Aug 7, 2018 at 18:12
  • 1
    @RobertHarvey if interfaces in OOP were Java-style interfaces, that would even be right. Unfortunately, the first doesn't even remotely imply use of the second, nor an equivalent. Aug 7, 2018 at 20:41
  • Not sure what you're trying to say there, @Dedup. I'm merely pointing out that SO's tag wiki is already better than ours by a long mile. Aug 7, 2018 at 20:59
  • @RobertHarvey Yes it certainly looks better, but they still have the same issue to a maybe smaller degree. Anyway, it's not even right about Java interfaces. Aug 7, 2018 at 21:00

1 Answer 1


I guess the reason for currently having just a list of examples for the language element "interface" in the tag Wiki is simply caused by the fact Yannis at 2012 chose some popular interface questions (at that time) to fill the Wiki with some initial content, and noone else bothered about it after that any more.

As you already know, the term is much older than languages like Java or C# which provide a specific interface keyword / concept, so IMHO the excerpt fits better than the current tag Wiki.

However, I don't see much value in providing two different tags, one for "interface" as a specific language concept, and one for the more general meaning. The borders between these two concepts are not that strict, they are not mutually exclusive.

So my suggestion here is to improve the tag Wiki

  • by mentioning the fact the term is sometimes used on different levels of abstractions, and the precise meaning may depend on the context

  • by extending the list of examples by links to questions about "interfaces" in the more general sense

  • or, if someone is willing to take the time, adapt the SO definition to SE.SE

  • 1
    So, you are saying interface, as a programming-element like class in some object-oriented languages (and sometimes called trait, protocol, ABC without instance-state or what-have-you), and interface, as a software-engineering-term referring to the exposed intended contact-surface of a thing, being unrelated concepts on different levels of abstraction is no reason to give them each a tag, or at least acknowlege both and their fundamental differences in tag-wiki and excerpt? Aug 8, 2018 at 18:06
  • 2
    @Deduplicator: where the heck did you read in my post I am saying those are unrelated concepts? Quite the opposite, I wrote explicitly the borders are not that strict. "interface" as a keyword in Java or C# is just one example of how interfaces in the general sense can be manifested. Do you agree?
    – Doc Brown
    Aug 8, 2018 at 19:29
  • interface is just as much a way to define an interface as is class, struct, variable-definition, function-definition, constant-definition, enumeration-definition, namespace, … or any other way to define a symbol, or a group of symbols. Aug 8, 2018 at 19:55
  • @Deduplicator: is this a "yes" or "no" to my questIon?
    – Doc Brown
    Aug 8, 2018 at 20:40
  • Paraphrased: The keyword used in some single-inheritance oo-languages and the concept used in software-engineering are about as related as single walnuts and whole potatoe plants. Aug 8, 2018 at 20:49
  • @Deduplicator: well, there is nothing wrong when you have a different opinion than me, no need to hide that in cryptic comments, just say it. I told you my opinion of how to deal with the question you brought on to the table, just take it or leave it, but please don't twist my words into the opposite meaning (and note the downvote button is for bad answers, not for saying "I disagree"). Maybe we get feedback from the other experts.
    – Doc Brown
    Aug 8, 2018 at 21:00

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .