For more documentation on using the Kernellib, see ChatTheatre's Kernellib documentation site.
The kernellib
was designed to serve as a better foundation than previous third-party LPC mudlibs, and as such would leverage and demonstrate the powerful capabilities of Dworkin's Game Driver (aka DGD). The original kernellib
was written by Felix A. Croes (aka @dworkin) in 1993.
This kernellib
was originally included inside the DGD distribution, but over time it moved into it's own reposistory on GitHub.
This repository is indended as a "live archive" fork of @dworkin's kernellib
for the DDG LPC driver, based initially on the "final commit" to that repository 2016-03-5: https://github.com/dworkin/kernellib/commit/e602afe6cb5328d05ccce99c2cd38add02359591.
There were changes in the last few years of kernellib
to add support for @dworkin's new, but non-open source, multi-threaded driver Hydra that removed features from earlier versions of the kernellib
, that were reinstated by @shentino for compatiblity with existing mudlibs. The changes reinstated were mostly about tracking of callouts as a resource, which @dworkin removed due to performance conflicts with Hydra, but also includes a few other small changes. These changes are in PR #1 #1 which catches this fork up to @Shentino's https://github.com/shentino/kernellib/commit/cd81684e7e018c4ec09ef47fdc629891bb941779
DGD was originally created in the early 90s to allow for the creation of very sophisticted text Multi User Dungeons (aka MUDs) on the internet.
In the mid-90s, DGD's architecture proved so powerful that a number of companies used a commercial version of DGD to create some of the first major chat rooms on the internet, most notably iChat which was used for the first Yahoo! Chatrooms.
In February 1999 Skotos Tech Corporation aquired a license to the DGD from Acuity Corporation who had an exclusive license, and began to fork both the DGD driver library and the kernellib
itself. Some patches were exchanged by both parties over the next decade, but increasingly these versions of DGD driver and kernellib
diverged.
Ultimately @dworkin aquired back his rights to DGD, and released version 1.4 of DGD and the kernellib
as open source. DGD was released under the GNU Affero General Public License v3 and the kernellib
was released as public domain.
Over the next decade @Dworkin's DGD driver and the Skotos fork of DGD merged and forked several times, but today both are fairly close, and there is are some efforts to no longer use the Skotos fork of the DGD driver and use @Dworkin's soley.
However, the original kernellib
and the Skotos kernellib
have diverged tremendously, and no attempt has been made to merge them. Thus this repository thus differs from the Skotos kernellib
significanly.
In 2019 Skotos Tech Corporation released SkotOS as open source, which included its fork of the kernellib
, along with an example of a prose-based narrative game server called The Gables, as well as a new open source user account manager, an HTML5 client and other software to support modern web browsers, These were released with the goal of encouraging other parties to develop and create their own games, chat rooms, or other online services. Skotos Tech Corporation closed in 2020 and transfererd its rights to its successor, Dyvers Hands Productions LLC Series 5, dba "ChatTheatre.com", who is acting as steward of this open source community today.
This archive is being kept to help developers and archivists who want to better understand DGD, and the differences between the @dworkin's kernellib
and the kernellib
used in SkotOS and other forks of kernellib
.
Unless otherwise noted, the contents of this repository are public domain.
@dworkin wrote in 2016-03-5:
This is the final release of the Kernel Library, for Hydra and DGD. The kernellib is and has always been in the public domain (even though it was distributed with DGD), so this repository includes the full history.
The last release only modifies this file, and moves everything else into a src directory; it will work fine with current versions of DGD and Hydra. There will be no further updates, and no more pull requests will be accepted.
Under US law it is a bit more difficult to declare something public domain (see article). Creative Commons offers a CC0 tool that combined with GPG signed commits, helps with this issue.
The following parties have declared their contributions to this repository as public domain:
- Skotos Tech Corportation
To the extent possible under law,
Skotos Tech Corporation
has waived all copyright and related or neighboring rights to
DGD Kernel Library (aka `kernellib`).
This work is published from:
United States.
- Dyvers Hands Productions LLC Series 5
To the extent possible under law,
Dyvers Hands Productions LLC Series 5
has waived all copyright and related or neighboring rights to
DGD Kernel Library (aka `kernellib`).
This work is published from:
United States.
- Christopher Allen
To the extent possible under law,
Christopher Allen
has waived all copyright and related or neighboring rights to
DGD Kernel Library (aka `kernellib`).
This work is published from:
United States.
- Noah Gibbs
To the extent possible under law,
Noah Gibbs
has waived all copyright and related or neighboring rights to
DGD Kernel Library (aka `kernellib`).
This work is published from:
United Kingdom.
This repository is intended as a "live archive", which means that we don't plan to add functionality to the repository, but we will accept PRs to add documentation, comment code, address bugs or security issues, or address problems using this library with @dworkin's DGD on modern operating systems.
In particular, we would love to have more general installation instructions, architecture documentation, code commentary, as well as articles about differences between this code and other forks of the kernellib
.
We require that before any first PR from a contributor to this repository can be accepted, their commit must be GPG signed, and it must contain a comment that include a similar CC0 disclaimer as above, which can be obtained from Creative Commons CC0.
The Kernellib is normally copied into place inside another application or codebase, or used via Git Submodules or similar. See the installation instructions on the documentation site for details.
Many of the websites that supported DGD and the kernellib
no longer seem to be available, or are hard to find as they are only available via Archive.org. I've only included those here that have attribution, and that appear to be public domain or have a permissive license. You'll have to browse their sources to find their proper license details. Most of the following appear to be GNU Free Documentation LIcense, V1.3 or later and are the only exceptions known so far to this repostory being public domain.
Saved at 2020-08-22 01:08
- The Phantasmal MUDlib for DGD: The Kernel Library
- The Kernel Library for DGD: Commands in the Kernel
- The Kernel Library for DGD: Layers of DGD
- The Phantasmal MUDlib for DGD: Inheritance in the Kernel
- The Kernel Library for DGD: Extending the Kernel
- The Kernel Library for DGD: Kernel Security
- The Kernel Library for DGD: Object Creators and Owners
- The Kernel Library for DGD: Users and Connections
- The Kernel Library for DGD: Debugging with the Kernel
- The Kernel Library for DGD: Adding to your MUDLib
- The Kernel Library for DGD: Directory Structure
- The Kernel Library for DGD: Errord
- The Kernel Library for DGD: Breaking Up Functions
- The Kernel Library for DGD: Extra AUTO Objects
- The Kernel Library for DGD: Object Manager
- Phantasmal Admin Tutorials: Compiling Programs
- Phantasmal Admin Tutorials: Evaluating Arbitrary Code
- Phantasmal Admin Tutorials: Access, Resources and Quotas
- The Kernel Library for DGD: Email Archive
- The Phantasmal MUDlib for DGD: Slush Bucket
DGD & LPC
- The Phantasmal MUDlib for DGD: DGD, LPC & MUDLib
- The Phantasmal MUDlib for DGD: (untitled)
- The Phantasmal MUDlib for DGD: CSharp vs DGD
- The Phantasmal MUDlib for DGD: Contributing to DGD
- The Phantasmal MUDlib for DGD: DGD Glossary
- The Phantasmal MUDlib for DGD: Java vs DGD
- The Phantasmal MUDlib for DGD: DGD MUDs
- The Phantasmal MUDlib for DGD: Miscellaneous DGD
- The Phantasmal MUDlib for DGD: Miscellaneous DGD
- The Phantasmal MUDlib for DGD: Skotos
- DGD and LPC: Skotos 2.0 Library
- SkotOS: SkotOS on the brink of the rewrite
- DGD and LPC: Skotos Library
- DGD and LPC:Commercial Use
- Wayback Machine
- Dworkin's Game Driver
- LPMOO: A Simulation of LambdaMOO
- DGD kfun manual
- DGD v1.2.112 - kfun - INDEX
- GurbaLib
- The Phantasmal MUDlib for DGD: MudOS vs DGD
- The Phantasmal MUDlib for DGD: Slush Bucket
- The Phantasmal MUDlib for DGD: Why Use DGD?
- The Phantasmal MUDlib for DGD: Top Level
- The Phantasmal MUDlib for DGD: Getting DGD
- Archive
- DGD and LPC: DGD MUDLibs
- DGD and LPC: Customizing DGD
- DGD and LPC: Troubleshooting DGD
- The Phantasmal MUDlib for DGD: Game Design Issues
- The Phantasmal MUDlib for DGD: Player Content
- The Phantasmal MUDlib for DGD: Persistent Game Design
- The Phantasmal MUDlib for DGD: In-Game Economies
- The Phantasmal MUDlib for DGD: Guest Programmers
- The Phantasmal MUDlib for DGD: Ur-Objects
- The Phantasmal MUDlib for DGD: (untitled)
- DGD LPC Textbook
- DGD LPC Textbook
- DGD LPC Textbook
- DGD LPC Textbook
- DGD LPC Textbook
- The Phantasmal MUDlib for DGD: (untitled)
- DGD LPC Textbook
- The Phantasmal MUDlib for DGD: Writing a Library
- DGD and LPC: Using Melville
- The Phantasmal MUDlib for DGD: Comparison to Other Libs
- DGD and LPC: Using the Kernel
- The Kernel Library for DGD: What Does It Do?
- DGD and LPC: GurbaLib
- DGD and LPC: Heaven7
- DGD and LPC: Start from Scratch?
- DGD and LPC: So You Want To...
- DGD and LPC: Supplementary Documentation
- DGD and LPC: Conditional Inheritance
- DGD and LPC: Interrupt Call
- DGD and LPC: State Dumps
- DGD and LPC: Precompiling
- DGD and LPC: Misc Security
- DGD and LPC: Script Delays
- DGD and LPC: Player vs Body
- DGD and LPC: Object Management
- The Phantasmal MUDlib for DGD: Persistent MUDLibs
- DGD and LPC: Designing AUTO Objs
- DGD and LPC: Designing Driver Objs
- DGD and LPC: Object Database
- DGD and LPC: Object Binding
- DGD and LPC: Rlimits
- DGD and LPC: ⁄cmd vs wiztool
- The Phantasmal MUDlib for DGD: Changing LPC
- DGD and LPC: Object Cleanup
- DGD and LPC: Distribute a State Dump?
- DGD and LPC: Releasing Code
- DGD and LPC: Which License
- DGD and LPC: Reimplementing From Scratch
- DGD and LPC: Outgoing Email
- DGD and LPC: FTPD
- DGD and LPC: HTTPD
- DGD and LPC: InterMUD3
- The Phantasmal MUDlib for DGD: Telnet Protocol
- DGD and LPC: NFS
- DGD and LPC: WebDAV
- DGD and LPC: Other Net Services
- The Phantasmal MUDlib for DGD: What Does It Do?
- DGD and LPC: Swapping
- The Phantasmal MUDlib for DGD: DGD LPC Reference
- DGD and LPC: LPC Code Samples
- SSH in LPC | Get SSH in LPC at SourceForge.net
- Wayback Machine
- Wayback Machine
- Wayback Machine
- Wayback Machine
- Wayback Machine
- Wayback Machine
- Wayback Machine
- Wayback Machine
- Wayback Machine
- Wayback Machine
- Wayback Machine
- Wayback Machine
- Wayback Machine
- Wayback Machine
- Wayback Machine
- Wayback Machine
- Wayback Machine
- Wayback Machine
- Wayback Machine
- The Phantasmal MUDlib for DGD: LPC FAQ
- DGD & LPC Textbook
- The Phantasmal MUDlib for DGD: non-DGD Docs
- The Phantasmal MUDlib for DGD: DGD LPC Diffs
- The Phantasmal MUDlib for DGD: Unsupported Features
- The Phantasmal MUDlib for DGD: Using parse_string
- The Phantasmal MUDlib for DGD: sscanf in DGD
- The Phantasmal MUDlib for DGD: sprintf in DGD
- The Phantasmal MUDlib for DGD: call_out
- The Phantasmal MUDlib for DGD: call_touch()
- The Phantasmal MUDlib for DGD: call_trace()
- The Phantasmal MUDlib for DGD: Create Funcs
- The Phantasmal MUDlib for DGD: Atomic Functions
- The Phantasmal MUDlib for DGD: DGD Driver Details
- The Phantasmal MUDlib for DGD: DGD Calling Conventions
- The Phantasmal MUDlib for DGD: DGD Object Subtypes
- The Phantasmal MUDlib for DGD: Thread-Local Storage
- The Phantasmal MUDlib for DGD: DGD/MP and Threads
- The Phantasmal MUDlib for DGD: Mappings
- The Phantasmal MUDlib for DGD: Linked Lists
- The Phantasmal MUDlib for DGD: Character Manipulation
- The Phantasmal MUDlib for DGD: Running a MUD
- DGD and LPC: Running a MUD