Disclaimer: I am not a programmer and I only assume that I can get the general concept of semantic code.
While I can understand the good intentions of sticking to semantic code, I am not sure that the programming community, as a whole, has reached the point of properly applying it. I am saying this from the point of view of a user. Take this example: I can no longer use non-tab elements in my tabs menu. We can no longer put a non-tab-button element between tab buttons. The rationale is that this does not comply with the semantic approach. But putting non-tab-button elements between tabs s something which I need every now and then. When I need it, from the the position of a “simple user” I just don’t care if it is semantic or not if I cannot achieve my goals.
Well, at the same time, I can appreciate the effort of developers to bring structure and logic to the development process. If the semantic approach is a correct one, let’s stick to it. The problem is, though, are we sticking to it properly? If it brings limitations to possible functionalities, then there’s something wrong with how we interpret it, isn’t there?
Even while not being a developer myself, I have stumbled upon heated debates over the semantic approach. E.g. the classic tables example (http://programmers.stackexchange.com/questions/277778/why-are-people-making-tables-with-divs). While I am not competent to get any in-depth understanding, I can get the superficial impression that currently the semantic approach is being taken far too literally. I mean, if something is considered a hack, if it is seen as breaching the legitimacy of the semantic paradigm, and if at the same time, that thing is bringing an elegant solution on the table, shouldn’t we “legitimize it” on the grounds that it does resolve the task set?
Another example would be this case: Should we let go of the columns widget? . The columns widget might be the semantic approach, but if I find it too cumbersome and prefer to use the “hack” of floats, then I am not using the semantic approach anyway and then obviously the semantic approach is inadequate and inviable, and there’s something wrong with how it is being prescribed.