Zen as a Web Browser aims at a few things to make it worth creating in this world where web browsers come in plenty. The initial idea when the project was started was to provide a web browser for the Linux framebuffer, using the library named oFBis. That means it should be able to render images without having to run X. From this then came the idea of separating the user interface as much as possible from the rest of the program, and making it possible to have several different user interfaces from which the user can choose from when running Zen.
Modularity in all its glory, the idea of modularizing the parsing of the different tags also came up. This is however not as big an issue and is for now only placed on a mental list of things to implement later.
The name Zen does not have much to do with browsing the web, but rather reflects the state of mind in which the author is trying to put himself in when programming. Zen is a long term project, and will take an unspecified amount of time to write. Time is not relevant in the world of Zen. We all live in all times, moving along slightly different time axis.
The internal structure of Zen is divided into the following parts:
* Protocols - handles loading of the file, via the file structure, the HTTP protocol or the FTP protocol.
* Parser - gets a stream from the protocol and parses this input as HTML code, creating a linked list of different kinds of parts.
* Images - is responsible for reading images, using the best suited method, and convert them into a format specified by the user interface. This part can use one or more of the image libraries libjpeg, libpng, libungif (or giflib) and libMagick.
* Layouter - takes the linked list created by the parser and arranges them by positioning them on X and Y positions based on the contents of the parts.
* User interface - uses the linked list, with its X and Y positions filled in, to place the objects on its display. This can be an X window, the framebu