Copyright and licence

Greed is copyright © 1995--6 by Gareth Rees, 2000 by Owen Dunn

Greed is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.


GROGGS stands for General-purpose Reverse Ordered Gossip Gathering System and was originally a bulletin board on the IBM 3074 mainframe Phoenix belonging to the University of Cambridge, UK. When Phoenix was closed down at the end of August 1995, Groggs was redesigned so as to run over the Internet using the newly-designed network protocol RGTP (Reverse Gossip Transfer Protocol).

The discussion in a Groggs is organised into Items, an item being a debate or chat on a particular subject. Typically, a group of people (the Groggs editors) run a Groggs server on a computer connected to the Internet; people wanting to read and reply to items run client programs on their own computers to fetch the items and send the text of their replies.

Groggs differs from Usenet in at least these ways:

GREED stands for Groggs Reader/Editor with Emacs Display and is a client that runs under GNU Emacs and XEmacs and can be used for reading, replying to, and editing Groggs.

Installing Greed

In order to run Greed, you will a copy of GNU Emacs or XEmacs (version 19.20 or later) with network and process support.

Your e-mail address

Greed needs to know your e-mail address, which should be stored in the variable user-mail-address. If this is incorrect (type C-h v user-mail-address RET to see the value of the variable) you'll need to add a line to your `.emacs' file to change it. For example:

(setq user-mail-address "")

Using an existing Greed installation

You need to know the location of the three files `greed.elc', `greed-md5.elc' and `', and make sure that the first two files are in a directory listed in the variable load-path and the third is in a directory listen in variable Info-default-directory-list.

For example, if the directories are `/usr/gnu/emacs/site-lisp/' and `/usr/info/' respectively, then you would put the following in your `.emacs' file:

(setq load-path (cons "/usr/gnu/emacs/site-lisp/" load-path))
(setq Info-default-directory-list
      (cons "/usr/info/" Info-default-directory-list))

You also need to add the following line to your `.emacs' file:

(autoload 'greed "greed" "Read Groggs" t)

To run Greed, start Emacs and type M-x greed RET.

Files in the Greed distribution

If Greed is not installed, you need to fetch the Greed distribution, which should come with the following files:

The Greed program in Emacs LISP
The MD5 Message Digest program in Emacs LISP
A port of help-macro.el to XEmacs.
Installation manual
Texinfo source for the Greed manual
Makefile for compiling and testing

Quick installation

Unpack the greed distribution, and type `make install' at the shell prompt. The Emacs LISP files will be put in the directory `~/elisp/', the Info manual in the directory `~/info/' and your `.emacs' file will be updated. To run Greed, start Emacs and type M-x greed RET.

Advanced installation.

  1. If necessary, edit the file `greed.el' and change the declaration of the greed-servers variable to the appropriate value(s) for your system. See section List of Groggs servers, for a description of the contents of this variable. The default value of this variable should be fine if you intend to connect only to the Cambridge Groggs server.
  2. Edit the definition of UPDATE_DOT_EMACS in the file `Makefile'. Set it to true if you want your `.emacs' file to be automatically updated (and if so, omit steps 3 and 5), or anything else if you don't.
  3. Edit the definitions of ELISPDIR and INFODIR in the file `Makefile'. ELISPDIR is the directory in which you keep Emacs LISP programs: it must be on the Emacs variable load-path; if necessary add a new directory to load-path by putting
    (setq load-path (cons "~/elisp/" load-path))
    or something similar in your `.emacs' file. INFODIR is the directory in which you keep Info documentation: it must be on the Emacs variable Info-default-directory-list; if necessary add a new directory to Info-default-directory-list by putting
    (setq Info-default-directory-list 
          (cons "~/info/" Info-default-directory-list))
    or something similar in your `.emacs' file.
  4. Run make install.
  5. Put the following in your `.emacs' file:
    (autoload 'greed "greed" "Read Groggs" t)

Getting started

To start Greed in the usual way, type M-x greed RET. Greed tries to connect to the default Groggs server, namely the server listed first in the variable greed-servers. (see section List of Groggs servers)

If you wish to choose which server to connect to, call greed with a prefix argument (that is, type C-u M-x greed).

If you wish to change your account or pasword on a server, call greed with two prefix arguments (that is, type C-u C-u M-x greed). If started like this, Greed doesn't read your options file or your password file, so it prompts you again for your e-mail address and password. (see section Logging in to a Groggs server)

When connecting to a server for the first time, Greed doesn't know your userid or password, and will offer you two options: to register with the server (by typing r) or to login immediately (by typing l). Choose the second option if you already have an account and password on the server; choose the first option if you don't.

Registering with a Groggs server

If you don't have an account and password on the Groggs server, you should choose to register (by typing r) when offered a choice between registering and logging in.

Registering takes place so that the server can send you your secret password by e-mail, and in future confirm that you are who you say you are. Note that not all servers will require registration, and some servers have guest accounts that will allow you to read Groggs without having to register (but you will typically need to register to post replies). If this is the case, skip this step and go straight to logging in. (see section Logging in to a Groggs server)

You will be prompted for your e-mail address and then Greed will send a registration request to the server. If successful, you will be sent your password by e-mail; wait for it to arrive and then run Greed again and choose to login immediately. (see section Logging in to a Groggs server)

If registering is not allowed

For security reasons, a Groggs server may choose not to allow automatic registrations, or may only allow them within a certain domain (for example, the Cambridge Groggs server only allows registrations for people with an e-mail address in the domain).

If you cannot register automatically, you must contact the Groggs Editors by e-mail and ask them for an account and password.

Logging in to a Groggs server

If you have an account on the Groggs server, or you have received your password by e-mail after registering, you should choose to login immediately (by typing l) when offered a choice between registering and logging in.

You will be prompted for your e-mail address and password (use the same e-mail address as you used when you registered with the server). After logging in, your password will be stored in the password file and your userid will be stored (along with other options) in the options file. You should not need to type your password again, unless it changes.

If the server has a guest account and you want to use it, then type guest (or whatever the name of the guest account is) for your e-mail address, and just press RET when asked for a password.

Reading Groggs

When Greed starts up, it fetches the index of items from the server, and displays them, one per line, in the index buffer. Here's a typical line in the index:

*  14 djs@dcs.ed 11 Sep 12:46 Choosing THE successor to PHOENIX Groggs

From left to right, the line shows an asterisk if the item has replies which you haven't read yet, the number of replies the item has received, the userid of the person who made the most recent reply to the item, the time at which they made the reply, and the item's subject.

When reading an item, the display is usually split so that the index occupies half a dozen lines at the top of the screen, and the item itself occupies the remainder of the screen.

Commands for reading Groggs

The current item is the item on the same line as point in the index buffer. In Index Mode, these commands are available for reading items:

If the current item is not displayed, display it in another window. If the current item is already displayed, scroll it down by a page. If the end of the item has been reached, select the next item in the list. With a prefix argument (e.g., C-5 SPC), scroll downward by that number of lines.
Display the current item, and scroll it up by a page. With a prefix argument (e.g., C-5 SPC), scroll upward by that number of lines.
Display the current item, and scroll it down by one line. With a prefix argument, act like SPC.
Move to the next item in the index. Next here means downward in the index buffer.
Move to the previous item in the index. Previous here means upward in the index buffer.
Display the current item and scroll to the beginning.
Display the current item and scroll to the first unread reply, if any, or to the end of the item, if none.
If the current item is a continuation of some other item, display that other item. Known as backward chaining.
If the current item has been continued in some other item, display that other item. Known as forward chaining.
Catch up all items (that is, mark all the replies as having been read, whether you've read them or not).
Get new items and replies from the server, if any. Items with unread replies will be marked with asterisks in the index buffer, and any visible item buffers will be refreshed from the server.
List items (redisplay the Index buffer).
Reads the server's message of the day.
Save the current item to a file. You will be prompted for a filename to save it in.

Options for reading Groggs

The o key brings up a menu of options. These options are relevant to reading Groggs items:

o f
Change the directory in which items will be saved to files. When you save an item, you are offered a file in this directory.
o h
Change the height of the index window. By default the height of the index window is 10; if your screen is particularly tall or short you may need to change this.
o a
Toggle the automatic updating of the index. If updating is turned on, then Greed will query the server for new items and replies every 5 minutes (as if you had typed g). The interval between these queries, in seconds, is given by the greed-timer-secs variable.
o i
Toggle whether or not itemids are displayed. Itemids are internal codes representing items (so two items with the same subject won't ever be confused). An itemid starts with a letter representing the year the item was started, then three digits giving the day of the year, then four digits giving the time of day.
o I
Read this Info documentation.
o n
Toggle whether you are a novice or an experienced user (by default you are considered to be a novice). If you are a novice user, you will be prompted before some irrevocable actions like quitting, or replying to an item, and some help messages will appear in the message area.
o o
Toggle the order of the index. By default, the index is reverse-ordered, with the most recent items at the top of the index, but you can change the order so that the most recent items are at the bottom of the index.
o s
Toggle the field on which the index is sorted. By default, the index is sorted by the last reply to an item, and the index shows the userid of the person who made that last reply, and the time of their reply. You can change the sorting so that the items appear in order of the time they were started (and the index then shows the userid of the person who started the item and the time they started it).
o t
Toggle the display of item threads in the index. When threads are displayed, the continuations of an item are listed next to the item (sorted according to the most recent continuation), and items that have become full (hence no longer available for replying to) are shown with their subject indented. By default, threads are displayed.

Killing items you don't like

If you find an item boring or offensive, you can kill it so that it doesn't appear in the index. Type k to kill the current item. The options file keeps track of which items you have killed.

Should you ever regret killing an item, type L to list all items (including killed items). The index will put a `K' in the second column to indicate that an item has been killed. You can then type u to unkill an item.

Miscellaneous Index Mode commands

Read the Info documentation.
Suspend Groggs (without quitting). Restores the windows you were looking at before you started reading Groggs. You can return to Groggs by typing M-x greed again.
Quit reading Groggs. All your options will be saved in the options file, and if this was your first session, or your password for this server has changed, then your password will be saved in the password file.
Quit reading Groggs without saving any startup files.
Print the current version number of Greed in the message area.
Describe the commands available in Index Mode.
M-x greed-index-collate
Collate all the Groggs items at the server into one buffer and display the result. Use of this command is likely to involve lots of network traffic, so please use sparingly.
M-x greed-index-stats
Compile a table of statistics showing how many posts each Groggs user has made to the server. Use of this command may be illegal in the UK under the Data Protection Act, so consult a lawyer if in doubt.

Replying to Groggs

In Index Mode, these commands may be used for starting new items and replying to existing items:

Start a new item. You are presented with an empty buffer in which to type the text of the new item. When finished, type C-c C-c to post it to the Groggs server (you will be prompted for a subject for the item), or type C-c C-q if you have second thoughts and don't want to start a new item after all.
Reply to the current item. You are presented with an empty buffer in which to type the text of your reply. When finished, type C-c C-c to post your reply to the Groggs server, or type C-c C-q if you have second thoughts and don't want to reply to the item after all.

In both cases, you can type C-c C-i to read this Info documentation.

How to set your grogname

A grogname is an identifying string that appears on your replies as well as your userid. It could be your real name:

Reply from John Hacker ( at 17.57 on Fri 15 Sep

or a nickname:

Reply from the Wombat ( at 13.05 on Mon 11 Dec

or a favourite short quotation, or whatever. There are four ways in which you can specify your grogname:

  1. Greed has an idea of your default grogname, which it puts on your replies unless you specify otherwise. To set or change your default grogname, type o g in Index Mode and then enter your grogname. If you have specified otherwise, type o d in Index Mode to go back to using the default.
  2. You might want to put a different grogname on each of your replies. To do this, type o p in Index Mode; then, whenever you post a reply you will be prompted for a grogname to be used for that reply. The grogname you type becomes the default.
  3. You might want a grogname to be chosen randomly from a list each time you reply. To do this, type o r in Index Mode. Your grogname will be picked at random from the list greed-grogname-list. (see section List of grognames)
  4. You might start composing a reply and then decide that you want to choose a grogname for that reply only (without affecting your default grogname). To do this, type C-c C-p to post your reply instead of typing C-c C-c. You will be prompted for a grogname which will be used for that reply only. If you want to produce a reply consisting only of a grogname, start composing a reply and then type C-c C-p immediately. If the grogname is long enough, it will be shown on a separate line in the item:
    Reply from at 8.52 on Tue 28 May
    From Surely that's not how you spell "Machete"?

What to do when an item is full

If you try to submit a reply that would make an item longer than the maximum allowed item size, then you are instead offered these options:

Post your reply as the start of a continuation item. You will be prompted for the subject line of the continuation item.
Go back to editing your reply, with the aim of posting it as the start of a continuation item.
Go back to editing your reply, with aim of attempting to reply to the same item again. If you reduce the size of your reply enough, you may be able to get it to fit into the old item.
Abandon your reply.

If you try to submit a reply to an item that has already been continued (or you have been editing a reply with the intention of starting a continuation item, but someone else got there before you did), you will be offered these options:

Post your reply to the continuation item.
Go back to editing your reply, with the aim of replying to the continuation item.
Abandon your reply.

How to reply to several items at the same time

Sometimes it might happen that you are in the middle of composing a reply to an item and you decide that you want to reply to a different item before you finish this reply. If you went to the index buffer, selected a different item and typed r, you would be informed that a composition was already in progress, and asked if you wanted to erase it. Instead, you should rename your composition buffer with M-x rename-uniquely before starting a new reply. The renamed composition buffer will be called something like `*composition*<2>' and you can return to it using C-x b *composition*<2> RET.


In Index Mode, type e for the editing menu. One command on this menu is available to everyone:

e l
Read the edit log. This is a list of edits made by the Groggs editors, with the date and time the edit was made and the reason the edit. The actual text removed (if any) is not shown.

If you are a Groggs editor, then the following additional commands are available:

e e
Enable/disable editing. Editing must be enabled before any of the editing commands work. This is so that it's difficult to edit an item by making a typing mistake. It is recommended that editors enable editing before making any edits, and disable it immediately afterwards as a precaution.
e d
Fetch the editing diffs for the current item. To fetch the editing diffs for the index, provide a prefix argument: C-u e d.
e i
Edit the current item. The full text of the item will be fetched into a buffer; you should make the necessary edits and then type C-c C-c to confirm the edits with the server, or C-c C-q to abandon the edit. Note (1): the item is fetched in its raw form. That is, before every reply in the item, there is a magic cookie starting with a ^ and containing a sequence number and a timestamp. When reading items, Greed uses the cookies to make reply headers bold, and then removes the cookies. In order to prevent people from inserting fake cookies into the item, any other line starting with a ^ has been changed to start with ^^ instead. You should leave the cookies in place and respect the ^-doubling convention. Note (2): the first line of the item is special and unless you know what you're doing it is best to leave it alone. Note (3): in order to prevent two editors from editing something at the same time, Greed acquires an editing lock that prevents another editor making an edit until you're finished. If you don't finish your edit quickly enough, the server is at liberty to remove the lock and prevent you from making an edit. If this happens to you, the only thing to do is start the edit again and perform it more quickly!
e I
Read this info documentation.
e x
Edit the index. The full text of the index is fetched and placed in a buffer for you to edit. As usual, type C-c C-c to confirm the edit and C-c C-q to abandon it. Although the server will make some sanity checks on the result of your edits, you should take care to preserve the format of the index.
e m
Edit the message of the day. The text of the current message of the day, if any, is fetched and placed in a buffer for you to edit. As usual, type C-c C-c to confirm the edit and C-c C-q to abandon it. Note: the first line of the message of the day has a special meaning defined by the server. Unless you know what you're doing, then if editing an old message, leave the first line alone; and if composing a new one, leave the first line blank.


List of Groggs servers

The variable greed-servers is a list of descriptions of Groggs servers. Each member of the list should be a list of five elements in the form (name server-host server-port options-file password-file), where the components have the following meanings:

A descriptive name for the Groggs server.
The Internet host on which the Groggs server runs.
The network port on which to connect to the Groggs server. The RGTP protocol has been allocated port number 1431 by the Internet Assigned Numbers Authority, so this should be the right number in almost all cases.
The file in which to save the user's options.
The file in which to save the user's secret password. This is different from the options file, because in order to keep the password secret this file must not be readable by anyone other than the user.

For example, if you want to read Groggs on the server run by Yoyodyne, Inc., you would do somethings like this:

(setq yoyodyne-groggs-server
      '("Yoyodyne's Groggs server" "" 1431
        "~/.yoyogrog" "~/.yoyosecret"))

If the Yoyodyne server were the only server you wanted to connect to, you would then use

(setq greed-servers (list yoyodyne-groggs-server))

but if you wanted to connect to the Yoyodyne server in addition to all the standard servers, you would use the following instead.

(eval-after-load "greed"
 (setq greed-servers (cons yoyodyne-groggs-server greed-servers)))

The first server on the list is the default server. If Greed is started up with no argument, then that server is the one it attempts to connect to. See section Getting started.

List of grognames

The variable greed-grogname-list is a list of lists, each of which contains a single string. A typical value might be

'(("John Hacker")("J. Random Hacker")("the Wombat"))

Unless the variable greed-no-save-grognames is non-NIL, then whenever you type in a new grogname it is added to the list. Thus (unless you edit your options file) random grognames (should you require them) are selected from the list of all the grognames you have used in the past.

Turning on additional security

If the variable greed-paranoid is non-NIL, then the following security features are enabled:

  1. You are prompted before your password is written to a file.
  2. You are warned if a server lets you login without authentication.
  3. Greed attempts to authenticate the server, and warns you if the server fails the test.

Variables affecting the behaviour of Greed

If non-nil, then Greed doesn't kill its buffers when you quit (or when an error occurs), and all communications with the server are written to the buffer `*greed-log*'. Best left at its default value, nil.
List of grognames that the user has held. See section List of grognames.
The length of the userid field in the index buffer. Since userids can be up to 75 characters long, they must be truncated to fit on the screen with the rest of the information. By default it is 10.
The length to which the subject of an item is truncated when it appears in the mode line of an item buffer.
If non-nil, then grognames aren't saved in the variable greed-grogname-list. By default it is nil. See section List of grognames.
If non-nil, then some security features are turned on. By default it is nil. See section Turning on additional security.
If non-nil, then before the options file and the password file are saved, their old versions are copied to backup files ending in the extension `.old'. By default it is t.
List of symbols whose values should be saved in the options file. They should all be variables whose princ representation is the same as their read syntax (essentially this restricts them to strings, numbers, nil and t). The variable greed-grogname-list is also saved, but it is given special treatment.
List of servers known to Greed. See section List of Groggs servers.
If non-nil, then Greed will ask if you really mean it when you attempt to post an entirely blank reply. By defualt it is t.
The number of seconds between automatic updates of the index (if you have this option turned on). By default it is 300 seconds, i.e., 5 minutes.

Hooks for adding functionality

This hook is run after you have started Greed, successfully logged into the server, and the index has been fetched. This is not the right place to extend the greed-servers variable; instead use code of the form (eval-after-load "greed" ...).
This hook is run after the index buffer has been created and Index Mode has been entered, but before the index has been fetched from the server.
This hook is run after Item Mode has been entered, but before any text has been downloaded from the server. Note that Item Mode is used for the message of the day, the edit log, and other display buffers.
This hook is run after the text of an item has been fetched and processed, but before it is shown to the user.
This hook is run after entering Reply Mode, that is, just after the user has decided to reply to an item, start a new item (and so on) and the reply buffer has been set up.
This hook is run after the index (or a part thereof) is redrawn. Intended for use by syntax-highlighting extensions.

Adding colours to Greed's buffers

Stephen Turner suggested the following piece of code for adding colour to Greed, using the hilit19 package distributed with GNU Emacs. Add the code to your `.emacs' file.

(require 'hilit19)

 '(("^Reply from .*$" nil msg-from)
   ("^From .*$" nil msg-from)
   ("^Item [A-Z][0-9]+ from .*$" nil msg-header)
   ("^Subject: .*$" nil msg-subject)
   ("^\\[Continued in [A-Z][0-9]+ by .*$" nil crossref)))

 '(("^\\*.*$" nil gnus-group-full)))

(add-hook 'greed-item-prepare-hook 'hilit-rehighlight-buffer)
(add-hook 'greed-index-redraw-hook 'hilit-rehighlight-buffer)

Concept Index


  • Account, acquiring
  • Account, changing
  • Account, using
  • Authentication
  • Authentication, additional
  • Automatic updating of index, Automatic updating of index
  • b

  • Backward chaining
  • Blank replies, checking for
  • c

  • Cambridge University
  • Catching up
  • Chaining
  • Choosing a server
  • Collate command
  • Colours
  • Composition buffer
  • Continuation items, Continuation items, Continuation items
  • Current item
  • d

  • Data Protection Act
  • Debugging option
  • Default grogname
  • Disabling editing
  • Documentation, editing
  • Documentation, options
  • Documentation, reading
  • e

  • E-mail address
  • E-mail address, logging in with
  • E-mail address, registering with
  • E-mail, receiving password by, E-mail, receiving password by
  • Edit log, viewing
  • Editing diffs
  • Editing Groggs
  • Editing items
  • Editing lock
  • Editing the index
  • Editing the message of the day
  • Editors, Editors
  • Enabling editing
  • Experienced option
  • f

  • Forward chaining
  • g

  • Getting new items
  • Gossip
  • Greed, defined
  • Groggs client
  • Groggs editors
  • Groggs server
  • Groggs, defined
  • Grogname, as complete reply
  • Grogname, for one reply only
  • Grognames
  • Grognames, list of
  • Grognames, saving
  • Guest account, using, Guest account, using
  • i

  • Index buffer, Index buffer
  • Index diffs
  • Index height option
  • Index of items
  • Installation
  • Internet host
  • Item buffer
  • Itemid display option
  • Items
  • k

  • Killing items
  • l

  • Logging in, Logging in
  • m

  • Magic cookies
  • Makefile
  • MD5 program
  • Message of the day, viewing
  • Multiple replies
  • n

  • Next item
  • Novice option
  • o

  • Options
  • Options file, backups
  • Options file, name of
  • Options file, not reading
  • Options file, saving
  • Options file, saving userid in
  • Options file, storing killed items
  • Options file, variables saved in
  • Order option
  • p

  • Password file, backups
  • Password file, name of
  • Password file, not reading
  • Password file, prompting before saving
  • Password file, saving
  • Password file, saving password in
  • Password, acquiring
  • Password, changing
  • Password, using
  • Phoenix mainframe
  • Port number
  • Previous item
  • Prompting for a grogname
  • q

  • Quitting Greed
  • r

  • Random grogname, Random grogname
  • Raw item text
  • Reading Groggs, Reading Groggs
  • Registering, Registering
  • Replies
  • Replying to items
  • Reverse order option
  • RGTP port number
  • RGTP, defined
  • s

  • Saving items option
  • Saving items to files
  • Scrolling items backward
  • Scrolling items forward, Scrolling items forward
  • Scrolling items to the beginning
  • Scrolling items to the end
  • Security, additional
  • Server, logging in to
  • Server, registering with
  • Servers, authentication of
  • Servers, configuring
  • Sorting option
  • Starting Greed
  • Starting new items
  • Statistics command
  • Stephen Turner
  • Subject of items
  • Subject, length
  • Suspending Greed
  • Synchronous
  • t

  • Threads option
  • u

  • Unkilling items
  • Updating index
  • Usenet threads
  • Usenet, comparison to Groggs
  • Userid, length
  • v

  • Version number
  • Variables Index


  • greed-debug
  • greed-grogname-list, greed-grogname-list, greed-grogname-list
  • greed-index-mode-hook
  • greed-index-redraw-hook
  • greed-index-userid-length
  • greed-item-mode-hook
  • greed-item-prepare-hook
  • greed-item-subject-width
  • greed-no-save-grognames, greed-no-save-grognames
  • greed-paranoid
  • greed-reply-check-blank
  • greed-reply-mode-hook
  • greed-save-old-versions
  • greed-save-variables-list
  • greed-servers
  • greed-startup-hook
  • greed-timer-secs, greed-timer-secs
  • u

  • user-mail-address

  • This document was generated on 6 August 2000 using the texi2html translator version 1.54.