Skip to content

The WEB Hypertext System implemented in Emacs Lisp for Norman Ramsey's Noweb rather than Knuth's Pascal-based WEB or the later CWEB.

License

Notifications You must be signed in to change notification settings

bryce-carson/whyse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About

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 ⸺ The WEB HYpertext System in Emacs

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.

Development overview

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-pdfs 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.

LaTeX compilation difficulties

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.

Returning to development after a long hiatus

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.

Ignored files

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.

Footnotes

  1. Brown, M. and Bogdan D. Czejdo. “A Hypertext for Literate Programming.” International Conference on Computing and Information (1991) 2 3

  2. Ramsey, Norman. Literate Programming Simplified. IEEE Software, 11(5):97–105, September 1994

About

The WEB Hypertext System implemented in Emacs Lisp for Norman Ramsey's Noweb rather than Knuth's Pascal-based WEB or the later CWEB.

Topics

Resources

License

Stars

Watchers

Forks