In the late 1960s, as computers started to be widely used in certain arenas, a group called the Graphic Communications Association (GCA) created a layout language called GenCode. GenCode was designed to provide a standard language for specifying formatting information so that printed documents would come out looking the same, regardless of the hardware used.
In 1969, Charles Goldfarb led a group of people at IBM who built upon the GenCode idea and created what became known as the General Markup Language (GML). Where GenCode was primarily a procedural markup language, GML strove to define not only the appearance, but to some degree, the structure of the data.
Nearly 10 years after GML emerged, the American National Standards Institute (ANSI) established a working committee to build upon GML to create a broader standard. Goldfarb was asked to join this effort, and has since become known as the "father of SGML," which was the end product of ANSI's efforts. The first draft of SGML was made public in 1980. The final version of the standard emerged in 1986.
Since that time, the language has been enhanced as needed. For example, in 1988, a version of SGML was created that was designed specifically for military applications (MIL-M-28001).
Other additions to the language have been incorporated over the years, and now some people feel that SGML suffers from complexity bloat.
Generalized markup is based on two postulates:
- Markup should be declarative: it should describe a document's structure and other attributes, rather than specify the processing to be performed on it. Declarative markup is less likely to conflict with unforeseen future processing needs and techniques.
- Markup should be rigorous so that the techniques available for processing rigorously-defined objects like programs and databases can be used for processing documents as well.