froggey / Mezzano

An operating system written in Common Lisp
MIT License
3.53k stars 188 forks source link

Chaosnet support #203

Open terpri opened 1 month ago

terpri commented 1 month ago

Hello there! Something I have wanted to see in this system for a long time is support for the Chaosnet protocol. If you don't know what Chaosnet is, it's an early local-area network that was developed for and used primarily by Lisp machines, but also many other systems. You can read about it here. I thought Mezzano, being the modern Lisp machine that it is, would hardly be complete without it!

Aside from hack value, the added benefit of supporting Chaosnet would be the ability to be intimate with many other different kinds of machines, as well as others running Mezzano. Chaosnet enables many different protocols at the application layer, including but not limited to a standardized file server, telnet, supdup (like telnet but better), mail and SMTP, and many fun ones. Chaosnet is designed in such a way that it makes it easy to define new protocols, so there are many possibilities. My intention is to implement it truly at each layer, using the existing Ethernet and ARP infrastructure. It might be desirable in the future to support alternative methods of transport, such as unix sockets on a remote system.

I chose to reference the code for the NCP from the ZetaLisp system, that being the original Lisp Machine implementation. The Lisp Machine Lisp and Common Lisp are very closely related, and I've made the conscious decision to change as little as possible from it, as to ease the porting effort and to help indicate where changes were made. Some parts might seem a bit ugly by modern standards, however I find it's overall quite readable and well-documented; I would at least like to make everything work properly before I go for cosmetics. This same procedure will likely follow for some protocols such as the file server, if and when I decide to implement them.

Having said all that, and having only started to get familiar with the Mezzano codebase, I have a few questions to ask:

Is there any overall style guide? I can pick up on some conventions, such as earmuffs placed on special and constant variables-- I personally find it better to only do this for external symbols, however, and this is generally the style that the code I am working with follows. As long as what's exported from the package follows the overall style (if there is one), it should be fine, right?

Since I am hoping to incorporate code derived from another system, what's the policy for license attribution? ZetaLisp is distributed under a BSD 3-clause. I don't want to have to clutter everything with copyright stuff if I don't have to, but I think proper attributions will be in order.

ebrasca commented 1 month ago

I found this about the style guides that may be useful to you: https://github.com/foxsae/The-One-True-Lisp-Style-Guide

It will be nice to have only one license.