commit 9f5c2c92fbdb5e2dd965fddccbc796535e000170
parent ef6d25af182c1edb102118a569c6e3b514979b98
Author: Kyle Milz <krwmilz@gmail.com>
Date: Wed, 8 Sep 2021 18:52:30 +0000
add more design details
Diffstat:
M | default.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}