The WEB Hypertext System1 implemented in Emacs Lisp for Norman Ramsey's Noweb2 rather than Knuth's Pascal-based WEB or the later CWEB.
WHYSE is an integrated development environment for Noweb and LaTeX, integrating these tools with new system features for editing and reviewing literate programs.
The IDE is inspired by the system described in Brown and Czejdo's 1991 ICCI conference proceeding1, and is in early development.
To orient new contributors and help adventurous hackers use the software, this overview is provided to help with navigation.
The easiest way to get started with development on Whyse is to use a container created from the Dockerfile. Unfortunately, compiling the PDF for Whyse outside of this specific environment is quite difficult, given the fragile nature of the knoweb.sty macros that I have experienced.
Firstly, Noweb 2.13 and LaTeX are required for development. Run make compile-pdf
to compile and render the PDF on your system.
The files I have in my directory are as follows.
⬢ [bryce@toolbx whyse]$ tree
.
├── Dockerfile
├── LICENSE
├── Makefile
├── noweb-navigation-mode.el
├── README.md
├── src
│ ├── clean-docs.awk
│ ├── gpl-3.0.tex
│ ├── offsets.awk
│ ├── whyse.bib
│ └── whyse.nw
├── test
│ ├── makem.sh
│ ├── test-parser-with-temporary-buffer.el
│ └── widgetry.el
└── TODO.org
3 directories, 14 files
autodefs.elisp
and knoweb.sty
are taken from the knoweb project, which
provides LaTeX support for Noweb and Emacs Lisp identifier definitions in AWK
for Noweb to use for indexing. Upstream knoweb is not required.
The project license is contained in LICENSE
. Particular files, if released
under a different license, contian separate licensing notices where appropriate
within the file; binary files do not contain license notices, and images, fonts,
sounds, movies, etc. are under their own license, if any works of these mediums
exist within the project at any time.
The Makefile has commands to weave
noweb sources to LaTeX source, tangle
files from noweb sources, and compile-pdf
s from generated LaTeX sources. It
also contains a command to generate noweb intermediate tool syntax for developer
inspection.
whyse.bib
contains a BibTeX reference for academic works. It contains a
reference to Brown & Czejdo's 1991 conference proceeding1 that inspired this
package.
The only other source file is whyse.nw
, the noweb source for WHYSE itself.
I have not had success compiling a knoweb-styled LaTeX document in any environment apart from a Debian 11 OS environment with TeXLive 2020. Only this combination works; other versions of TexLive or newer versions of Debian, or other Linux distributions have not worked with the peculiarities of the style file and the latex environment.
As of Saturday, July 26 2025 there is now a Dockerfile which I successfully use
with podman
on my Fedora Silverblue machine to build whyse and all of its
dependencies.
One of the hallmarks of literate programming is the supposed speed with which a developer can acquaint (or re-acquaint) themselves with a codebase. The suppository is that you're directly inputting the source code whilst reading copius documentation explaining the reasoning for that code and the way it fits together with other parts while you're construting your own mental model (while you are reading critically, because all software and documentation has errors and omissions).
I'm returning to the project on April 19th, 2025 (Sat 19 Apr 2025 12:34:49 AM MDT). I am not sure how long I have been away; after checking the git log it appears I've been largely inactive since May 13th, 2024. That's nearly one year!
I was inactive after the last "return" until late-July 2025. Significant progress was made in terms of the Dockerfile.
If you've received a tarball of this source code you may have received additional files which are otherwise ignored. One of these is whs.pdf, which is a rendering of the source code from an earlier version of whyse retained only to show what a PDF should look like.