MMM : Technical characteristics

Reference documentation, standards

During the design and development of MMM, we attempted to comply to the available (or proposed) standards for Web applications. Most of these standards are defined in RFCs or recommendations from the Web Consortium:

However, the browser is not fully compliant. Some known problems are listed below. If you find more problems, please report them to me, giving


MMM is a lot less tolerant than most other browsers. Thus, if MMM complains about errors in a document, or doesn't display "correctly" a document according to you, whereas Mozilla or Explorer just handle it, the culprit is not necessarily MMM : it may be the document. Moreover, and I can't repeat this enough:

The implementation of tables is bogus.
The implementation of tables is bogus.
The implementation of tables is bogus.
The implementation of tables is bogus.
The implementation of tables is bogus.
The implementation of tables is bogus.
There. You've been warned.
And it's slow.
And it uses heaps of memory.
Please don't complain about tables. I strongly believe there is not proper way to support tables with the Tk toolkit, as of version 4.{0,1,2}.


Architecturally speaking, the browser is formed of several relatively independent components:


HTML Viewer

MMM implements an HTML viewer (documents of type text/html) conforming to HTML 2.0, and on some points to HTML 3.2. Lexical and syntactical analysis respect (in principle) the subset of SGML used in the definition of HTML, and a given DTD (HTML 2.0 or 3.2). Only SGML minimisation rules are implemented. Syntactical analysis does not check tag attributes (although the viewer has to check some of them, obviously). The capabilities of displaying in-lined images are exactly the capabilities of Tk image loading. Currently, only GIF, of MIME type image/gif (except for interlaced GIFS, animated GIFS, and an approximative treatment of transparent GIFs), PNM and XBM images formats are supported. More image formats can be supported through Tk extensions (external dynamically linked libraries). For example support for PNG and JPEF (non progressive) can be obtained through libraries. In recent versions of MMM, animated GIFs are supported with additionnal specific code

Image loading

There are several modes for image loading, configured in the Preference panels. Image loading uses an internal queue, with a limit on the maximum number of simultaneous network connections dedicated to images.

Other viewers

For other types of document (except text/plain for which there is also a builtin viewer), MMM calls metamail. A proper configuration of metamail (through the ~/.mailcap file) can provide viewers for most of document types used on the Web.


There are two cache levels in MMM : the first level is a graphical cache, where we keep the displayed version of a document. The second level is a traditional cache (in memory or on disk), where we keep document sources (only for text documents).

Known Bugs

HTML compliance problems
The following problems are known:
HTTP Protocol
Only the most used subset of HTTP/1.0 is implemented. Only the GET, HEAD and POST methods are supported.