wdvi

network DVI viewer
Log | Files | Refs

commit 9f5c2c92fbdb5e2dd965fddccbc796535e000170
parent ef6d25af182c1edb102118a569c6e3b514979b98
Author: Kyle Milz <krwmilz@gmail.com>
Date:   Wed,  8 Sep 2021 18:52:30 +0000

add more design details

Diffstat:
Mdefault.tex | 125+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 119 insertions(+), 6 deletions(-)

diff --git a/default.tex b/default.tex @@ -1,14 +1,127 @@ -\documentclass{article} +\documentclass[12pt, letterpaper, titlepage]{article} \usepackage[utf8]{inputenc} +\usepackage{hyperref} +\hypersetup{ + colorlinks +} + \title{\texttt{wdvi(1)}} \author{Kyle Milz} \begin{document} + \maketitle -Welcome to \texttt{wdvi}, a network enabled DVI viewer. This program is a -fork of Paul Vojtas xdvi with some features added and many removed. +\texttt{wdvi(1)} is a network enabled DVI viewer. + +\tableofcontents + +\section{Releases} +None yet, check +\href{http://www.0x30.net}{www.0x30.net} + +\section{Introduction} +The predominant networked document viewer today is the web browser. +It has grown to unimaginable scope and complexity, trying to do +anything and everything all at once. As a document viewer it does +a reasonable job, however creating high quality documents in it is +challenging. \\ + +\texttt{wdvi(1)} tries to make high quality document access easy. +It has two main features that make it useful: +\begin{itemize} + \item Networked + \item Hyperlinks +\end{itemize} + +\section{Requirements} +\begin{itemize} + \item Fetches DVI files from network + \item Renders DVI files to screen + \item User editable address bar + \item Hyperlinks to other DVI files + \item Hyperlinks to non DVI files + \item HTTPS protocol for network transfer + \item Trust on first use certificate validation (no CA) + \item Minimal GUI toolkit dependencies + \item No support for PostScript + \item Support for inline images + \item Lightweight, fast, low resource usage + \item Portable + \item Documentable + \item Testable +\end{itemize} + +\section{Design} +The device independent file format (DVI) is a compact, display agnostic +file format that has been popular for many years. It is the default +output format for \LaTeX. + +\subsection{Fetches DVI files from network} +\texttt{wdvi(1)} needs to fetch files from the network. The user supplies +a URL string that is parsed by the program. If the URL contains a domain +name, it is resolved. The network code runs in its own process and +communicates with the viewer process over interprocess communication (IPC). +The network process does rigorous error checking and has reduced privileges. + +\subsection{Renders DVI files to screen} +The DVI viewing process sends requests for and gets the DVI content +from the network process over interprocess communication. The DVI viewer does +not have any network privilege, but may create other processes and +read/write to the disk. The viewer supports color. + +\subsection{User editable address bar} +The user presents a URL to \texttt{wdvi(1)} by typing it into an editable +address bar on the edge of the screen. When the user hits the return +key the document specified in the URL is fetched and displayed. + +\subsection{Hyperlinks to other DVI files} +Any hyperlinks to other DVI files in the document are selectable. When +selected they are fetched and the current document is replaced with the +new one. + +\subsection{Hyperlinks to non DVI files} +Hyperlinks to other types of files other than DVI will be handled by +external programs. Examples are downloads, videos, and other documents. + +\subsection{HTTPS protocol for network transfer} +The HTTPS protocol will be the only URL scheme for DVI document transfer. +Only the GET method will be supported, at first. Only a subset of +HTTP status codes will be accepted, 200 and 404 to start with. + +\subsection{Trust on first use certificate validation (no CA)} +On first connection to an HTTPS server a tuple of domain name, certificate +fingerprint will be saved and the user notified (not prompted). +Any further connections to the same server +will verify the fingerprint is the same. If the fingerprint is not the +same on subsequent connections, the user will be notified. + +\subsection{Minimal GUI toolkit dependencies} +The application user interface is not complex and complex GUI toolkits +are not needed. X athena widgets look outdated, but are easily available, +fast, and have enough functionality. + +\subsection{No support for PostScript} +PostScript is a Turing complete language and will not be supported in the +viewer. + +\subsection{Support for inline images} +Eventually, inline images should be displayed in documents. All common +types should be supported. + +\subsection{Lightweight, fast, low resource usage} +This design requirement is subjective. But using a low level language +and lightweight GUI toolkits should go a long way to satisfying it. + +\subsection{Portable} +\texttt{wdvi(1)} should be easily portable to other platforms including +Windows, Mac OS X, Linux, and the Unixes. + +\subsection{Documentable} +There should be a complete user manual available with the installation +package defining how to use the program. + +\subsection{Testable} +\texttt{wdvi(1)} should have an automated test suite covering all the +major use cases. This will help find regressions and speed development. -\texttt{wdvi(1)} does not have support for PostScript but may one day -have support for images. \texttt{wdvi(1)} can only use HTTPS to -fetch documents. \end{document}