UseVote V2.0a - Usenet News Group Voting Software
by rdippold@qualcomm.com

----------------------------- VERSION CHANGES ---------------------------

Compatability:
  If you want to use a result file produced prior to UseVote 2.0 with newer
  versions of the software, you must compile and run the "convert" program
  to add the extra "D:" and "C:" fields.

Outstanding Items:
* We're not actually doing anything with the D: <date> field except keeping
  it in the results file for reference.  If someone wants to write traffic
  analysis software to do something with the dates, be my guest - it's not
  on my list of "to do" stuff.
* What does Posix compliance entail?

V2.0a - quick fixes
* "uvvote -t" would choke on a %body% parameter, since there was no file
  open for input at the time.
* "uvack" now has the -i option to print only invalid votes.

V2.0 - Major new formats and functionality
* Wow! Interactive vote editor for uvvote available - needs three more
  variables in usevote.h
* "uvbounce" for generating Mail Ack bounce lists.
* Ability to include header and/or body of message in Mail Acks
* Two new fields for each vote - "D: <date>" and "C: <comment>".  Date
  will be taken from the first "From " or "Received:" field in the vote,
  if possible. Comment is mostly unused now.  The order is A, N, D, C, V.
* "convert" program included to convert old results files to new ones
* Unix shell script "uvshell" included to further automate uvvote.
* Make better use of vote start detection - now can detect vote in subject
  even if it comes before address.
* Realize that single group votes using UseVote are the vast majority, and
  reorder the file naming.


V1.7 - Internal release only
* Rejected votes are saved in the results file now, indicated by a "!"
  where the first vote should be in the votes field
* Refinements to "uvvote" address handling: should handle multiple-line
  addresses, should handle multiple addresses separated by a comma by just
  using the first one, will now strip leading spaces off names, replaces
  all tabs with spaces (for "uvack" spacing)
* "uvack" handles abstaining votes and rejected votes correctly
* "uvcount" includes rejected vote counts and a abstaining votes if a
  single group vote.
* "uvcount" no longer shorts the right margin by two spaces for multivotes.

V1.6 - Minor upgrades after 1.5's major changes.
* VOTEACKCLEAN from 1.5 is gone - MAILCMD processing is more powerful than
  I had realized, and this can be done here.  See "usevote.h"
* "uvvote" now allows you to specify text for the beginning and end of the
  "domail" shell file - for example,  "#!/bin/sh"
* "usevote.h" now includes a "sleep 20" by default for mailouts.
* "uvvote" now warns if the user address doesn't include a "@" - this happens
  in a few cases where jim@unomaha.edu sends out messages with a
  "From:" address of just "jim".
* "uvvote" now doesn't check anywhere in the detected group name for a valid
  voting keyword - so just because you have a group name like
  rec.oh.no.spaghettio, it won't be counted as a NO vote.
* "uvvote" makes sure there is non-character and non-'.' characters after the
   group name to count it as valid.
* Added warning in README about using group name and keyword on line
  in CFV after the ballot in case some idiot returns the whole thing.

V1.5 - Some new files, a new major program for multiple votes
* A new companion program, uvsplit, has been released which will allow
  you to handle multiple votes easier.	This is not included in this
  archive, it's in its own archive.
* We now have a real "makefile", which replaces "compile."
* New files "blurb" and "sampvote" for your information.
* Version info moved into new "WHATSNEW"
* If the voter has a "Reply-To:" line in his header, UseVote is now polite
  enough to honor that.  This will allow more vote acks to get through.
* New option to allow "domail" to clean up after itself by deleting all the
  ack.xxx files.  #define VOTEACKCLEAN.
* acktext.txt has been rewritten so it isn't such a pain in the rear to
  modify for each vote.  Important with multiple votes.
* uvack now adds a header row of dashes on voteless acks - looks better

V1.4 - Two enhancements, one fairly important.
* All abstentions is no longer a bogus vote as long as one of the abstentions
  is explicit - if the voter says "I abstain from the vote on foo.bar.misc"
  this is treated as a legal vote.  There is a legitimate use, where someone
  who previously voted can change their vote to abstain for whatever reason.
  Not voting on anything is still a bogus vote.  Abstentions do NOT COUNT
  when determining group passage.
* There were some complaints about the beautiful ack list formatting.  A new
  option -n give an alternate. more traditional, formatting of the names.

V1.3 - Some maintenance, some upgrades
* Some mail formats don't follow the "From " at the start of a message
  UNIX-style standard.  I've added settable constants in usevote.h for
  message start and end markers.
* A bug could cause a message with a "From " but no "From:" to be
  totally ignored - instead of generating an error.
* The new name-in-message feature was "weak" (as reported by a user), and
  indeed it was, due to a design flaw.  Hopefully, this should handle it
  more robustly.

V1.2b - arguments checking
* Similarly, some compilers didn't like what I was doing with uvdup
  in checking for a command line switch.  Except in this case I was
  actually doing something that I shouldn't have.

V1.2a - enum elimination
* Okay, some compilers just _don't_ like "enum"s in any standard format.
  I ripped them out and replaced them with #define's.

V 1.2 - Some maintenance, some upgrades
* The biggest change is the ability to have the voter give their real
  name if their news site/software doesn't allow them to do it.  Also
  an associated ability to reject any ballots that don't have a name.
* "uvdup.c" now allows specification of a file which will hold a record
  of all deleted duplicate votes.  It also allows an automatic mode for
  those rare times it is wanted.
* Some demented users were putting parentheses in their names - the
  double parentheses thing confused "uvvote.c", resulting in bogus names
  and addresses.  Now we count nesting of parens.
* We need to use backslashes for some characters in some addresses for
  "domail".  A new constant in usevote.h lets you specify which
  characters need to be backslashed.  As part of this, MAILCMD now
  defaults to _not_ using quotes around the address.
* "uvvote.c" now grabs the ballot identifier as it goes by and uses
  it when doing mail acks, so it'll print [FB-0002] instead of [FB-000#]
  if it found the VOTEMARK of [FB-0002].
* Double quotes are stripped from around names for better display.
* Beautfied "Sorting" display.
* Another change to a typedef because of more compiler complaining.
* The soc.culture.macedonia vote of 5900 votes exceeded my vote max
  of 3000 - so much for "good for a couple of years."  Just a change
  in the comment.


V 1.1a - Maintenance upgrade
* Changed a typedef to prevent some compilers from whining about
  typedef abuse.  The software still worked, but this should get rid
  of the warnings.
* Fixed a genuine bug - in a single item vote, asking for a mass ack
  without votes would result in the ack list being spit out twice.


V 1.1 - Lots of changes to uvvote.c and acktext.txt
* Result files are still compatible with V1.0 - ballots may not be
  if you use some of the new options.
* Expanded use of acktext.txt for many other new possible problems
  that can be detected with the votes, such as all abstentions.
  This makes things much more automatic.
* Introduces the use of a vote rules file, to deal with special
  conditions that sometimes come up in multiple group votes, such as
  that you can only vote on group x if you voted yes for group y.
* Include a copy of the ballot marker text on mailback acks, so they
  can be corrected, sent back, and the voting software will still
  handle it.
* The new options should make things much nicer for single-item votes.
* I rewrote the uvack.c to make vote ack lists look niftier.
* Removed that "UseVote 0.2 -- The computer is your friend" message.
* Removed all references to me and comp.sys.ibm.pc.games in the supplied
  files, so I don't get strange mail if people forget to change them.
* The software itself has been rewritten to be a bit more modular.  Not
  too much your concern, but this list is for my benefit too.


V 1.0 - Major changes, first real release
* Renamed modules to be consistent with uvvote.
* Yes/No/Abstain/For/Against recognition totally changed.  It now looks
  for a standalone word on the line surrounded by non-alpha characters,
  so that a "no" imbedded in a group name like "comp.sys.gnome" won't
  cause a false no.  There was a kludge that took care of that, but it
  was just a kludge.
* All the common vote information has been consolidated in one file
  (usevote.h).
* Added duplicate detection software.
* Added support for single group votes to vote ack software.
* Added sorting in vote ack software.
* Greatly improved message detection and error handling in uvvote.


V 0.1 Preliminary
* The original code, written in one day, worked great for the
  comp.sys.ibm.pc.games reorganization.  Rather specific and kludgy,
  though.


Thanks to all who tested and made suggestions - Ed Bailey, David
Cornejo, Jim Huggins, Jan Isley, Ian Kluft, David Lawrence, Jay
Maynard, Brenda Roder, Andrew Solovay!, Brian Tao, and more.  If I've
forgotten you, mail me.
