Help with example: program structure

Look at the ~/.sede/ directory. If you have none, first run sede checkout, which should create them for you. The directories you see there represent several stages in the development of a poll. There are 4 stages:

1. Configuration of ballots, registration of voters (initial input, ~/.sede/in)
2. Automatic creation of ballots, a flags file for each ballot, and vote-code databases (initial output, ~/.sede/out)
3. Reception of altered ballots (voters input, ~/.sede/vin)
4. Creation of results: combining configuration settings (~/.sede/in), with records of the vote-codes (~/.sede/out), with the received ballots (~/.sede/vin) (voters output, ~/.sede/vout).

For each step, different programs (commands) are helpful. Once the initial configuration is made (~/.sede/in), you can fill and re-fill the initial output directory (~/.sede/out) with ballots again and again, this changes nothing in the configuration. Similarly, once ballots are made, they can be send and re-send again and again, with the same results; and once the returns are in, you can process them again and again to create the exact some publishable results (~/.sede/vout).

The directories therefore have a chronology to them, an "input→output" cycle. It may be useful to think of voting with sede in terms of several stages, represented by data moving into "the next" directory.
polls/in/out/vin/vout/ → [polls/in/out/vin/vout/ → [...]]

The directory ./tmp is for temporary files, and the directory ./polls stores polls. After the completion of a poll/vote, all directories except the initial configuration directory (./in, and ofcourse the poll archives directory) have to be emptied (sede rmout), to make room for the next poll/vote. This next vote will probably deal with new problems, the ballot therefore needs to reflect the new questions for voters. Once done, the process repeats itself; ad infinitum. You have to save your current poll before opening another, otherwise it will be overwritten (sede allsave). There can be any number of polls active, in any stage of progress; each poll can contain an unlimited number of questions (or `voting opportunities') on the ballot.

Walking through this process:

You first start life with sede without these directories, but if you attempt to run sede you will get the suggestion to run sede checkout, and that will create them for you, and give you a default ~/.sederc. It will also give you several example polls. One of these example polls is already unpacked, and functions as the current poll. When working on the current poll, the other polls lie still in their archives.

The first thing needed is to set up your poll to your needs. Especially the voters you want to contact need to be configured (for instance their e-mail address must be listed), and you'll need to set up the ballot to ask a question (unless you are interested in whether people like coffee or tea). All this work takes place in ./in. This directory is more properly known as ${SEDE_ROOT_IN}, ./in is just its default location. When running sede without arguments, you actually are running sede shell, which gives a telnet/shell like command line, but retains access to everything in your ${PATH}. The relevant directories have useful shortcut names here: ${in} ${out} ${vin} ${vout} ${vinread} ${tmp} and ${polls}.

Once you have adapted a poll to your needs, it is probably advisable to first save it. To not overwrite the example, first change its name. All configuration for a poll is done in ./in (sticking with the shorter name here, for convenience). The name of a poll is configured in ./in/c_name. The configuration files all start with c_. You can list their meaning quickly with sede pollsconf help. Save your adapted poll with sede allsave.

Now you want to create ballots: sede makes. This will fill the "next" directory: ./out. You should find records, ballots and flag-files there now.

When this looks good, you want to send them to voters (it is advisable to first complete the entire cycle without contacting any voters for real, to make sure everything is properly configured). When they are done, they send their ballots back and you simply store them in ./vin.

When they are all back, you can process the results with sede processall (sede p, for short). If you haven't configured things correctly, this will not produce the expected results. This command fills ./vout, which can be made world-readable. The cycle is then complete, and all directories may contain similar files as they do now in this example...

To run another poll, run sede rmout, to clear all directories except ./in (and ./polls). Then alter the questions on your ballot, and the cycle can begin again. This time it should be easier, as everything is probably better configured and should present fewer unexpected problems.

One problem that may always exist, is voters mistyping votes in unexpected but obvious ways, obvious as in that the intention is still clear, but you hadn't foreseen it. To correct this problem, the vote compacting patterns need to be updated, and then these updates need to have their effect on the results in ./vout: sede pollsconf c_compact ; sede addvote_compact ; sede givename cutname. The first is to reconfigure the patterns, the second makes new raw add-ups, the third re-creates the presentation scheme from the raw add-ups and other raw result-files.

Complete walk-through with screen-shots:


Unpacking poll named "_features"


pts/1~% sede
sede version 1.16.9
Copyright (C) 2002-2006 Jos.H.Boersema.

Sede comes with ABSOLUTELY NO WARRANTY; for details run "sede show w".
This is free software, and you are welcome to redistribute it under
certain conditions; run "sede show c" for details.

Give "?" for overview of "sede shell" builtins.
Give "overview" for overview of commands, "help ITEM" for short help.

Set ${SEDE_SHELL_NOTICE} in ~/.sederc to "off", to deactivate this notice.
-3:
-2:
-1:
_essence pts/1~^ ls ${SEDE_ROOT_POLLS}
_basic.tar.gz    _features.tar.gz      _yourway.tar.gz
_essence.tar.gz  _valid_pnames.tar.gz
-3:
-2:
-1:ls ${SEDE_ROOT_POLLS}
_essence pts/1~^ ls $polls
_basic.tar.gz    _features.tar.gz      _yourway.tar.gz
_essence.tar.gz  _valid_pnames.tar.gz
-3:
-2:ls ${SEDE_ROOT_POLLS}
-1:ls $polls
_essence pts/1~^ help unpackpoll
usage: sede unpackpoll ARCHIVE_NAME[.tar.gz]; shortcut: u
Unpack a poll, ARCHIVE is searched under ${SEDE_ROOT_POLLS}/.
-3:ls ${SEDE_ROOT_POLLS}
-2:ls $polls
-1:help unpackpoll
_essence pts/1~^ unpackpoll _features
unpackpoll: done
-3:ls $polls
-2:help unpackpoll
-1:unpackpoll _features
_features pts/1~^ ?
shell (?):
------------------ sede shell >builtins< --------------------------
#COMMENT       ,              ,COMMAND       -              -1 ... -16
. COMMAND      ;COMMAND       >CTRL<L        ?              ??
?COMMAND       !MATCH         P:PROMPT       ^ ^^ ^^^       abort-off
abort-on       buf-all        buf-off        buf-out[:FILE] buf-some
bye            cd:DIR         echo-off       echo-on        exec-off
exec-on        exit           get-prompt     get-use        halt-off
halt-on        lock-input[:;] p:[default]    p:none         p:reset
p:user         path-off       path-on        push-hist[:C]  quit
scroll-hist:N  search-off     search-on      sede-first     sede-last
sede-never     silent-off     silent-on      stamp-log      verbose-off
verbose-on     which
-------------------------------------------------------------------
-3:ls $polls
-2:help unpackpoll
-1:unpackpoll _features
_features pts/1~^ buf-off
shell (buf-off): echoing no history buffers
_features pts/1~^
_features pts/1~^


... checking the meaning of all config files ...


_features pts/1~^
_features pts/1~^ overview

overview: COMMANDS LOCATION
commands: "/usr/local/lib/sede-1.16"

overview: DOCS /usr/local/doc/sede
Bugs.gz  Copyright.gz  FAQ.gz  Guide.gz  User_notice.gz  Version  Version.gz

overview: MANPAGE /usr/local/man/man1/sede.1
/usr/local/man/man1/sede.1

overview: SHELL WRAPPER (in path)
/usr/local/bin/sede

overview: SYSTEM CONFIG FILE
/etc/sede

overview: USER CONFIG FILE
/home/joshb/.sederc

overview: DIRECTORIES:
input:                "/home/joshb/source/sede/user/in"
primary output:       "/home/joshb/source/sede/user/out"
voterinput:           "/home/joshb/source/sede/user/vin"
voterinput readables: "/home/joshb/source/sede/user/vinread"
publishable results:  "/home/joshb/source/sede/user/vout"
temporary files:      "/home/joshb/source/sede/user/tmp"
polls:                "/home/joshb/source/sede/user/polls"

overview: COMMANDS /usr/local/lib/sede-1.16
a                 e             linerandom     rmout         setup
addmore           edit          lss            rmp           shell
addvote           erase         m              rmprocessall  show
addvote_compact   eraseall      makes          rmsetup       silent
addvote_weight    extras        mkcoderecord   run           storekey
addvoter          f             mkrevote       rundir        trunclall
allsave           fieldpipe     nop            runfield      truncline
ballots           get_voter     notvotedcodes  s             u
check             get_voters    overview       save          unpackpoll
checkdoublevotes  getitem       p              scramble      upgrade
checkout          getvote       pc             secondary     utils
continue          getvotes      pollsconf      sede_env      votersfield
correlate         givename      processall     see           which
cps               h             putaddress     sendallmail
cutname           help          putweight      sendlastmail
doti              invalidvotes  randomvoters   sendmail
doublevotes       linejoin      returns        set.path
overview: done
_features pts/1~^ help help
usage: sede help [COMMAND|FILE|VARIABLE]; shortcut: h
Give some information about COMMAND, FILE or VARIABLE.
_features pts/1~^ help pollsconf
usage: sede pollsconf [check|c|n|all|CONFIGURATION_FILE|help|v|voters
|v_f]; shortcut: pc
Configure poll options, give overview configuration.
_features pts/1~^ pollsconf help
c_abstention ____________________ (passive abstentions in the results yes/no)
c_address ____ (c_voters field containing address, and default email subject)
c_codemode ________________________________ (plain or indentable ballot-code)
c_compact ___________________ (streamline raw vote results, yes/no, patterns)
c_fields ____________________ (voter registration fields to store in records)
c_find_votearea ____________________________ (choose the type of voting area)
c_findcode ______________ (patterns to find the vote code in the voting area)
c_findvote ___________________ (patterns to find the vote in the voting area)
c_mk_readable ___________ (create returns with voting areas scrubbed, yes/no)
c_n_passes __________ (how many passes over the c_template ballot by default)
c_name _____________________________________________ (name of the whole poll)
c_passwd _______________________________________ (the length of the password)
c_pervoter ____ (pervoter and votingpatterns yes/no, browse directory yes/no)
c_pnames _______________________________________________________ (poll names)
c_preprocess ________________________________ (ballot pre-processing, yes/no)
c_template __________________________________________________ (master ballot)
c_theme _________________________________________ (result presentation theme)
c_trunc_at __________________________ (cut short long voting areas at LENGTH)
c_uniqcodes _______ (vote codes uniqueness: per poll/all, case [in]sensitive)
c_version _____________________________ (poll works with sede version listed)
c_votecode ____________________________________ (the length of the vote code)
c_voters ______________________________________________ (voters registration)
c_voters_fieldnames ___________________ ((optional) names for c_voter fields)
c_voters_list _______ (create active-voters list yes/no, which fields copied)
c_weight _____________________________ (create weighted results also, yes/no)
pollsconf: done
_features pts/1~^


... looking at voter-registration fieldname definitions, edit voter registration (by hand, at "Kees") ...


_features pts/1~^ pollsconf c_voters_fieldnames

Configure (optional) c_voter field names [list]
-----------------------------------------------
Give new fieldname to change current fieldname 1, name "postfix",
"c" to create a new/empty c_voters_fieldnames
"p" to switch to previous fieldname,
"n" to switch to next fieldname,
"e" to edit c_voters_fieldnames,
"?" for more information,
Sample from this field from c_voters: ".web.vaot8toeu"
[TITLE/c/p/n/e/?/]: ?
?$

 Extra info:
 If you define fieldnames, you can use the ballot variable ^-voter[FIELDNAME]
 to get voter registration data into the ballot. The first field here
 corresponds with the first field in the voter registration. You cannot use
 (escaped) commas inside fieldnames.
 With "votersfield" and "fieldpipe" you can designate fields also with
 their field name if you define names here.


Configure (optional) c_voter field names [list]
-----------------------------------------------
Give new fieldname to change current fieldname 1, name "postfix",
"c" to create a new/empty c_voters_fieldnames
"p" to switch to previous fieldname,
"n" to switch to next fieldname,
"e" to edit c_voters_fieldnames,
"?" for more information,
Sample from this field from c_voters: ".web.vaot8toeu"
[TITLE/c/p/n/e/?/]: e
e$

postfix,email,switch,last name,first name,city,weight,a,info,active,d,e,f,reg.password,storekey,rmkey,encrypt,decrypt,zip,unzip,test,test2,test3,test4

On first line of this file you can define field-names for the
voter registration file. The first field here gives the name for
the first field in the voter-registration, and so on. This is
useful to call voter registration data into the ballot with
^-voters[NAME].
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~

Configure (optional) c_voter field names [list]
-----------------------------------------------
Give new fieldname to change current fieldname 1, name "postfix",
"c" to create a new/empty c_voters_fieldnames
"p" to switch to previous fieldname,
"n" to switch to next fieldname,
"e" to edit c_voters_fieldnames,
"?" for more information,
Sample from this field from c_voters: ".web.vaot8toeu"
[TITLE/c/p/n/e/?/]:
$

pollsconf: c_voters_fieldnames configured as (1 line sed unambiguous output):

postfix,email,switch,last name,first name,city,weight,a,info,active,d\
,e,f,reg.password,storekey,rmkey,encrypt,decrypt,zip,unzip,webname-ba\
llot,$

pollsconf: done
_features pts/1~^ pollsconf c_voters

Configure voters registration file [comma seperated list]
---------------------------------------------------------
Edit voters registration, or see additional help ? [y/yes/e/n/no/?]: ?
?$

 Extra info:
 You can write here the information of each voter:
 - one voter per line
 - each bit of information between non escaped commas
 - the first field before the first non escaped comma is taken as a postfix to
   the ballot filename for that voter. You can use this later to include or
   exclude this ballot when sending; or to otherwise use this to your
   advantage.
 - If you send ballots per email, put an email address on the field you
   configure with c_address.
 - If you put voter preferences in this voters registration file, you can later
   configure your ballot with ^-ifelse?...?...?...?...? and use multiple passes
   over the ballot (see c_n_passes), to expand them, resulting in voter .
   variable ballots (see manual at c_template).

 Note: c_voters is a comma separated list, you can edit it with gnumeric (GNU
 program), or with some other spreadsheet presumably. Make sure to save it into
 a comma separated list again.


Configure voters registration file [comma seperated list]
---------------------------------------------------------
Edit voters registration, or see additional help ? [y/yes/e/n/no/?]: e
e$

.web.vaot8toeu,joshb@mraha,a,Leeuwen,Sjaak van,Breda,1,908123,info-no,open,,,,uvQiqMEJzRHm,echo "swines on the sand" > ${SEDE_ROOT_TMP}/key,sede scramble ${SEDE_ROOT_TMP}/key,ccrypt --encrypt -k ${SEDE_ROOT_TMP}/key ^FILE,ccrypt --decrypt -k ${SEDE_ROOT_TMP}/key ^FILE,,,mv ^FILE $( echo ^FILE | sed -e 's/out_[0-9]*_ballot\.web\./ballot:sjaak=/' ),,,,,,,,,,,,,,,,,,,,,,,,,,,,
.email,joshb@mraha,a,Driest,Femke van,Annen,2,078897,info-no,,,,,1qmsh5aUPDTn,echo "dog eats" > ${SEDE_ROOT_TMP}/key,sede scramble ${SEDE_ROOT_TMP}/key,ccrypt --encrypt -k ${SEDE_ROOT_TMP}/key ^FILE,ccrypt --decrypt -k ${SEDE_ROOT_TMP}/key ^FILE,gzip ^FILE,gzip -d ^FILE,,,,,,,,,,,,,,,,,,,,,
.email,joshb@mraha,b,Slangst,Torti de,Assen,2.2,,info-no,,,,,NPjTjbSWP7N_,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
.web.ff93z5qiT,joshb@mraha,a,Bouwma,Bert,Maastricht,3.5,56890,info-yes,,,,,nAagaciQ1o2u,echo "grass between my toe" > ${SEDE_ROOT_TMP}/key,sede scramble ${SEDE_ROOT_TMP}/key,ccrypt --encrypt -k ${SEDE_ROOT_TMP}/key ^FILE,ccrypt --decrypt -k ${SEDE_ROOT_TMP}/key ^FILE,,,mv ^FILE $( echo ^FILE | sed -e 's/out_[0-9]*_ballot\.web\./ballot:bert=/' ),,,,,,,,,,,,,,,,,,,,
.email,joshb@mraha,b,Grijpskerk,Nooitweg,Sidderburen,1,06-981734,info-yes,,,,,ttffFTteu30o,echo "take my coat" > ${SEDE_ROOT_TMP}/key,sede scramble ${SEDE_ROOT_TMP}/key,ccrypt --encrypt -k ${SEDE_ROOT_TMP}/key ^FILE,ccrypt --decrypt -k ${SEDE_ROOT_TMP}/key ^FILE,,,,,,,,,,,,,,,,,,,,,,,
.email,joshb@mraha,b,Leeuwen,Marieke van,A'dam,2,06-07868906,info-no,open,,,,IGoVyWdhUMt6,,,,,,,,,,,,,,,,,,,,,,,,,,,,
.email,joshb@mraha,b,Fransema,Kees(5=first name),Delfzijl,7,087807,info-no,,,,,4WKZxdkU7ZlC,,,,,,,,,,,,,,,,,,,,,,,,,,
.email,joshb@mraha,a,Gargonzi,Irene,Geerbeek,3.4,089908,info-no,open,,,,Gfx8B8APlyLR,echo "monkey barks" > ${SEDE_ROOT_TMP}/key,sede scramble ${SEDE_ROOT_TMP}/key,ccrypt --encrypt -k ${SEDE_ROOT_TMP}/key ^FILE,ccrypt --decrypt -k ${SEDE_ROOT_TMP}/key ^FILE,echo,echo,,,,,,,,,,,,,,,,,,,,,,
.email,joshb@mraha,b,Koopstra,Jan,Groningen,.8,12341234,info-yes,,open,,,NTRduu9Puqcz,echo,echo,echo,echo,echo,echo,,,,,,,,,,,,,,,,,,,,,
.email,joshb@mraha,a,Water,Wim,Gorredijk,3.1415,0892349087,info-no,open,,,,sHgrq_LbqFPT,echo,echo,echo,echo,bzip2 ^FILE,bzip2 -d ^FILE,,,,,,,,,,,,,,,,,,,,,,,
.email,joshb@mraha,a,Groote,Aarst de,Grootegast,5.1,908707896,info-yes,,,,,1GCd0SXoiox4,,,,,,,,,,,,,,,,,,,,,,,,,,,,
.email,joshb@mraha,b,Grootweg,Janeke,Bedum,9,089708976,info-no,open,,,,gKZUOUm8udyn,echo "grassy outcrop" > ${SEDE_ROOT_TMP}/key,sede scramble ${SEDE_ROOT_TMP}/key,ccrypt --encrypt -k ${SEDE_ROOT_TMP}/key ^FILE,ccrypt --decrypt -k ${SEDE_ROOT_TMP}/key ^FILE,,,,,,,,,,,,,,,,,,,,,,,,
~
~
~
~
~
~
~
~
~
~
~
~

Configure voters registration file [comma seperated list]
---------------------------------------------------------
Edit voters registration, or see additional help ? [y/yes/e/n/no/?]:
$

pollsconf: c_voters configured as (1 lines sed unambiguous output) (sample):

.email,joshb@mraha,b,Grootweg,Janeke,Bedum,9,089708976,info-no,open,,\
,,gKZUOUm8udyn,echo "grassy outcrop" > ${SEDE_ROOT_TMP}/key,sede scra\
mble ${SEDE_ROOT_TMP}/key,ccrypt --encrypt -k ${SEDE_ROOT_TMP}/key ^F\
ILE,ccrypt --decrypt -k ${SEDE_ROOT_TMP}/key ^FILE,,,,,,,,,,,,,,,,,,,\
,,,,,$

pollsconf: done
_features pts/1~^


... program ballot (this one is overcomplicated IMHO, even for encryption it doesn't nearly need to be this complicated (this is a test-ballot to test all features)) ...


_features pts/2~/source/sede/user/in^ cat c_template
Example ballot using some features.
joshb
(Using long variable names.)

c_codemode is set to `ignore', which means everything outside
any variable is ignored, hence the need for the -print var.
-break causes a line-break (not necesary but nicer).

Use `sede makes test passstep' (for instance) to see how this
expands.

^-print"Hello,"
        ^-break
        ^-break

^-print"Some issues, do you want to vote ?"
        ^-break

^-print"(It is fairly selfexplanatory, but details are below.)"
        ^-break

^-print"The results will be on http://www.domain.nl/directory/, at"
        ^-break

^-execute(date --date="7 days")
        ^-print". Your votes can be found under"
        ^-break

^-print"http://www.domain.nl/directory/"
        ^-title(1)
        ^-print"-browse/"
        ^-print"^-votecode(1)"
        ^-break

^-print"(for instance)."
        ^-break
        ^-break

----------------------- poll 1 -------------------------------------------
 poll 1 title
^-file[X/titlespace]
        ^-title(1)
        ^-file[X/posttitle]
        ^-break

 Optional additional info about this vote, and an altered subject.
^-print"^-mark_at[0]-ifelse?"
                ^-print"info-yes"
        ^-print"?"
                ^-print"^-voter[info]"
        ^-print"?"
                ^-print"^-file(X/teacoffee_info)"
                        ^-break
                        ^-break

                 flag
                ^-print"^-mark_at(1)-flag[sede_subject;Your vote with info]"
        ^-print"?"
        ^-print"?"

 the question
^-print"^-question(X/teacoffee_t|X/teacoffee_c)"
        ^-break

 the voting area
^-file[c_find_votearea|2]
        ^-title(1)
        ^-file[X/postpnames]
        ^-file[X/dots]
        ^-break

^-file[c_findcode]
        ^-print"^-votecode(1)"
        ^-file[c_findcode|2]
        ^-break

^-file[X/comment]
        ^-file[X/dots]
        ^-break
        ^-file[c_find_votearea|3]
        ^-break
        ^-break

 flag for saving vote-codes in flags file for re-run with old codes
^-print"^-mark_at(1)-flag[sede_codes;1;^-mark_at(2)-votecode(1),^-mark_at(2)-password(1)]"

 flag for cutting this part into attachment
^-print"^-mark_at[0]-flag[sede_divide_run;^-file[X/titlespace]"
        ^-print"^-title(1)^-file[X/posttitle];^-title(1);"
        ^-print"storekey;encrypt;rmkey]"

 weight distribution (according to ...whatever)
^-print"^-mark_now-weight(1|^-voter[weight])"
------------------- end poll 1 -------------------------------------------
----------------------- poll 2 -------------------------------------------

^-print"^-mark_at[0]-ifelse?"
                ^-print"a"
        ^-print"?"
                ^-print"^-voter(3)"
        ^-print"?"
                 flag for encrypted attachment
                ^-print"^-mark_at[0]-flag[sede_divide_run;^-file[X/titlespace]"
                        ^-print"^-title(2)^-file[X/posttitle];^-title(2)"
                        ^-print";storekey;encrypt;rmkey]"

                 title
                ^-print"^-file[X/titlespace]"
                        ^-print"^-title(2)"
                        ^-print"^-file[X/posttitle]"
                        ^-break

                 question
                ^-print"^-question[X/favcolor_head|X/favcolor_opts]"
                        ^-break
                        ^-break

                 voting area
                ^-print"^-file[c_find_votearea|2]"
                        ^-print"^-title(2)"
                        ^-print"^-file[X/postpnames]"
                        ^-print"^-file[X/dots]"
                        ^-break

                ^-print"^-file[c_findcode]"
                        ^-print"^-votecode(2)"
                        ^-print"^-file[c_findcode|2]"
                        ^-break

                ^-print"^-file[X/comment]"
                        ^-print"^-file[X/dots]"
                        ^-break

                ^-print"^-file[c_find_votearea|3]"
                        ^-break
        ^-print"?" else
                 title
                ^-print"^-file[X/titlespace]^-title(2)"
                        ^-print"^-file[X/posttitle]"
                        ^-break

                ^-print"(Votercode for vote you aren't interested in ("
                        ^-print"^-title(2)"
                        ^-print"):"
                        ^-print"^-votecode(2)"
                        ^-print".)"
                        ^-break

                 else flag
                ^-print"^-mark_at[2]-flag[sede_divide_run;^-file[X/titlespace]"
                        ^-print"^-title(2)^-file[X/posttitle];Just-your-vcode."
                        ^-print";storekey;encrypt;rmkey]"
        ^-print"?" end-if

         flag for saving old codes for re-run with old codes:
        ^-print"^-mark_at(2)-flag[sede_codes;2;^-mark_at(3)-votecode(2),^-mark_at(3)-password(2)]"


 weight distribution
^-print"^-mark_at[1]-weight(2|^-mark_now-ifelse?a?^-voter[switch]?1?2?)"
------------------- end poll 2 -------------------------------------------
----------------------- poll 3 -------------------------------------------

^-print"^-mark_at[0]-ifelse?"
                ^-print"^-voter[active]"
        ^-print"?"
                ^-print"open"
        ^-print"?"
                ^-break
                ^-break

                 title
                ^-print"^-file[X/titlespace]^-title(3)"
                        ^-print"^-file[X/posttitle]"
                        ^-break

                 question
                ^-file(X/qopen)
                        ^-break
                        ^-break

                 voting area
                ^-print"^-file[c_find_votearea|2]"
                        ^-print"^-title(3)"
                        ^-print"^-file[X/postpnames]"
                        ^-print"^-file[X/dots]"
                        ^-break

                ^-print"^-file[c_findcode]"
                        ^-print"^-mark_at[0]-votecode(3)"
                        ^-print"^-file[c_findcode|2]"
                        ^-break

                ^-print"^-file[X/comment]"
                        ^-print"^-file[X/dots]"
                        ^-break

                ^-print"^-file[c_find_votearea|3]"
                        ^-break

                 flag
                ^-print"^-mark_at[2]-flag[sede_divide_run;^-file[X/titlespace]"
                        ^-print"^-title(3)^-file[X/posttitle];^-title(3);"
                        ^-print"storekey;encrypt;rmkey]"

                 flag for saving old codes for re-run with old codes:
                ^-print"^-mark_at(1)-flag[sede_codes;3;^-mark_at(3)-votecode(3),^-mark_at(3)-password(3)]"


        ^-print"?"
        ^-print"?"

 this could be much more interesting using voter data and computations
   with `dc` etc
^-print"^-mark_at[1]-weight(3|^-mark_now-ifelse?a?^-voter[switch]?1?-1?)"
------------------- end poll 3 -------------------------------------------
----------------------- details ------------------------------------------
^-print"

Details:

  Return email to sender with a vote and optional comments.
You can insert text longer then the given dots for vote/comment,
but your vote/comments are limited to a total of ^-file[c_trunc_at] characters
when you count from `^-file[c_find_votearea|2]poll-name^-file[X/postpnames]' (incl.) to the final character of
your comment.  It is best that you remove quoting characters before
your vote, code and comments (prettier).
Example:
^-file[c_find_votearea|2]Example^-file[X/postpnames]..yes.
^-file[c_findcode]^-votecode(1)^-file[c_findcode|2]
^-file[X/comment]blablablabla blablablabla
^-file[c_find_votearea|3]
  Don't use the strings `^-file[c_findcode]' or `^-file[c_find_votearea|2]poll-name^-file[X/postpnames]'
in your comment or vote.  Any weird characters your email program puts
into your text are for your own account. Don't change any text/words
outside of the dotted areas in the voting area please.

  If you don't want to vote on a poll, you can leave it as given (you
will then vote an empty vote), or you delete the lines given for it
(your code gets listed as non-voting).

  After voting the results are published at
http://www.domain.nl/directory/, this happens on "
^-execute(date --date="7 days" "+%a %d %b %Y")
^-print",
after which you can no longer (normally) vote. The results will contain
your vote/comment amongst those of other voters.

  If you see your vote registered wrongly in the results, contact us
over an alternative channel. We can not do that over this channel
because aparently our link here has been corrupted. Send us a closed
letter with your registration password and your correct vote, and enclose
this password also: `^-password(1)'.

(This ballot was created on ^-execute(date).)"
^-break

^-print"^-mark_at[2]-flag[sede_divide;Details:;Voting-Details]"
  -3:cd $in
  -2:ed c_template
  -1:cat c_template
_features pts/2~/source/sede/user/in^


intermezzo


An example of a much less complicated ballot, which would not allow for the same type of encryption, though ... :

_basic pts/2~/source/sede/sede/source.z^ pollsconf c_template

Configure template ballot [text+code]
-------------------------------------
Edit c_template, or "?" for more information ? [y/yes/n/no/e/?]: e
e$

Hello,

Some issues, do you want to vote ?
Ignore "Votercode #blabla#", place any comments you might have on the
dotted line behind "Comments" (keep it short). Don't alter the given
text between "Vote " and "" except for your vote and
comment. If you wish to abstain, just leave empty as given.

------------------------------------------------------------------------

What do you think we should take on our mountain trip, tea or coffee ?

 Put an 'x' in the appropriate box.

Vote ^-TITLE(1): tea:[ ], coffee:[ ]
Votercode #^-VOTECODE(1)#
Comments: ...
endofvote

------------------------------------------------------------------------

What is the color you like for our new school building ?

 Give a color on the dotted line, a comment on the second dotted line.

Vote ^-TITLE(2): ...
Votercode #^-VOTECODE(2)#
Comments: ...
endofvote

------------------------------------------------------------------------

Should we leave subscribing to our mountain trip open, or do we only
accept people from within our school to it ?

 Delete one of the given possibilities:

Vote ^-TITLE(3): ... Open-subscription ... Not-Open-subscription ...
Votercode #^-VOTECODE(3)#
Comments: ...
endofvote

------------------------------------------------------------------------

~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~


end intermezzo


... an error occured, started stepping mode to investigate ...


_features pts/1~/source/sede/sede^ makes
makes: pre expanding c_template
ballots: (ballot: 0, pass: 0, line: 42, character: 11) ^t or ^-title: too high number pnames-line requested: 6 only 3 created (/home/joshb/source/sede/user/in/c_pnames has 3 lines)
makes: "ballots" exited with exit-code 12.
makes: unsuccessfull run.
  -3:cat c_template
  -2:m t
  -1:m t
_features pts/1~/source/sede/sede^ help makes
usage: sede makes [u|unlock|lock] | [t|test] [old] [step[:BALLOT:PASS:LINE:
CHARACTER]|ballotstep[:B:P:L:C]|passstep[:B:P:L:C]|linestep[:B:P:L:C]|unitstep
[:B:P:L:C]|echolinestep[:B:P:L:C]|echounitstep[:B:P:L:C]|jumpstep[:B:P:L:C]];
 shortcut: m
Generate ballots.
  -3:m t
  -2:m t
  -1:help makes
_features pts/1~/source/sede/sede^ makes echounitstep:0:0:42:8
makes: pre expanding c_template
ballots: stepping at ballot: 0, pass: 0, line: 42, character: 8
ballots: (ballot: 0, pass: 0, line: 42, character: 8) (env) echounitstep
ballots:    Done: ballot: 0, pass: 0, line: 42, character: 8 `e' <^-title>
 input: /home/joshb/source/sede/user/in/c_template
 output: /home/joshb/source/sede/user/tmp/sedepass_0
 (b)allot (p)ass (l)ine (u)nit [e]cho [j]ump [a]uto <c>ontinue >q<uit {h}elp

ballots:    Done: ballot: 0, pass: 0, line: 42, character: 9 `(' <^-title>
 input: /home/joshb/source/sede/user/in/c_template
 output: /home/joshb/source/sede/user/tmp/sedepass_0
 (b)allot (p)ass (l)ine (u)nit [e]cho [j]ump [a]uto <c>ontinue >q<uit {h}elp

ballots:    Done: ballot: 0, pass: 0, line: 42, character: 10 `6' <^-title>
 input: /home/joshb/source/sede/user/in/c_template
 output: /home/joshb/source/sede/user/tmp/sedepass_0
 (b)allot (p)ass (l)ine (u)nit [e]cho [j]ump [a]uto <c>ontinue >q<uit {h}elp

ballots: (ballot: 0, pass: 0, line: 42, character: 11) ^t or ^-title: too high number pnames-line requested: 6 only 3 created (/home/joshb/source/sede/user/in/c_pnames has 3 lines)
makes: "ballots" exited with exit-code 12.
makes: unsuccessfull run.
  -3:m t
  -2:help makes
  -1:makes echounitstep:0:0:42:8
_features pts/1~/source/sede/sede^


... generating ballots ...


_features pts/1~^ ls $out
_features pts/1~^ ls ${SEDE_ROOT_OUT}
_features pts/1~^ help makes
usage: sede makes [u|unlock|lock] | [t|test] [old] [step[:BALLOT:PASS:LINE:
CHARACTER]|ballotstep[:B:P:L:C]|passstep[:B:P:L:C]|linestep[:B:P:L:C]|unitstep
[:B:P:L:C]|echolinestep[:B:P:L:C]|echounitstep[:B:P:L:C]|jumpstep[:B:P:L:C]];
 shortcut: m
Generate ballots.
_features pts/1~^ makes test
makes: pre expanding c_template
makes: generating voter ballots
makes: done.
_features pts/1~^ ls ${SEDE_ROOT_OUT}
codespervoter  flags_7                     out_5_ballot.email
flags_1        flags_8                     out_6_ballot.email
flags_10       flags_9                     out_7_ballot.email
flags_11       out_10_ballot.email         out_8_ballot.email
flags_12       out_11_ballot.email         out_9_ballot.email
flags_2        out_12_ballot.email         secret_master_1
flags_3        out_1_ballot.web.vaot8toeu  secret_master_2
flags_4        out_2_ballot.email          secret_master_3
flags_5        out_3_ballot.email
flags_6        out_4_ballot.web.ff93z5qiT
_features pts/1~^ less out_10_ballot.email
out_10_ballot.email: No such file or directory
_features pts/1~^ cd $out
_features pts/1~/source/sede/user/out^ less out_10_ballot.email
Hello,

Some issues, do you want to vote ?
(It is fairly selfexplanatory, but details are below.)
The results will be on http://www.domain.nl/directory/, at
Wed Sep  6 19:22:33 CEST 2006. Your votes can be found under
http://www.domain.nl/directory/Tea-coffee-browse/ID5rIeP3fdyG
(for instance).

                 Tea-coffee question:
  ________________________    ________________________
 |                        |  |                        |
 | I like tea better then |  | I like coffee better   |
 | coffee.                |  | then tea.              |
 | Then vote "tea".       |  | Then vote "coffee".    |
 |________________________|  |________________________|

Vote Tea-coffee: ...
votercode #ID5rIeP3fdyG#
Comments: ...
vote-end

                 Favorite-color question:
 What color do you like best:
[END]
_features pts/1~/source/sede/user/out^ less flags_10
sede_divide_run;                 Tea-coffee question:;Tea-coffee;storekey;encryp
t;rmkey
sede_divide_run;                 Favorite-color question:;Favorite-color;storeke
y;encrypt;rmkey
sede_codes;2;7SjE7BsWI3b5,3Zx3o2dSTE
sede_codes;1;ID5rIeP3fdyG,p0BhQABXaX
sede_divide_run;                 Open question:;Open;storekey;encrypt;rmkey
sede_codes;3;sZ812OJz1H9V,lKjVZutDSV
sede_divide;Details:;Voting-Details

sede_address;joshb@mraha
_features pts/1~/source/sede/user/out^


... send the email ballots ...

_features pts/1~/source/sede/user/out^ sendallmail

(... etc etc ...)

sendmail: done.
sendallmail:                                 *next*
sendmail: sending out_8_ballot.email to "joshb@mraha", as "Voting."
sendmail: cutting ballot in two at line "50", making attachment "/home/joshb/source/sede/user/tmp/Voting-Details"
sendmail: cutting ballot in two at line "40", making attachment "/home/joshb/source/sede/user/tmp/Open_8_"
sendmail: running "storekey;encrypt;rmkey" (fieldnames) over "/home/joshb/source/sede/user/tmp/Open_8_" -------------v
sendmail: doing fieldname: "storekey"
runfield: found commandline: "echo "monkey barks" < ${SEDE_ROOT_TMP}/key", expands into: "echo "monkey barks" < ${SEDE_ROOT_TMP}/key"
run: done
runfield: done.
sendmail: doing fieldname: "encrypt"
runfield: found commandline: "ccrypt --encrypt -k ${SEDE_ROOT_TMP}/key ^FILE", expands into: "ccrypt --encrypt -k ${SEDE_ROOT_TMP}/key /home/joshb/source/sede/user/tmp/Open_8_"
run: done
runfield: done.
sendmail: attachment file /home/joshb/source/sede/user/tmp/Open_8_ was not found. Trying to find it with added wildcard at the end (NAME*).
sendmail: found new name: /home/joshb/source/sede/user/tmp/Open_8_.cpt
sendmail: doing fieldname: "rmkey"
runfield: found commandline: "sede scramble ${SEDE_ROOT_TMP}/key", expands into: "sede scramble ${SEDE_ROOT_TMP}/key"
run: done
runfield: done.
sendmail: ^-------------- end running commands.
sendmail: cutting ballot in two at line "26", making attachment "/home/joshb/source/sede/user/tmp/Favorite-color_8_"
sendmail: running "storekey;encrypt;rmkey" (fieldnames) over "/home/joshb/source/sede/user/tmp/Favorite-color_8_" -------------v
sendmail: doing fieldname: "storekey"
runfield: found commandline: "echo "monkey barks" < ${SEDE_ROOT_TMP}/key", expands into: "echo "monkey barks" < ${SEDE_ROOT_TMP}/key"
run: done
runfield: done.
sendmail: doing fieldname: "encrypt"
runfield: found commandline: "ccrypt --encrypt -k ${SEDE_ROOT_TMP}/key ^FILE", expands into: "ccrypt --encrypt -k ${SEDE_ROOT_TMP}/key /home/joshb/source/sede/user/tmp/Favorite-color_8_"
run: done
runfield: done.
sendmail: attachment file /home/joshb/source/sede/user/tmp/Favorite-color_8_ was not found. Trying to find it with added wildcard at the end (NAME*).
sendmail: found new name: /home/joshb/source/sede/user/tmp/Favorite-color_8_.cpt
sendmail: doing fieldname: "rmkey"
runfield: found commandline: "sede scramble ${SEDE_ROOT_TMP}/key", expands into: "sede scramble ${SEDE_ROOT_TMP}/key"
run: done
runfield: done.
sendmail: ^-------------- end running commands.
sendmail: cutting ballot in two at line "13", making attachment "/home/joshb/source/sede/user/tmp/Tea-coffee_8_"
sendmail: running "storekey;encrypt;rmkey" (fieldnames) over "/home/joshb/source/sede/user/tmp/Tea-coffee_8_" -------------v
sendmail: doing fieldname: "storekey"
runfield: found commandline: "echo "monkey barks" < ${SEDE_ROOT_TMP}/key", expands into: "echo "monkey barks" < ${SEDE_ROOT_TMP}/key"
run: done
runfield: done.
sendmail: doing fieldname: "encrypt"
runfield: found commandline: "ccrypt --encrypt -k ${SEDE_ROOT_TMP}/key ^FILE", expands into: "ccrypt --encrypt -k ${SEDE_ROOT_TMP}/key /home/joshb/source/sede/user/tmp/Tea-coffee_8_"
run: done
runfield: done.
sendmail: attachment file /home/joshb/source/sede/user/tmp/Tea-coffee_8_ was not found. Trying to find it with added wildcard at the end (NAME*).
sendmail: found new name: /home/joshb/source/sede/user/tmp/Tea-coffee_8_.cpt
sendmail: doing fieldname: "rmkey"
runfield: found commandline: "sede scramble ${SEDE_ROOT_TMP}/key", expands into: "sede scramble ${SEDE_ROOT_TMP}/key"
run: done
runfield: done.
sendmail: ^-------------- end running commands.
sendmail: sending using "mutt", processed flags.
mutt -H /home/joshb/source/sede/user/tmp/email -a /home/joshb/source/sede/user/tmp/Tea-coffee_8_.cpt -a /home/joshb/source/sede/user/tmp/Favorite-color_8_.cpt -a /home/joshb/source/sede/user/tmp/Open_8_.cpt -a /home/joshb/source/sede/user/tmp/Voting-Details
sendmail: done.
sendallmail:                                 *next*
sendmail: sending out_9_ballot.email to "joshb@mraha", as "Your vote with info"
sendmail: cutting ballot in two at line "52", making attachment "/home/joshb/source/sede/user/tmp/Voting-Details"
sendmail: cutting ballot in two at line "48", making attachment "/home/joshb/source/sede/user/tmp/Just-your-vcode._9_"
sendmail: running "storekey;encrypt;rmkey" (fieldnames) over "/home/joshb/source/sede/user/tmp/Just-your-vcode._9_" -------------v
sendmail: doing fieldname: "storekey"
runfield: found commandline: "echo", expands into: "echo"

run: done
runfield: done.
sendmail: doing fieldname: "encrypt"
runfield: found commandline: "echo", expands into: "echo"

run: done
runfield: done.
sendmail: doing fieldname: "rmkey"
runfield: found commandline: "echo", expands into: "echo"

run: done
runfield: done.
sendmail: ^-------------- end running commands.
sendmail: cutting ballot in two at line "13", making attachment "/home/joshb/source/sede/user/tmp/Tea-coffee_9_"
sendmail: running "storekey;encrypt;rmkey" (fieldnames) over "/home/joshb/source/sede/user/tmp/Tea-coffee_9_" -------------v
sendmail: doing fieldname: "storekey"
runfield: found commandline: "echo", expands into: "echo"

run: done
runfield: done.
sendmail: doing fieldname: "encrypt"
runfield: found commandline: "echo", expands into: "echo"

run: done
runfield: done.
sendmail: doing fieldname: "rmkey"
runfield: found commandline: "echo", expands into: "echo"

run: done
runfield: done.
sendmail: ^-------------- end running commands.
sendmail: sending using "mutt", processed flags.
mutt -H /home/joshb/source/sede/user/tmp/email -a /home/joshb/source/sede/user/tmp/Tea-coffee_9_ -a /home/joshb/source/sede/user/tmp/Just-your-vcode._9_ -a /home/joshb/source/sede/user/tmp/Voting-Details
sendmail: done.
sendallmail:                                 *next*
sendallmail: 12 ballots send.  
sendallmail: done.
_features pts/1~/source/sede/user/out^


... save the returned ballots ...
q:Quit  d:Del  u:Undel  s:Save  m:Mail  r:Reply  g:Group  ?:Help
 209 N F Aug 30 To joshb@mraha  ( 105) Voting.
 210 N F Aug 30 To joshb@mraha  ( 113) Your vote with info
 211 N F Aug 30 To joshb@mraha  (  90) Voting.
 212 N F Aug 30 To joshb@mraha  (  91) Voting.
 213 N F Aug 30 To joshb@mraha  (  81) Voting.
 214 N F Aug 30 To joshb@mraha  (  81) Voting.
 215 N F Aug 30 To joshb@mraha  (  98) Your vote with info
 216 N F Aug 30 To joshb@mraha  (  97) Your vote with info
 217 N F Aug 30 To joshb@mraha  (  95) Voting.
 218 N F Aug 30 To joshb@mraha  (  81) Voting.
 219 N F Aug 30 To joshb@mraha  (  91) Voting.
 220 N F Aug 30 To joshb@mraha  ( 103) Your vote with info
---Mutt: /var/mail/joshb [Msgs:220 New:14 Old:57 2.4M]---(threads/date)-(end)---


(continued)
q:Exit  s:Save  |:Pipe  p:Print  ?:Help
  I     1 <no description>                   [text/plain, 7bit, us-ascii, 0.3K]
  A     2 Tea-coffee_12_.cpt                 [applica/mac-compac, base64, 0.6K]   A     3 Just-your-vcode._12_.cpt           [applica/mac-compac, base64, 0.1K]   A     4 Open_12_.cpt                       [applica/mac-compac, base64, 0.2K]
  A     5 Voting-Details                     [text/plain, 7bit, us-ascii, 1.5K]

















-- Mutt: Attachments
Save to file: Tea-coffee_12_.cpt


... returns back where they are needed ...


_features pts/1~/source/sede/user/vin^ ls
Favorite-color_10_        Just-your-vcode._7_  Tea-coffee_1_.cpt
Favorite-color_11_        Just-your-vcode._9_  Tea-coffee_2_.cpt
Favorite-color_1_.cpt     Open_10_             Tea-coffee_3_
Favorite-color_2_.cpt     Open_12_.cpt         Tea-coffee_4_.cpt
Favorite-color_4_.cpt     Open_1_.cpt          Tea-coffee_5_.cpt
Favorite-color_8_.cpt     Open_6_              Tea-coffee_6_
Just-your-vcode._12_.cpt  Open_8_.cpt          Tea-coffee_7_
Just-your-vcode._3_       Tea-coffee_10_       Tea-coffee_8_.cpt
Just-your-vcode._5_.cpt   Tea-coffee_11_       Tea-coffee_9_
Just-your-vcode._6_       Tea-coffee_12_.cpt
rfeatures pts/1~/source/sede/user/vin^ file *
Favorite-color_10_:       ASCII text
Favorite-color_11_:       ASCII text
Favorite-color_1_.cpt:    data
Favorite-color_2_.cpt:    data
Favorite-color_4_.cpt:    data
Favorite-color_8_.cpt:    Sendmail frozen configuration  - version \215\365\030Q\021zNI$\306\230|U\275\2048O\263\025\264\334f\317h"\005l\250\265\335
Just-your-vcode._12_.cpt: data
Just-your-vcode._3_:      ASCII text
Just-your-vcode._5_.cpt:  data
Just-your-vcode._6_:      ASCII text
Just-your-vcode._7_:      ASCII text
Just-your-vcode._9_:      ASCII text
Open_10_:                 ASCII English text
Open_12_.cpt:             data
Open_1_.cpt:              data
Open_6_:                  ASCII English text
Open_8_.cpt:              data
Tea-coffee_10_:           ASCII text
Tea-coffee_11_:           ASCII English text
Tea-coffee_12_.cpt:       data
Tea-coffee_1_.cpt:        data
Tea-coffee_2_.cpt:        data
Tea-coffee_3_:            ASCII text
Tea-coffee_4_.cpt:        data
Tea-coffee_5_.cpt:        data
Tea-coffee_6_:            ASCII text
Tea-coffee_7_:            ASCII text
Tea-coffee_8_.cpt:        data
Tea-coffee_9_:            ASCII English text
_features pts/1~/source/sede/user/vin^


... decrypt the ones that were encrypted ...


_features pts/1~/source/sede/user/vin^ rundir storekey decrypt rmkey

(...etc etc...)

runfield: done.
rundir: * next *
rundir: processing file /home/joshb/source/sede/user/vin/Tea-coffee_7_ ...
rundir: concluded file belongs to voter 7
rundir: doing fieldname: "storekey" ...
runfield: found commandline: "", expands into: ""
runfield: done.
rundir: doing fieldname: "decrypt" ...
runfield: found commandline: "", expands into: ""
runfield: done.
rundir: doing fieldname: "rmkey" ...
runfield: found commandline: "", expands into: ""
runfield: done.
rundir: * next *
rundir: processing file /home/joshb/source/sede/user/vin/Tea-coffee_8_.cpt ...
rundir: concluded file belongs to voter 8
rundir: doing fieldname: "storekey" ...
runfield: found commandline: "echo "monkey barks" > ${SEDE_ROOT_TMP}/key", expands into: "echo "monkey barks" > ${SEDE_ROOT_TMP}/key"
run: done
runfield: done.
rundir: doing fieldname: "decrypt" ...
runfield: found commandline: "ccrypt --decrypt -k ${SEDE_ROOT_TMP}/key ^FILE", expands into: "ccrypt --decrypt -k ${SEDE_ROOT_TMP}/key /home/joshb/source/sede/user/vin/Tea-coffee_8_.cpt"
run: done
runfield: done.
rundir: suffix removed from filename, new name: /home/joshb/source/sede/user/vin/Tea-coffee_8_
rundir: doing fieldname: "rmkey" ...
runfield: found commandline: "sede scramble ${SEDE_ROOT_TMP}/key", expands into: "sede scramble ${SEDE_ROOT_TMP}/key"
run: done
runfield: done.
rundir: * next *
rundir: processing file /home/joshb/source/sede/user/vin/Tea-coffee_9_ ...
rundir: concluded file belongs to voter 9
rundir: doing fieldname: "storekey" ...
runfield: found commandline: "echo", expands into: "echo"

run: done
runfield: done.
rundir: doing fieldname: "decrypt" ...
runfield: found commandline: "echo", expands into: "echo"

run: done
runfield: done.
rundir: doing fieldname: "rmkey" ...
runfield: found commandline: "echo", expands into: "echo"

run: done
runfield: done.
rundir: * next *
rundir: done.
_features pts/1~/source/sede/user/vin^ file *
Favorite-color_10_:   ASCII text
Favorite-color_11_:   ASCII text
Favorite-color_1_:    ASCII text
Favorite-color_2_:    ASCII text
Favorite-color_4_:    ASCII text
Favorite-color_8_:    ASCII text
Just-your-vcode._12_: ASCII text
Just-your-vcode._3_:  ASCII text
Just-your-vcode._5_:  ASCII text
Just-your-vcode._6_:  ASCII text
Just-your-vcode._7_:  ASCII text
Just-your-vcode._9_:  ASCII text
Open_10_:             ASCII English text
Open_12_:             ASCII English text
Open_1_:              ASCII English text
Open_6_:              ASCII English text
Open_8_:              ASCII English text
Tea-coffee_10_:       ASCII text
Tea-coffee_11_:       ASCII English text
Tea-coffee_12_:       ASCII text
Tea-coffee_1_:        ASCII text
Tea-coffee_2_:        ASCII text
Tea-coffee_3_:        ASCII text
Tea-coffee_4_:        ASCII English text
Tea-coffee_5_:        ASCII English text
Tea-coffee_6_:        ASCII text
Tea-coffee_7_:        ASCII text
Tea-coffee_8_:        ASCII text
Tea-coffee_9_:        ASCII English text
_features pts/1~/source/sede/user/vin^


... the tension mounts ... who has won, and will it work ...
_features pts/1~/source/sede/user/vin^ help processall
usage: sede processall [-v|--verbose] [-c|--continue COMMAND] [COMMAND]
 shortcut: p
Process received ballots into end-results, calling these subcommands in order:
 rmprocessall
 setup
 getvotes
 invalidvotes
 putweight
 correlate
 get_voters
 notvotedcodes
 doublevotes
 addvote
 addvote_weight
 addvote_compact
 doti
 givename
_features pts/1~/source/sede/user/vin^ processall
processall: rmprocessall
processall: setup
processall: getvotes
processall: invalidvotes
processall: putweight
processall: correlate
processall: get_voters
processall: notvotedcodes
processall: doublevotes
processall: addvote
processall: addvote_weight
processall: addvote_compact
processall: doti
processall: givename
processall: done.
_features pts/1~/source/sede/user/vin^ ls $vout
background.daisy.jpg       defvote            s
background.flat.jpg        doublevotes.jpg    setup.html
background.flower.jpg      icons.tar.gz       setup.jpg
background.grassroots.jpg  index.html         shortcut.jpg
background.jpg             invalid_votes.jpg  voters.jpg
backhome.jpg               notvotedcodes.jpg  votes.jpg
browse.jpg                 o                  votingpatterns.jpg
c                          pervoter.jpg       weighted_compact.jpg
compact.jpg                result.jpg         weighted_result.jpg
_features pts/1~/source/sede/user/vin^


Results are in!
_features pts/1~^ see

                                         _features: 30 Aug 2006 19:48 (p1 of 2)

                                 Tea-coffee

                              weighted_compact
                              weighted_result
                                  compact
                                   result
                                   votes
                                   browse
                                   voters
                              abstention:none
                             double_votes:none
                             invalid_votes:none

                               Favorite-color

                              weighted_compact
                              weighted_result
                                  compact
                                   result
                                   votes
                                   browse
                                   voters
see: done.
  -3:
  -2:see
  -1:see
_features pts/1~^


aha!


                             Tea-coffee compact

6 votes for coffee
4 votes for tea
1 water
1 ?
0 voted abstention
----- +
12













Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.