Meeting Purpose
Review weekly progress, discuss technical challenges, and plan project next steps.
Key Takeaways
- Raw XNS Networking Achieved: Nick enabled raw XNS networking on macOS/FreeBSD by implementing a polling workaround for macOS's broken SIGIO support on BPF. This bypasses the Dodo server, simplifying network setup.
- New "Museum Mode" for Demos: Frank added a start= URL parameter to online/guest to load custom Lisp files on startup, enabling self-contained demos. A new shell.wget function allows these scripts to fetch files from the web.
- File Versioning Conflict Identified: A core conflict was found between Medley's DSK device (which treats the unversioned file as the latest) and Unix file operations, which can create versioned files that Medley then ignores.
- Primer Domain Finalized: The Medley Primer is now live at
primer.interlisp.org. This frees up
docs.interlisp.org for a future landing page and avoids an extra click for users.
Topics
Networking: Raw XNS Implementation
- Nick enabled raw XNS networking on macOS and FreeBSD using libpcap and BPF.
- Problem: macOS's BPF implementation does not support SIGIO for asynchronous I/O, causing Medley's network handler to miss packets.
- Solution: A polling workaround was implemented, calling the Ethernet handler every 20,000 microinstructions to check for data.
- Status: Packets can be sent between machines. An NS Echo server is being adapted from Bill Van Melle's 1980s PUP code.
- Future Work:
- Dodo Server: Herb will investigate updating the Dodo server's Java-based libpcap dependency to support raw XNS.
- Startup Delay: Enabling raw XNS adds a ~5-second startup delay while Medley waits for a PUP address from a gateway.
"Museum Mode" for Demos
- Frank implemented a "museum mode" for online/guest to run self-contained demos.
- Mechanism: The start= URL parameter loads a URI-encoded Lisp file at the end of the online init process.
- Example: A demo using the Kinetic app is available in the Snapshots discussion group.
- New Utility: shell.wget was added to download files from the web within startup scripts.
- Limitation: It lacks error handling, as the underlying C subr does not return the shell exit code.
File System & Versioning Conflicts
- The shell.wget work revealed a conflict between Medley's DSK device and Unix file operations.
- Medley's DSK Device Logic:
- Accessing a file without a version number (e.g., DSK:FOO) always retrieves the highest version.
- Creating a new version (e.g., DSK:FOO~3~) automatically links it to the unversioned name.
- The Conflict:
- A Unix command (like wget) creates a file (e.g., foo~2~).
- Medley's DSK device then ignores this file, as it's not linked to the unversioned name.
- Medley will create a new version (e.g., foo~3~) and link that to foo, effectively hiding the Unix-created file.
- Solution: The Lisp code must create the file via DSK first to ensure proper version linking, then pass its Unix path to the external command.
Packages & Symbol Management
- The team discussed using packages for better code organization, using T-Edit as a potential test case.
- Motivation:
- Cleaner code by removing repetitive module prefixes (e.g., T-EDIT.).
- Improved developer workflow by reducing typos.
- Challenges:
- Symbol Persistence: Symbols are not garbage collected, so loading many packages could exhaust memory.
- whereis Database: The whereis database needs to handle symbols from packages that are not currently loaded.
- Compatibility: Package-ifying a core module like T-Edit could break other code that relies on its global symbols.
- Proposed Solution: Create a "file package" type that allows the whereis database to locate package definitions on disk, enabling on-demand loading.
Project Admin & Updates
- Medley Primer Domain: The Primer is now live at
primer.interlisp.org. This frees
docs.interlisp.org for a future landing page.
- Ellie's Talk: Ellie will give an extended presentation on the Medley project for World Digital Preservation Day (Nov 7).
- GitFunds Update: Ron updated GitFunds to preserve the original version of a file during a copy operation, enabling accurate comparisons.
- PDF Generation: The team discussed ensuring generated PDFs use the correct title (from the source file) instead of a temporary filename.
Next Steps
- Herb:
- Change the Medley Primer domain to
primer.interlisp.org.
- Move relevant publications into the "bibliography" collection for Bill Stumbo's online bibliography.
- Investigate updating the Dodo server's libpcap dependency for raw XNS support.
- Frank:
- Update shell.wget to create files via the DSK device first, resolving the versioning conflict.
- Add a disclaimer to the Medley desktop for "museum mode" demos.
- Ron:
- Finalize and document the image file and printing changes.
- Merge the Kinetic PR.
- Paolo:
- Create a GitHub Discussion on better integrating packages with the file system.
- Larry:
- Create a GitHub Issue to refactor the main Medley README, removing content that overlaps with the Primer and website.