MUF Programming Frequently Asked Questions

What is a MUCKER?

A MUCKER is a person that is allowed to write in the TinyMUCK extension language known as Multi-User-Forth (MUF). MUF is a stack oriented language that can be used to provide complicated decision making and processing logic to actions on EMuck.

A MUCKER is identified by a MUCKER bit on the player, which allows the player access to three special commands:

  1. @EDIT
    Edit a MUF program. The MUCKER must control the dbref to which the program is attached. In most cases, that means that the MUCKER editing the program must have ownership of the program.
  2. @LIST
    List a MUF program. The MUCKER must either control the dbref to which the program is attached, or the program must be LINK_OK, not HIDDEN, and globally accessible.
  3. @PROG
    Create a MUF program. This command is used to create an empty MUF program, and attach it to a new dbref. If a program already exists with the same name that the player controls, this command works similar to @EDIT.

What can a MUCKER do?

There are a LOT of things that a MUCKER can do. It's very easy to abuse a MUCKER bit, so EMuck has come up with a set of rules under which all MUCKER's are subject:

In addition to the above rules, players are asked that their MUCKER activities be spent in helping out the general EMuck public, and not just themselves. This means that there should be some general use for the programs that they write, or that they help other (non-MUCKER) players in some way.

In all the rules above, there may be some exceptions for unique conditions. In that case, contact the EMuck technical advisor and describe the situation and see if a waiver of one rule or another may be obtained.

How do I become a MUCKER?

EMuck welcomes experienced and neophyte programmers to join the MUCKER ranks.

Players wishing to get MUCKER status are asked to make their request to the EMuck technical advisor, who is currently the player lar3ry. You can contact lar3ry in one of three ways:

  1. Find lar3ry online and make your request "in person."
  2. Send mail to lar3ry using EMuck's internal mail system.
  3. Send email to lar3ry at his address: (omitted).

In your request, you should indicate that you understand the rules under which MUCKER's are required to operate and agree to abide by them. It is preferred that a player be online when MUCKER status is granted, but if schedules can not permit an online meeting in a reasonable period, MUCKER status will be granted and a confirmation note sent to the player.

How do I learn to program in MUF?

Currently, the best reference (and usually the most up to date) for the programming language used by EMuck can be found online using the 'man' program.

Examples of MUF programming and other information may be found in ftp://ftp.tcp.com/pub/mud/TinyMUCK.

If you find that you need more help than this, you may want to find somebody that is already knowledgeable about MUF and is willing to help.

If you are a seasoned Mucker and wish to provide some additional tutorial or other information that we can make available to other people, contact lar3ry... we are ALWAYS looking for helpers!

Finally, if you write small programs to test something, or to figure out how a certain primitive works, please remember to recycle them when you are finished. Each tiny program is an actual object in the EMuck database, and being thrifty in your use of test programs can be a big help in keeping the EMuck database from growing out of control.

How do I make programs globally accessible?

Whenever you've completed a program, you may want to make the program publicly accessible. Before you do this, please make sure that it adheres to the EMuck MUCKER Policy guidelines:

If your program meets the guidelines above, you may ask that it be made publicly available. This is done by sending a request to the Technical advisor (lar3ry) describing your program's function and how it is to be used.

Within a short time, the advisor will review your program and discuss it with you. If there seems to be a possible problem with the program, it will be pointed out and you may be asked to modify your program appropriately. If everything seems to be OK with the program, it will be made into a globally accessible program.

What if my program needs special privileges?

From time to time, people write legitimate programs that require special privileges. There are varying degrees of privileges that might be required:

Currently, the model is to discuss your need with the technical advisor, who will check the program for integrity, and if it doesn't violate any of the rules under which programs are scrutinized, he will @CHOWN the program to the Programming Gofer [!] and set the appropriate permissions on the program and/or the exit.

Are there other issues of programming etiquette?

Players on EMuck are entitled to their privacy. If there is some information you wish to find out about another player that you cannot find by normal means (existing global program) or without the permission of the players involved, you should NOT find it out with a program. However, it is understood that a program may need to store, relay, or use reasonable information for reasonable purposes.

The SAY/POSE restriction on actions is not all encompassing. For instance, a program that uses SAY and POSE to transmit messages to players outside a room would be allowed for the purposes of creating a certain environment (say, a radio station). It's just that the people subject to being "broadcast" should be aware of what is happening. Creating an action that intercepts such commands, stores the information for later reading, or relays them to another player or players, is an example of an ILLEGAL program.

People should have a right not to be bombarded with information that they do not want to see. For example, if a player thinks too much talking is taking place, that player can leave the current room. Likewise, any "broadcast" type actions should have options for people to determine if they desire to receive such messages. A very good example is the 'think' program, which allows people to turn the action on or off, or to switch to a private channel. For this reason, a program that sends a message to every player online is extremely discouraged unless that message is of paramount importance. You might want to discuss such a program first with the technical advisor or any of the game admins.

EMuck also prohibits the writing of programs that are designed specifically to violate (or cheat) EMuck policies. It is illegal to write a program that emulates a feature that is usually only available to the administrators (e.g., a program to shut down EMuck). It is also illegal to write a program that subverts the security of EMuck, such as granting WORKER privileges to a regular player.

Programs that intentionally crash EMuck will not be tolerated. If you have a program that causes the muck to crash, you will be informed as to how and why it happened and you will be expected to correct your program IMMEDIATELY or risk losing it entirely. If there is a bug in the game server (they have been known to happen), all attempts will be made to ensure that the bug is fixed as soon as possible so that you can continue to use your program legitimately.

How are programs documented?

If your program is a simple action, providing a "-help" option is very useful. If the program is made global, you will want to set the description of the action to display help. (A common method of doing this is to set the description to automatically call your program with the "-help" option.) Doing these two little things will give you the benefit of automatically tying you into the EMuck HELP system.

If your program is instead useful for other programs (e.g., a subroutine), you should make the program LINK_OK and inform the EMuck technical advisor. You will be informed how to place the entry into the @REG database, or the @DOC database.

It is a common technique on EMuck to prefix your program names with something unique to easily identify the author. For instance, the technical advisor uses the prefix "l3-" in front of all his programs. You do not have to follow this scheme, but we do ask you not to use prefixes that another player has already picked. If you are in doubt, contact the technical advisor.

I have this great idea for an enhancement to an existing program. What do I do?

One very important rule we have on EMuck is that all players may claim ownership of their own "possessions." This includes the intellectual property inherent within them.

If you have an idea to enhance another player's program, you should find out the author of the program and discuss your idea with that person. If the author is not available for some reason, you may contact the technical advisor.

Note that the technical advisor may not allow you to modify another player's program directly, but may work with you to find suitable alternatives.

If you don't wish to have your programs listable by other players, you can set the HIDDEN flag on your programs. The game administrators will respect the HIDDEN flag on a program; in no event will they reveal the contents of a program that has this flag set to any player.

What happens if I make a mistake?

Accidents happen. All the players on EMuck (except the "r." players) are human, and people sometime cross the lines of propriety without intending to do so. This is understood, and can even be expected.

However, deliberate infractions of the rules of EMuck may easily lose you your MUCKER bit, or worse.

If you have a program whose use is questionable, it would be to your benefit to first talk to the technical advisor about it. At the very least, it will show that you have given these guidelines some thought.

You are not solely responsible for your programs on EMuck... there are some legitimate programs whose use can violate certain EMuck rules and guideline when used by people with less than honest intentions. For example, a player may use @COSTUME to make himself or herself appear as another player; or may customize the PAGE program to appear as a different player. In these cases, EMuck's policy is to weigh the benefits of the program over the problems of having the program abused; in these two cases, the game admins will find the player abusing a program to be at fault, and not the person that created the program. Again, it's always safe to discuss such possibilities with the game admins.

Decisions made by the EMuck technical advisor on matters of programming may be considered EMuck policy. The technical advisor HAS been known to reverse himself in some decisions if presented in a thoughtful matter. As in all manners of EMuck policy, if you have a serious disagreement in a judgment made, you can also appeal to the other game admins.