gale.org
Home > Development > Revolution > Introduction

Why

The NWO is much easier for new users. It requires fewer "magic incantations": the NWO demands no conversion between "@ugcs.caltech.edu/user/egnor" and "egnor@ugcs.caltech.edu", and it does not require the user to know when to use "gsend -c" and when to use "gsend". It offers powerful and easy-to-use facilities for managing "private discussion groups", and it presents fewer hassles for people who want to create independent "cells" of Gale users that have nothing to do with us.


Introduction

Locations

The main difference between NWO Gale (as implemented in the "dangermouse" release) and classic Gale is that "categories" (pub.gale.people), "addresses" (egnor@ofb.net), and "keys" have been replaced by the unified concept of "locations". This is actually much simpler than it may seem.

Locations are like e-mail addresses.

egnor@ofb.net
pub.gale.people@ofb.net
foo@ugcs.caltech.edu

Like e-mail addresses, they have a "local part" (before the '@') and a "domain part" (after the '@'). Like e-mail addresses, if the domain is the same as the one you're in, you can omit the domain part. If you're in the "ofb.net" domain (that is, if you're on OFB), you could replace the first two examples:

egnor
pub.gale.people
Sending

You can send to a location with the familiar utility, "gsend".

% gsend egnor                                                                   
To: egnor@ofb.net
(End your message with EOF or a solitary dot.)
Hi, Dan!
.
Message transmitted.
% gsend pub.gale.people
To: pub.gale.people@ofb.net
(End your message with EOF or a solitary dot.)
Hi, everyone!
.
Message transmitted.
% gsend foo@ugcs.caltech.edu
To: foo@ugcs.caltech.edu
(End your message with EOF or a solitary dot.)
Hi, Blake!
.
Message transmitted.
%  

You can send a message to as many locations as you want:

% gsend egnor pub.gale.people foo@ugcs.caltech.edu                              
To: egnor@ofb.net pub.gale.people@ofb.net foo@ugcs.caltech.edu
(End your message with EOF or a solitary dot.)
Hi hi hi!
.
Message transmitted.
%  

Subscribing

You can subscribe to a location with the familiar utility, "gsub"

% gsub pub.gale.people pub.food.yummy                                           
! 2001-05-27 09:53:25 gsub notice: subscription: "pub.gale.people"
! 2001-05-27 09:53:25 gsub notice: subscription: "pub.food.yummy"
! 2001-05-27 09:53:25 gsub notice: connected to ofb.net (209.245.148.70:11512)
-------------------------------------------------------------------------------
To: pub.food.yummy.sandwiches@ofb.net
Cheese toasties r0x!!!
                            -- d00d@some.domain (Ch33zm8n) at 05-27 10:04:02 --
%  

Subscribing to a location is like subscribing to a mailing list; once you're subscribed, you will see all messages which are sent to that location (or sublocations -- see below).


Details

Security

You need authority to subscribe; only I can subscribe to "egnor@ofb.net", for example (otherwise you all could see my private messages!). Some locations, like "pub.gale.people@ofb.net" (and in fact "pub.(anything)@ofb.net"), are "public" (anyone can subscribe); some locations, like "egnor@ofb.net", are "private" (only one person can subscribe); some locations are only open to a specific group of people. If you try to subscribe to a location for which you have no access, gsub will issue a warning:

% gsub egnor pub.gale.people foo@ugcs.caltech.edu                               
! 2001-05-27 09:53:25 gsub notice: subscription: "egnor"
! 2001-05-27 09:53:25 gsub notice: subscription: "pub.gale.people"
! 2001-05-27 09:53:25 gsub notice: subscription: "foo@ugcs.caltech.edu"
! 2001-05-27 09:53:25 gsub notice: connected to ofb.net (209.245.148.70:11512)
! 2001-05-27 09:53:25 gsub warning: no private key for "egnor@ofb.net"
! 2001-05-27 09:53:25 gsub warning: no private key for "foo@ugcs.caltech.edu"
%  

To see the membership list of a location, use "gkinfo -m":

% gkinfo -m foo@ugcs.caltech.edu                                                
Members of <foo@ugcs.caltech.edu>:
foo@ugcs.caltech.edu
%  

Hierarchy

Unlike e-mail addresses, the "local part" of a location can contain multiple pieces, as in "pub.gale.people@ofb.net". These pieces let you create sublocations. If you subscribe to "pub@ofb.net", you will see anything sent to "pub.gale.people@ofb.net" (but not vice versa). For the most part, we will still subscribe to "pub" and send to "pub.some.specific.thing", just like before.

Not all locations are allowed to have arbitrary sublocations; they must be explicitly admitted by the location's owner via a "wildcard". Of course there is such a wildcard for "pub.*@ofb.net" and other common locations.

Filtering

As with old-world-order Gale, you can use negative subscriptions to filter out sublocations you don't want to see. If you want to see messages sent to "pub@ofb.net", and all its children (like "pub.food.yummy@ofb.net"), but not to "pub.gale.people@ofb.net" (because you just can't stand the flaming) or to "pub.tv.buffy@ofb.net" (because, well, we all know why), you can use "-" to indicate subtraction:

% gsub pub - pub.gale.people - pub.tv.buffy                                     
! 2001-05-27 09:58:34 gsub notice: subscription: "pub"
! 2001-05-27 09:58:34 gsub notice: filtering out: "pub.gale.people"
! 2001-05-27 09:58:34 gsub notice: filtering out: "pub.tv.buffy"
! 2001-05-27 09:58:34 gsub notice: connected to ofb.net (209.245.148.70:11512)
% gsend pub.gale.people.sucky
To: pub.gale.people.sucky@ofb.net
(End your message with EOF or a solitary dot.)
J00 ALL SUKKKK!!!
.
Message tranmitted.
% gsend pub.food.yummy
To: pub.food.yummy@ofb.net
(End your message with EOF or a solitary dot.)
I love fried peanut butter sandwiches!!!
.
Message transmitted.
-------------------------------------------------------------------------------
To: pub.food.yummy@ofb.net
I love fried peanut butter sandwiches!!!
                        -- whoever@ofb.net (Ordinary User) at 05-27 10:00:16 --
%  

** Note that the "-" is an argument by itself, not a prefix! **

As always, if you're in the "ofb.net" domain, you can leave off the domain:

% gsub pub - pub.gale.people                                                    
! 2001-05-27 09:58:34 gsub notice: subscription: "pub"
! 2001-05-27 09:58:34 gsub notice: filtering out: "pub.gale.people"
! 2001-05-27 09:58:34 gsub notice: connected to ofb.net (209.245.148.70:11512)
%  

Default Subscriptions

To avoid entering your entire subscriptions every time you run "gsub", you can store defaults in your "~/.gale/conf" file. Use the variable GALE_SUBSCRIBE (not GALE_SUBS or GALE_GSUB). The format is identical to the list of locations you would specify on the gsub command line. When you use GALE_SUBSCRIBE, your personal user location is not added by default as it would be otherwise. List it in GALE_SUBSCRIBE yourself if you want it. To show all of the subscriptions in effect (rather than just the ones specified on the command line), use "gsub -v".

% cat ~/.gale/conf                                                              
GALE_SUBSCRIBE 
        egnor@ugcs.caltech.edu
        egnor@ofb.net 
           - egnor.mail.root@ofb.net
        pub@ofb.net - pub.tv@ofb.net
        local@ofb.net test@ofb.net gateway@gale.org
GALE_NAME Dan Egnor
% gsub -v
! 2001-05-27 23:44:13 gsub notice: running in background
! 2001-05-27 23:44:13 gsub notice: using gsubrc "gsubrc"
! 2001-05-27 23:44:13 gsub notice: subscription: "egnor@ugcs.caltech.edu"
! 2001-05-27 23:44:13 gsub notice: subscription: "egnor@ofb.net"
! 2001-05-27 23:44:13 gsub notice: filtering out: "egnor.mail.root@ofb.net"
! 2001-05-27 23:44:13 gsub notice: subscription: "pub@ofb.net"
! 2001-05-27 23:44:13 gsub notice: filtering out: "pub.tv@ofb.net"
! 2001-05-27 23:44:13 gsub notice: subscription: "local@ofb.net"
! 2001-05-27 23:44:13 gsub notice: subscription: "test@ofb.net"
! 2001-05-27 23:44:13 gsub notice: subscription: "gateway@gale.org"
! 2001-05-27 23:44:13 gsub notice: reporting presence "in/present"
%  

Aliases

If you find yourself typing long location strings frequently, you may wish to create "aliases" for commonly used locations. To do so, create a directory ".gale/aliases". Create symbolic links in this directory for the aliases you want; on OFB, look in /home/egnor/etc/gale/aliases for some examples (which take effect systemwide).

In short, these are "broken" symbolic links from the alias to its expansion. To create an alias from "slack" to "slacker.folks@slackers.net"

% mkdir -p ~/.gale/aliases                                                      
% cd ~/.gale/aliases
% ln -s slacker.folks@slackers.net slack
% gsend slack.me.harder
To: slacker.folks.me.harder@slackers.net
(End your message with EOF or a solitary dot.)
 


What About Condiments?

Since categories have been replaced with locations, condiments are now called keywords. You may tag a message with one or more keywords using slashes:

% gsend pub.gale.people /offensive /meta                                        
To: pub.gale.people@ofb.net
Keywords: /offensive /meta
(End your message with EOF or a solitary dot.)
J00 ALL SUKK BIG R0X!!!
.
Message sent.
%  

The keywords will be displayed by gsub. However, to filter on the keywords -- e.g. to remove all messages tagged "offensive" -- you will need to construct a "gsubrc" program which examines the $GALE_TEXT_MESSAGE_KEYWORD environment variables. For assistance with this, ask a Gale whiz.