On Sat, Aug 8, 2009 at 11:34, comex<com...@gmail.com> wrote:
> Why can't we just have an interface that
> - is open-source (so we know what's going on, and can replicate it to
> another server if the original one goes down),
> - is cross-platform (so I can run it),
> - is easy to change (preferably gives recordkeepors the ability to
> change the portions of the code related to their corner of the game),
> and
> - is versioned (so we don't have to fall back to email records to
> check old gamestate, and can more easily verify it)
>
> Then we wouldn't need five competing recordkeeping systems (of which
> BobTHJ's is by far the most complete, but it isn't complete and
> fulfills the least of those goals).
>
My goal is to slowly continue to add information to my database until
the full state of Agora is tracked. Really, I only have proposals,
CFJs and rules to go. Anyway, as I've mentioned before: my intent is
not to force Agora to become dependent upon my automation...but merely
to provide a service to the Agoran community and ease the
recordkeeping burden for officers who wish to make use of it.

After the last conversation on this issue a couple weeks ago I've been
working on re-writing large sections of my code to make it accessible
to others, with the eventual goal of making it available for others to
update and/or replicate. I've still got a ways to go, but once I get
finished with that I will gladly make my source-code available via
FTP. I can't solve the cross-platform issue, sorry. VB.NET is really
my only skilled language, and it'd be a pain to re-write it in
something else at this point (although I believe you can run ASP.NET
on non-windows platforms via Mono - sorry I have no first-hand
experience with this). I added versioning last week (theoretically, my
program can roll-back the gamestate to any point since July 10th when
I started tracking it, and can even adapt to changes in how actions
are processed based upon changes to the Agoran ruleset). Being able to
view the gamestate at a specific point in the past via the
web-interface is a planned feature (and not too far off). I've also
tried to make the code easy to change by extracting each rule-defined
action into its own class/file, allowing most actions to be
constructed with only a few lines of code.

> {
> Players who try to go beyond text processing and actually put some
> Nomic bookkeeping in a program are warned that the complexities are
> subtle. First, such a program should be as easy to modify as the rules
> of the game, or else the difficulty of changing it will put an
> unwanted brake on play. Moreover, it is very easy inadvertently to
> give the program decisions to make that are not actually clerical and
> that belong to the players, that is, to change Nomic without realizing
> it. This is true even of the most deceptively simple decisions such as
> renumbering rules after amendment, computing scores, and deciding who
> plays next. For the same reasons, mere word processing can introduce
> distortions. Decisions necessary to write a program or edit text may
> require a precision not explicit in the rule as written, in which case
> the programmer usurps the power of the game Judge if she simply
> chooses a reading of the rule. In any case, the game Judge should be
> the final arbiter of all questions and decisions, even those made by a
> program, unless of course a rule has changed the role of the Judge.
> }
> -Peter Suber, The Paradox of Self-Amendment

Note that since developing it I've tried to make my program adaptable
to this process. It hasn't been easy to come up with a workable
solution, and it is still not complete, but my system now correctly
models about 99% of the information it tracks. For those exceptions,
I've designed it so I can go back and flag a past transaction as
DISPUTED or FAILED. Upon doing so the gamestate is rolled back to that
point, the corrected results of the action are processed and then the
later actions are re-processed to generate the new correct gamestate.

BobTHJ

Reply via email to