I'm proud to say that, after long delays, the M4 release (0.4.0) of DUMB MUD is now available. The lisp interpreter is developing rapidly; it's infrastructure is already clear, and many of the final features are in place. Since M3, we have seen the addition of an object system, the addition of a GUI, huge speed and stability improvements, and many, many bugfixes.
Please download 0.4.0 today and take a look at how we're doing! As always, we're looking for more developers and other assistance. If you are interested in helping, contact me at firstname.lastname@example.org.
Well, the Milestone page on the web has gotten out of sync again, and since the Web Page Guy is no where to be found, I'm going to make a final posting here with the current milestones before vacation. I leave in just a few hours for a three week vacation. Although I hope to get stuff done over this span, no promises.
0.1.0 -- M1: First demonstration
0.1.x -- In the beginning
0.1.1 -- String handling repaired
0.1.2 -- Data lost to the winds of time...
0.1.9 -- User interface as Lisp function
0.2.0 -- M2 release ... read more
In time for 0.3.7, I am introducing a major new class shared.Moderator. This singleton will be the central source of communication and manipulation of the growing number of parts of the DUMB MUD system. Having a centralized system is essential to making jlmud efficient and reliable; Moderator will be the heart of this system.
I've been exposed to the Common Lisp FORMAT function. I'm torn between thinking it's sick, and thinking it's wonderful. Undeniably, it's incredibly powerful and useful, especially in an environment as heavily text-based as muds are. So, I've decided that it shall eventually been implemented. If anyone knows of a clean implementation of it, in C++ or Java (GPL'd), I'd love to use it / learn from it for the DUMB MUD system. The only possibility that comes to mind is Kawa, which I have not looked in depth at.... read more
The more I think about the DUMB MUD number system (arbitrary precision decimals, ala com.tce.TBigDecimal), the less pleased I am. I still want to keep a single number type, rather than making an arbitrary distinction between integers and decimals. However, BigDecimals just don't seem to cut it. I'd like very much to move to arbitrary precision rational numbers. The printed representation of this number would be as follows:... read more
The upcoming version 0.3.6 is much faster, cleaner, and more reliable than 0.3.5. This comes, however, at the cost of two features, which have been temporarily removed.
The *debug-use-trace* feature has been removed. While it would not be at all hard to reimplement, it constitutes a very significant decrease in speed, even when tracing is turned off. In addition, trace output from multiple concurrent clients has always been indecipherable. I'd love to reimplement this feature, but I need some guidance about the best way to do it.... read more
I'm sure everybody knows that Sourceforge's upload servers are down. This is the sole reason that 0.3.5 has not been uploaded yet. It's ready to be uploaded the instant the upload server is available. However, it's looking like this might be a few days, and it's entirely possible that 0.3.6 will be available, and delayed, before the server is up. If, in the meantime, you'd like a copy of 0.3.5, fire off an e-mail and let me know.
Those of you who take a look at 0.3.5 may notice that the project has more than tripled in size. The reason for this is very straightforward; I've started using a few third-party packages in DUMB MUD, and I am including significant parts of these packages in both source and binary form.
The first of the two packages is the com.log4j package. It is the power behind all sorts of news features added to DUMB MUD in 0.3.5. Let's just say that it was this package that took us away from the command line. Log4j is released under the IBM Public License.... read more
I've thought of a few more feature enhancements to DUMB MUD. Being new ideas, they do not fit into the current milestone plan. Expect to see other, established ideas move around to accomodate these, but don't expect any changes soon.
1) Status server. This server will always be running when DUMB MUD is. It will bind, by default, to port 80, and serve up a very limited set of web pages that can be used to monitor, but not manipulate, DUMB MUD as a whole.... read more
Development is going to very slow for the next month or so, as I will be on vacation and have family obligations. I intend to kick out 0.3.5 and possible 0.3.6 in the next week, just so we have some progress there, but after that work will be pretty close to halted until January 6th or so. I will still be responding to e-mail.
If you've looked at the current codebase, you know that the symbol table uses a slow-as-hell linear search algorithm. To somewhat compensate for that, the symbol class is astoundingly obfuscated. Add to that the fact that functions are internally stored as strings which get re-interpreted at each execution, and you have the makings of a truly unfast system.
Now, let me make it clear that the purpose of DUMB MUD at this point is NOT to achieve optimal speed. Rather, we hope to achieve optimal stability and feature-completeness first. However, there's some point where you just have to do something about it. And for me personally, that point is when the fast version is actually much, much cleaner and clearer than the slow version.... read more
There are a few other changes that I want to make that have not made their way into the Milestone Map, mostly because I haven't decided about my feelings about their priority.
One: Errors should be their own lisp type, which extends symbol so that, from lisp, they can be treated like symbols. Unlike symbols, however, their printed representations will be the full error message. Of course, a number of constant errors will be defined, and these can be passed. This is clearly superior to passing strings in terms of localization and error checking by equality. In addition, ExecutionError will then be changed to take an error, rather than a string.... read more
Both the source and binary packages contain a release called 'old.' I use this release for all releases outside of the current sequence (minor version number). The dual reasons for this are to save vertical space and to discourage people from accidentally downloading old versions without a number. Unfortunately, sourceforge gives an administrator no control over the order in which packages are listed; therefore, these releases will often be somewhat jumbled. Further, if you need the release notes for any of these old releases, contact me; they are all available.
Creating windows binaries from java source is non-trivial, even with the best of tools. The difficulties are exacerbated when one must dynamically load java classes. I've decided that, from version 0.3.4 on, I will no longer be attempting this juggling act. One of the prime factors in this decision is that I see no way to make a native version of DUMB MUD coexist with the meta server proposed for the 0.5.x series. If I think of a way around this roadblock, we will consider re-adding binary. In the meantime, though, we do not expect to put any effort into this until at least beta (1.0.0) has been reached.
Version 0.3.4 includes, for the first time, the project file for JBuilder that I have been using. A few people have asked for it to be available, and it seems to be an added convenience.
On a related note, the server GUI makes certain assumptions about the current working directory. These assumptions will be true if the project is executed from within JBuilder. Otherwise, the basic assumption is that the current working directory is the project directory, or any other directory directly under the jlmud directory.
Version 0.3.4 will be out shortly. It includes a rudimentary UI for controlling the server. It also introduces a slew of new problems for those attempting to make use of the #Load and #Save functions. Many of these problems are related to the planned future development of the file server. First off, it is important to note that #Save has not changed. This is important because, since #Load has changed significantly, these two functions no longer share symmetry. That is, it now takes a moderate level of thought to load and subsequently save a file. Further, you are discouraged from using #Save too extensively, since it is clear that, when the file server is developed, the behavior of #Save will be modified to once again echo that of #Load.... read more
Version 0.3.3 of DUMB MUD, currently set for release on 11/26/00, will contain a modified version of the current #Save function. If you use this functionality (and who doesn't?) please read the information below.
There is an implied contract between the DUMB developer and the #Save function. Put simply, #Save is only to be called on files created with #Save, and not on files created by hand. Obviously, this contract cannot currently be enforced. However, with the development of the file server (by version 0.5.0, see milestone map), this contract can and will be enforced. Even if violating it now does not cause incorrect behavior in your program, your program will NOT work with later versions of DUMB MUD.
This is my current thoughts and feelings about milestone releases. As such, I hardly need mention how likely to change this document is. The further down you go, the foggier things are.
0.3.x -- Finishing touches on current system
0.3.2 -- Fix equality bug for instances
0.3.3 -- Define and reimplement #Save
0.3.4 -- Add GUI for server control
0.3.5 -- Improve logging and debugging [11/26/00]
0.3.6 -- Exhaustive testing; bugfix release [11/26/00]
0.4.0 -- M4 release... read more
I've been thinking about making the DUMB MUD server support distributed servers / distributed worlds. I have some ideas of how this could be implemented quite easily and universally, but I have some concerns about performance. Is scalability worth lower performance at low usage? Maybe, maybe not. But more interesting is the capability to have users host their own parts of the mud world. Questions abound. How would this work? Would there be one 'ruling server' or rather a single meta-server which all servers connect to? Both are easily implementable, actually, the issue is which is desirable. In addition, what the heck do we do with the semantics of #Load and #Save? I'm thinking of switching right now to ftp/scp instead of using a local file system, to nip this problem before it becomes an issue. Of course, I'd write a simple and slightly secure FTP server in java first, just so no one would have to go out and get external software unless they wanted to.... read more
Many of you have downloaded the windows binary versions of DUMB MUD. Almost as many have had difficulty getting it to run. While we have had some difficulty tracking down the problem, here is what is currently known.
1) The xjdk153.dll file posted in the supplementary directory must be downloaded and placed in the same directory as the jlmud.exe file.
2) The JET compiler used (http://www.excelsior-usa.com/jet.html) requires that the Java 2 runtime environment be installed. This can be found at http://java.sun.com/j2se/1.3/jre/download-windows.html.... read more
Those of you who have tried out DUMB MUD may have noticed many undefined behaviours, inconsistencies, and outright bugs with the object system. In addition, there was no initial support for inheritance, and we are finding this less than trivial to add in. As such, it has reached the point where the entire object system must be ripped out and rewritten. This will take several days, and the release of 0.3.1 will be delayed to accomodate it. For a description of how the object system will work when completed, please see the DocManager file "Using Objects" at http://sourceforge.net/docman/display_doc.php?docid=1749&group_id=13026. If you have any concerns or suggestions regarding the object system, please post them here or contact Addaon <email@example.com>
We'd like to request that developers not start symbols with the character '@'. In the same way that '#' denotes built-in functions, it is expected that '@' will at some point be used to support compiled functions. In terms of compatability, then, it is recommend that you refrain from using the '@' character to begin a symbol name.
Version 0.3.0 of the DUMB MUD server has been released. This version is nearly identical to 0.2.5, but is the first fully-developed ALPHA release so far. Please download 0.3.0 and tell us what you think!
A second version of the chat.lisp program has been written. It is truly a great improvement. While usability-wise it is not ideal, technically it is a complete, usable chat-room, implemented entirely in DUMB MUD lisp. Download it today, and start running your own chat room!
(Note: The chat-2.lisp file will be included in 0.3.0. Until then, grab it from CVS. It works with DUMB MUD 0.2.5 and better.)
Okay, so I thought about it for a while. I suspect that the majority of those would want a binary version are windows users. I may be wrong; please flame me if I am. Using a tool called JET, I compiled the java code to a directly executable .exe file that will run quickly and properly on windows. Tell me what you think. Note that this will NOT prevent me from releasing cross-platform binaries, as soon as I find an acceptable way of doing so.