BackgroundI have recently taken up a new job as a developer at a company where I have inherited an in-house CMS built approximately 5 years ago. The CMS constructs pages in XML which are then output to the page as HTML. Some of the markup is generated within the back-end PHP, whereas some is exposed to the user in the administration layer, to enable editing. So far I have observed that none of the markup is semantic: 95% of it is plain text wrapped in  tags, like so:<div>    This is a heading</div><div>    This is a subheading</div><div>    This is a paragraph.    <div>        <a href='#'>This is a button</a>    </div></div>(The markup has nested divs where required and utilises classes, but the above is intended as a demonstration that semantic tags are not in use.)I am the only developer responsible for front-end work at this company: the previous front-end developer has left. I was informed in the handover that semantic markup should never be used, and that I should maintain the markup style going forward. I was unable to elicit any technical explanations for this structural decision, and the other employees at the company do not know either.For now I am going to maintain the system consistently, but in the meantime I am investigating why this structural choice might have been made. Originally the platform would have supported IE8, but in the present day we support IE9 and above. Experiments with the templating system show that the CMS can handle semantic HTML, and my testing demonstrates that the generated webpages function as expected. I can detect no problems caused by the introduction of HTML5 semantic elements in any modern browser (though I have not yet attempted to test in IE8). QuestionWhat are possible technical reasons for deliberately excluding the use of semantic markup from a web project?NB. Some companies have atypical in-house rules, and working at those companies entails following the rules, regardless of opinion. My question is not whether I should maintain the status quo or change it, but what reasons might have affected the design choices in the first place.
Are there good reasons for avoiding the use of semantic HTML markup?
html;html5;semantics;markup
Using semantic markup has a number of advantages:We get sensible default styles for many things like emphasis or tables or links.We get a number of user-interface elements with pre-built appearance and behaviour, like <form>, <a>, <input>, <select>, or <details>.We get a base level of accessibility since assistive technologies can interpret the HTML tags.Semantic markup may help search engines and other user agents to better understand your content (e.g. services like Pocket or Instapaper or the built-in readability view of some browsers try to extract relevant content for a better user experience).But these might also be unnecessary, or may be drawbacks.Default styles are inconsistent between browsers. You more or less have to reset them first before your can build upon them with custom styles.Default styles don't help much if you aren't writing text. In fact, they tend to be a hindrance when doing layout. You pretty much end up with <div class=component> regardless of your intentions.It is difficult to style some built-in elements. If you're trying to build a consistent user experience, it might become interesting to develop your own user interface elements. E.g. you can't build a rich-text editor from a <textarea>. You can't consistently style scrollbars.You might not need accessibility (unlikely in many regulatory environments), or may prefer to implement the necessary accessibility features yourself through CSS and aria-* attributes.You might not need to be search-engine friendly. Also, there's some evidence Google is more interested in the styled appearance of your page than in your page source.But that assumes the original developer considered these cases and made a conscious decision for or against them. This may not have been the case, and the actual cause may be that:it was considered too difficult to educate users of the admin interface about available tags and their proper use (my favourite abuse: <br><br> as a paragraph separator because people don't understand <p>).there was some FUD (fear, uncertainty, disinformation) about browser support for some semantic tags, so it was considered to be safer to use none of them.additional tags would have complicated the XMLHTML transformation too much.As the original developer has left, they have no say in the future development. Whatever it was, you don't know their reasoning behind the design decision to only use <div>s. If none of the above ideas make sense in the context of your CMS, you could assume that no real reason exists. In that case, and if semantic HTML would provide value to the project, it would be good to suggest the appropriate changes.