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
Groggs differs from Usenet in at least these ways:
It is synchronous: that is, replies are added to the end of items in the
order that they appear at the server, and it is likely that someone
posting a reply has read all the previous text in the item. This
encourages less repetition of content than Usenet, and avoids the
confusion that arises from replies appearing at a site before the
article they were in respose to.
It supports authentication: that is, if the editors running the server
are honest, then you can have some confidence that a reply purporting to
come from `email@example.com' really does come from the person with that
Unlike Usenet threads, Groggs items are restricted in size. When an
item gets too big, the next person to reply to it is given the option of
starting a continuation item which continues the discussion under
a new subject. Discussions naturally wander from one subject to
another, and the subject of the continuation can be chosen to reflect
the new topic.
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.
In order to run Greed, you will a copy of GNU Emacs or XEmacs (version
19.20 or later) with network and process support.
Greed needs to know your e-mail address, which should be stored in the
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 "firstname.lastname@example.org")
You need to know the location of the three files `greed.elc',
`greed-md5.elc' and `greed.info', and make sure that the first
two files are in a directory listed in the variable
the third is in a directory listen in variable
For example, if the directories are `/usr/gnu/emacs/site-lisp/' and
`/usr/info/' respectively, then you would put the following in your
(setq load-path (cons "/usr/gnu/emacs/site-lisp/" load-path))
(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.
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.
Texinfo source for the Greed manual
Makefile for compiling and testing
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.
If necessary, edit the file `greed.el' and change the declaration
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.
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.
Edit the definitions of
INFODIR in the file
ELISPDIR is the directory in which you keep
Emacs LISP programs: it must be on the Emacs variable
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
Info-default-directory-list; if necessary add a new
Info-default-directory-list by putting
(cons "~/info/" Info-default-directory-list))
or something similar in your `.emacs' file.
Put the following in your `.emacs' file:
(autoload 'greed "greed" "Read Groggs" t)
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
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.
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)
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
If you cannot register automatically, you must contact the Groggs
Editors by e-mail and ask them for an account and password.
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.
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 email@example.com 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.
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
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
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.
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
- 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.
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.
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
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.
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
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 (firstname.lastname@example.org) at 17.57 on Fri 15 Sep
or a nickname:
Reply from the Wombat (email@example.com) 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:
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.
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.
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
(see section List of grognames)
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
Reply from firstname.lastname@example.org at 8.52 on Tue 28 May
From Surely that's not how you spell "Machete"?
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
Abandon your reply.
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
- 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
- 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
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
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
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.
greed-servers is a list of descriptions of Groggs
servers. Each member of the list should be a list of five elements in
(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
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:
'("Yoyodyne's Groggs server" "groggs.yoyodyne.com" 1431
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.
(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.
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
If the variable
greed-paranoid is non-NIL, then the following
security features are enabled:
You are prompted before your password is written to a file.
You are warned if a server lets you login without authentication.
Greed attempts to authenticate the server, and warns you if the server
fails the test.
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
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
(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.
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.
'(("^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)
Automatic updating of index, Automatic updating of index
Blank replies, checking for
Choosing a server
Continuation items, Continuation items, Continuation items
Data Protection Act
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 the index
Editing the message of the day
Getting new items
Grogname, as complete reply
Grogname, for one reply only
Grognames, list of
Guest account, using, Guest account, using
Index buffer, Index buffer
Index height option
Index of items
Itemid display option
Logging in, Logging in
Message of the day, viewing
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
Password file, backups
Password file, name of
Password file, not reading
Password file, prompting before saving
Password file, saving
Password file, saving password in
Prompting for a grogname
Random grogname, Random grogname
Raw item text
Reading Groggs, Reading Groggs
Replying to items
Reverse order option
RGTP port number
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
Server, logging in to
Server, registering with
Servers, authentication of
Starting new items
Subject of items
Usenet, comparison to Groggs
greed-grogname-list, greed-grogname-list, greed-grogname-list
This document was generated on 6 August 2000 using the
translator version 1.54.