USENet vote taking script examples, Part02/02
Kent Paul Dolan
xanthian at zorch.SF-Bay.ORG
Thu Dec 20 09:52:06 AEST 1990
Submitted-by: xanthian at zorch.SF-Bay.ORG (Kent Paul Dolan)
Posting-number: <fill in the blank>
Archive-name: vote_tools/Part02
This is the second part of a two part distribution.
Enclosed is a "how to run a USENet vote" document to accompany the set
of scripts I used to run the comp.sys.amiga reorganization vote
acceptance.
There are more explanations in the README, in the first part of this
distribution.
There is no trailing signature, and this shar is complete in this
posting. A first posting and shar contains the remainder of the files
for this distribution. Thanks to Rich Salz for his cshar that packaged this
distribution so nicely. Enjoy!
Kent, the man from xanth.
<xanthian at Zorch.SF-Bay.ORG> <xanthian at well.sf.ca.us>
#! /bin/sh
# This is a shell archive. Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file". To overwrite existing
# files, type "sh file -c". You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g.. If this archive is complete, you
# will see the following message at the end:
# "End of archive 2 (of 2)."
# Contents: docs/POLLING_PLACE
# Wrapped by csa-vote at zorch on Wed Dec 19 14:05:29 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'docs/POLLING_PLACE' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'docs/POLLING_PLACE'\"
else
echo shar: Extracting \"'docs/POLLING_PLACE'\" \(16763 characters\)
sed "s/^X//" >'docs/POLLING_PLACE' <<'END_OF_FILE'
XPOLLING_PLACE
X
XA description of how a USENet vote is actually run, from start to
Xfinish, including setting up the files, and the use of the enclosed
Xscripts, from experience with the comp.sys.amiga reorganization vote
Xand the earlier comp.sys.amiga.games vote.
X
XKent Paul Dolan, LCDR, USNOAA Corps, Retired.
X15 December 1990
X
XPermission is hereby granted to freely excerpt and copy this file for
Xany purpose whatsoever.
X
X1) Thinking it over.
X
XIs the vote, and the newsgroup change, really needed? For a big vote,
Xyou are going to give away all your spare time for four months; be
Xready to do this.
X
XIs there active support for such a change? Have people been muttering on
Xthe net "I wish somebody would take charge of cleaning up this mess"? If
Xthe support is only in your mind, you have a heck of a job ahead of you,
Xand net politics is frustrating in the extreme. Contrariwise, if the
Xsupport is there, you'll have lots of assistance, but most of the job
Xwill still fall on you.
X
X2) Getting started.
X
XDon't jump right into news.groups and news.announce.newgroups; sane
Xpeople ignore those groups under normal circumstances, so you have to go
Xwhere the audience for your change currently exists, and lure them into
Xfollowing a discussion in news.groups. Expect to spend four to six weeks
Xgetting together a proposal in the group where your audience lurks. Lots
Xof votes fail for lack of a coherent proposal or an interested audience
Xfollowing the discussion; the time spent _before_ "going public" is the
Xmost valuable part of your effort to the final result, so don't hurry
Xand don't let yourself be hurried by the calls to "just get on with the
Xvote, damn it".
X
XThe net has a significant, sometimes multi-week lag in responses, so you
Xcan find yourself fielding answers to proposal items long changed or
Xabandoned. Practice civility and patience; folks at sites out in the
Xweeds have no choice in the turn around times they experience.
X
XTake strong charge of the discussion, but don't get your ego tied up in
Xthe final proposal details; to get a passing vote, the proposal must be
Xwhat the intended audience wants, and what the rest of the net will
Xtolerate; this is unlikely to coincide much at all with your initial
Xvision, and trying to hold it to that standard is a recipe for failure.
X
XAgree with sensible changes by posting a revised proposal. You may do
Xseveral iterations of this; I did three over six weeks. Use easily
Xdistinguished subject lines for ease of deciding what edition of your
Xproposal the responses are considering. I used "REV 0", REV 1", and so
Xon to highlight the editions.
X
XWhen you have a concensus, and a coherent proposal drafted, with a
Xdescription of the purpose of each new group or other change, a
X"moderated" or "unmoderated" status for each, moderators chosen as
Xneeded, and a meaningful name for each new or renamed group chosen, it
Xis time to "go public".
X
XFirst, proofread your proposal. If English is not your native tongue, or
Xspelling and grammer are not your strengths, get someone to review your
Xintended posting for errors or unclarity.
X
X3) Going public.
X
XPost your proposal to moderated newsgroup news.announce.newgroups, with
Xcrosspostings to news.groups and the groups where your intended audience
Xlurks, and followups to news.groups, with a subject line like "CALL FOR
XDISCUSSION, comp.eggplant.lifecycle.* REORGANIZATION". The caps will
Xmake the subject line stand out when, inevitably, it is pulled back to
Xother, busy groups.
X
XYou are required to run a three week discussion period, but just say in
Xyour posting "there will be a twenty one day discussion period from the
Xdate this is posted to news.announce.newgroups"; don't try to guess the
Xdate yourself.
X
XIt is _very_ _important_ to have a Keywords: line all in caps that says
Xsomething a lot like "NOT THE BALLOT. POST NO VOTES. FORGE NO NEWGROUPS."
XThe behavior of people on the net must be experienced to be believed, but
Xheading off trouble in advance is the best bet, and this will help.
X
XThe moderator of news.announce.newgroups habitually batch posts articles
Xon weekends, so post your intended Call for Discussion by midweek at the
Xlatest to allow time for email transit.
X
XNominally, the rest of the discussion takes place in news.groups.
XActually, most of it will continue in the groups where your audience
Xlurks, so you must follow perhaps more groups than you ever have before.
XMake sure that each of your postings in response to these discussions
Xcontains a crosspost and a followup to news.groups. By this means, you
Xcan slowly lure more and more of the intended audience into following
Xthe main discussion.
X
X4) Slings and arrows.
X
XNot all of the newsgroup creation process is a lot of fun; there are a
Xgroup of people whose only joy in life is causing mischief to newsgroup
Xproposals. You're going to need patience for this part.
X
XThe crowd that hangs out in news.groups all consider themselves world
Xclass experts on the best names for newsgroups, and the best shapes for
Xheirarchies, and they are definitely world class experts at ranting and
Xraving, and determined control freaks. Most of them will have no
Xinterest whatever in the subject matter of your intended group, but lots
Xof interest in dictating how you name or locate it.
X
XYou'll find lots of folks convinced that the net is going to crash and
Xburn if one more group, yours, is allowed to be created, and others who
Xthink that all subjects except those personally interesting to them need
Xto be excluded from the net by all possible means, and others who can't
Xlive with the existance of any but comp groups on the net, though those
Xhave long been in the minority, and others who want to censor anything
Xwith a chance of being fun.
X
XGood luck at being civil in response; I didn't even try. A kill file is
Xa godsend in this part of the effort; answering these jerks is a waste
Xof time, while ignoring them deprives them of the feedback they crave,
Xand lets your ulcer heal.
X
XIf you come into this part of the discussion with a coherent proposal
Xagreed upon among your intended audience, this is the time to get
Xstubborn about changes away from that standard to fit the whims of those
Xwho will never follow the group anyway. Only agree to sensible, well
Xfounded changes, but when you agree, agree publically by posting a revised
Xproposal to news.groups.
X
X5) Setting up for the vote.
X
XGet a separate account for collecting votes! You will find an incredible
Xamount of trash accumulating, and you'll need a modified mail handling
Xprocedure for acknowledgements; both can make a mess of your normal
Xaccount, and you'll need your system administrator's support for the
Xeffort anyway. For a big vote, you can find yourself using three to five
Xmegabytes of storage, adding several megabytes a week to your system's
Xemail traffic, sucking up cpu cycles by the ten billions to process the
Xvotes, so you need approval in advance for the impact your vote will
Xhave on your system. You might as well get the temporary account at the
Xsame time.
X
XUnder the main directory, set up directories for the votes, one ballot
Xper file, for the acknowledgements, one big file will do, for the
Xbounced acknowledgements, for problem ballots, for gossip email sent by
Xmistake to the vote account, for the working data files created in
Xtallying the votes, for the csh scripts, and for the awk source files.
X
XIn the main directory keep a current report of the vote status, the text
Xchunks used to build it, a "thanks for the votes" form letter for the
Xacknowledgements, a raw ballot for those who can't find the posted ones
Xand request a private copy, and a straight "yes" ballot for the 5% of
Xvotes that come in as "yes on all proposals" without a ballot, so you
Xcan edit one into the ballot letter quickly.
X
XSet the scripts in place, and modify the .mailrc, as detailed in the
Xaccompanying FILE_PURPOSES document.
X
XWrite up a ballot; the most successful one I used looked like this:
X
X-----
X"Y" = yes, "N" = no, "A" = abstain; return all 14 vote lines.
X
XYNA Create comp.sys.amiga.misc (renames comp.sys.amiga)
XYNA Create comp.sys.amiga.programmer (renames comp.sys.amiga.tech)
XYNA Create comp.sys.amiga.announce (moderated)
XYNA Create comp.sys.amiga.reviews (moderated)
XYNA Create comp.sys.amiga.introduction (monitored)
XYNA Create comp.sys.amiga.audio
XYNA Create comp.sys.amiga.graphics
XYNA Create comp.sys.amiga.marketplace
XYNA Create comp.sys.amiga.multimedia
XYNA Create comp.sys.amiga.applications
XYNA Create comp.sys.amiga.emulations
XYNA Create comp.sys.amiga.advocacy
XYNA Create comp.sys.amiga.datacomm
XYNA Create comp.unix.amiga
X\ / ^---------------------------------^ Leave this part alone
X `----Remove two of these, leave your choice; remove any ">", etc., from front
X ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
X-----
X
XI didn't have the "^^^^^" part, but I recommend it; folks just don't seem to
Xsee that part without it. This summarizes your ballot proposal and how to
Xvote, all in a compact format.
X
X6) Starting the vote.
X
XWhen your files are set up, and an email friend or two has tested the
Xaccessiblity of your address and the workability of your scripts by
Xmailing you test copies of your ballot from offsite, the three week
Xdiscussion is nearing an end, a consensus on names and purposes of the
Xgroups has mostly been achieved (it will never be perfect), and you've
Xtaken a big, deep breath, you are almost ready to conduct the vote.
X
XMake a posting for news.announce.newgroups out of the ballot, your
Xlatest edition of the proposal, and a bit of extra text.
X
XPut a line at the top saying: "Justification follows the ballot", then
Xput the ballot where voters can find it quickly; below the ballot, put
Xyour revised proposal below a line saying:
X
X------------ delete remainder before returning ballot------------------
X
XPost your vote call to news.announce.newgroups, crossposted to the
Xinterest groups and news.groups, and with followups directed to
Xnews.groups as before, with a Subject line like "CALL FOR VOTES,
Xcomp.eggplant.lifecycle.* REORGANIZATION".
X
XUse a Summary: (not Keywords:) line like "THIS IS THE BALLOT. EMAIL
XVOTES ONLY. DON'T POST VOTES."
X
XThe reason to use the Summary: line is that it doesn't get copied to the
Xfollowup articles. To cope with them, put in a Keywords: line like:
X"VOTE ONLY WITH ORIGINAL BALLOT. FORGE NO NEWGROUPS. POST NO VOTES."
X
XThere will still be people who don't seem to be able to read, but there
Xwill be fewer if you take all these precautions.
X
XPut in a line near the top saying: "the vote will run for three weeks
Xfrom the date this is posted"; the moderator of news.announce.newgroups
Xwill set the exact date for you.
X
XWhile discussion is nominally over, the control freaks never give up,
Xand go wild when a vote is actually called. You may find yourself
Xdefending everything you thought already settled, again. Be patient, it
Xhelps run up the vote totals.
X
X7) Conducting the vote.
X
XNow you will see an amazing thing happen; 20% of your final vote total
Xwill arrive within twelve hours of the article being posted by the
Xmoderator, and 60% within two days. You are going to be very busy for
Xa while, and then very bored.
X
XFor each ballot received, read it to be sure it is correctly formatted;
Xif so, save it to directory "votes" under a unique file name; the login
Xid of the voter is best, extend it with other identifying information
Xif it is a common first or last name. If using "mail", watch for the
X"new file" after you save the ballot, to assure that there hasn't been
Xa filename collision.
X
XIf the ballot is badly formatted, but usable, use the edit command of
Xyour mail reader (for "mail" this is "e") to correct the problems without
Xchanging the intent of the vote, then save to directory "votes" as before.
X
XIf the ballot is unusable (no way to determine the voter's intentions),
Xsave the ballot to directory "problems".
X
XIf the email is not a ballot, but a bounce of one of your acknowledgements,
Xif you can cope with it then, by mailing a new acknowledgement to a better
Xformatted address (remember, you can look at the original ballot in "votes"
Xto see other possible addresses), do so and delete the bounce. If you can't,
Xor don't have time, save the bounce to directory "bounces" under the same
Xname as the ballot in "votes", and go on to the next email.
X
XFor ballots, respond with your canned "thanks for voting" note; in "mail",
Xthis is done by typing "R", entering a subject like "thanks for your vote"
Xif necessary, typing "~r thanks" return, pausing, then typing "." return
Xor "^D" depending on whether you have "set dot" in your .mailrc.
X
XFor problem ballots, mail back a description of the problem and a copy of
Xthe raw ballot instead of the "thanks" note.
X
XWhen you are done processing the current email votes, exit the mailer
Xwith whatever method deletes all the already saved mail.
X
XIn the main directory, with ~/bin in your path, execute "dothevotes &"
Xreturn. You can then su to your real account and read news or do work
Xor whatever, with the occasional blast of trash to your screen to tell
Xyou when one or another phase of the vote counting is done.
X
XWhen you see "WRITELETTER DONE" in a row of stars, you can exit back to
Xthe vote account and review the scoreletter to see how the vote is going.
XIf you see some "invalid" votes counted, search the tally/parsedvotes
Xfile for "I " to see whose ballot slipped a problem by you, and then fix
Xthe ballot or move it to the problems directory as appropriate and run
Xdothevotes again.
X
X8) Vote huckstering and status reporting.
X
XYou owe the world a copy of "scoreletter" (and the other reports if you
Xlike), "parsedvotes" and a list of the ballots (by mailpath) still
Xsitting unusable in "problems", at the end of the voting period. More
Xbelow.
X
XWhile not mandatory, it is customary to post an intermediate mass
Xacknowledgement copy of "parsedvotes", but without the vote information,
Xat a midpoint of the voting period. Since there are two weekends between
Xthe start and end of the voting period, and since well over half of the
Xvotes of the votes arrive in the first couple of days, use the first
Xweekend.
X
XAgain post the article by Friday at the latest to
Xnews.announce.newgroups with a Subject: line like "FIRST MASS
XACKNOWLEDGEMENT, comp.eggplant.lifecycle.* REORGANIZATION VOTE", and
Xagain a keywords line like "NOT THE BALLOT. USE ORIGINAL BALLOT ONLY.
XDON'T POST VOTES." Sigh.
X
XIt is also a fact of life that many sites expire news in two or three
Xdays. If your vote total is running short, post more ballots to the
Xinterest groups (and news.groups if you are willing to take the
Xcomplaints) every few days. A few grumpy people will vote against
Xyour proposal out of spite, but this is more than balanced by the 40%
Xor so of the vote that can only be gained by being pushy.
X
XThere is a slight infelicity in the voting rules, in that the weekend
Xposting habits of the news.announce.newgroups moderator and the 21 day
Xminimum vote rule collide to put a week of dead time waiting for the
Xballot results to be posted. If you have plenty of votes, no more seem
Xto be arriving, and the issues are not in doubt, cheat and close the
Xpolls a little early so you can flash your results to the moderator. If
Xthe issue is in balance, or votes are still flooding in, suffer the week
Xdelay.
X
XYour results posting should contain the scoreletter and the parsedvotes
Xfile. If you get _lots_ of votes so that your posting would exceed maybe
X45Kbytes, break it into several postings that size or smaller, with the
Xscoreletter at the top of each. This is because the vote order in the
Xscoreletter is the same as the vote order on each ballot line, allowing
Xvoters to check their ballots.
X
XYour scoreletter sl_header text should say the appropriate things about
Xhow the vote came out, thank everyone for participating, and mention the
Xfive day "vote challenge" period. Normally, you leave the job of posting
X"newgroup" control messages to the moderator of news.announce.newgroups.
X
X9) Aftermath.
X
XAccept the plaudits of your friends and proposal supporters, the heaped
Xscorn of the opponents, say "sorry, too late" to late arriving votes,
Xsquirrel away the ballots if you like, or nuke them after the newgroups
Xgo out, and go have that nervous breakdown you've been working and
Xwaiting for, and so richly deserve now that you have time for it.
X
X /// It's Amiga
X /// for me: why
XKent, the man from xanth. \\\/// settle for
X<xanthian at Zorch.SF-Bay.ORG> <xanthian at well.sf.ca.us> \XX/ anything less?
X--
XConvener, ongoing comp.sys.amiga grand reorganization.
END_OF_FILE
if test 16763 -ne `wc -c <'docs/POLLING_PLACE'`; then
echo shar: \"'docs/POLLING_PLACE'\" unpacked with wrong size!
fi
# end of 'docs/POLLING_PLACE'
fi
echo shar: End of archive 2 \(of 2\).
cp /dev/null ark2isdone
MISSING=""
for I in 1 2 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked both archives.
rm -f ark[1-9]isdone
else
echo You still need to unpack the following archives:
echo " " ${MISSING}
fi
## End of shell archive.
exit 0
More information about the Alt.sources
mailing list