<IMG> is one of the many quick hacks produced by the NCSA/Netscape developers in their relentless pursuit of functional, featureful Web software.

In this case, the feature was inline images in HTML documents. Marc Andreessen didn't give other WWW developers much time to comment, he just went ahead and added it to Mosaic.

One of the basic design principles of the WWW is that document types are properties of the documents themselves, not of the documents using them or referring to them. In HTTP, document types are provided with the document as a MIME type. The client is expected to be prepared to handle whatever document type is being sent in a manner appropriate to the type. What it can do is announce the range of document types it wants to receive as part of the HTTP request.

The Mosaic developers never bothered to implement this. They always asked for all types but were only really prepared to handle a limited range. The IMG tag is a case of bad design because it limits the range of document types to images, which is unnecessary and which should be done using MIME types anyway. A proper design would use <OBJECT> or <EMBED> as the tag name and specify the ranges of document types it is prepared to handle in the HTTP request. This is implemented in other browsers.

Like so many broken features from the Web software NCSA was producing at the time, the IMG element was later patched up and worked around to provide a little more flexibility, but we will be stuck forever with the broken core. On the other hand, without this attitude of 'release first, think later' none of us would have heard of the Web today.