Welcome to PRPNet Client/Server Version 2.0.0 (April 2009)

What is PRPNet?
    PRPNet is a distributed Client/Server application that can used to manage
    and perform probable prime (PRP) tests on a list of candidate numbers.

What types of numbers does PRPNet support?
    At this time PRPNet only supports numbers in the form k*b^n+1, k*b^n-1,
    primorials (n#+1, n#-1), and factorials (n!+1, n!-1).

What is the PRPNet Client?
    The PRPNet Client is a program that uses LLR or Phrot to perform a PRP
    test on a number.  As a client, this program communicates with a centralized
    server (see "What is the PRPNet Server?" below) which doles out work to
    the client.  The client will run a PRP test and report back to the server
    the result of the test. 

What do I need to do to get the client/server running?
    You can build the client in the source directory using make or by using the
    Visual C++ project workspace provided.  Specific instructions for running 
    the client or server can be found in those directories.

What is the PRPNet Server?
    The PRPNet Server is a server program that manages a list of numbers for which
    the primality is not known.  When a client (see "What is the PRPNet Client?" 
    above) requests work, the server will use a set of predifined rules to determine 
    which candidate number needs a PRP test.  It will then responds to that client
    with the candidate.  When the test is done, it will log the results of the test
    (PRP or composite).  The server has the ability to perform double-checks to
    verify that tests were run on stable hardware. 

What is the PRPNet Administration Tool?
    The administration tool is used by the adminstrator of the PRPNet server to
    modify server settings while it is running.  At this time, the only modifications
    supported by this tool are the ability to add new candidates from an ABC file
    and remove candidates based upon factors found.  Neither the PRP Admin tool
    nor the server will validate factors applied through this process.

What ABC file formats are supported?
    The same formats that are supported by LLR and Phrot, but also the formats
    output by fsieve and psieve, which would be used by PFGW.

What does a factor file look like?
    Factors are expected to be in the form:
       <factor> | <candidate>
    which is the output of files found by any of Geoff Reynold's sieving programs.

How do I compile/run these programs?
    If you are running Windows, then you can use the provided executables.  They
    were compiled with Visual Studio  For other environments, these programs can
    be easily compiled with the supplied Makefiles.  The default makefile can be 
    used with Cygwin under Windows (with the MinGW g++ compiler) and with most unix
    boxes.  There is also a project workspace (prpnet.dsw) for use with Visual Studio.
    Once the executable you need is built, you will need to modify the cfg file in the 
    appropriate directory.  Please refer to that cfg file to understand how to set 
    the various configuration parameters.

How do stats work?
    To access stats, just access the server on its defined port, but append the
    name of a webpage you want to see at the end of that.  At this time the server 
    supports three stats pages:
       server_stats.html provides a complete web page of the current server
       server_status.html is similar to server_stats.html, but is intended to be
       embedded in another web page.
       user_stats.html provides a complete web page of stats rolled up by user
       ordered by score.

Can I add support for more pages?
    Absolutely.  I certainly would appreciate any input for the future development of
    PRPNet.  The current page formats are not set in stone and I am open to making
    improvements.

Can the supported pages be more dynamic, such as supporting XSLT?
    I've thought about it, but that would require a lot of documentation.  If someone
    wants to begin such development I would support it.  Of note, it must not require
    the use of licensed software or software that is platform dependent, i.e. software
    that only runs on Windows.

How are user stats computed?
    The score is computed as such:
       (decimal length of the candidate / 10000) ^ 2

Why did you use that method for user stats?
    For simplicity.  There is no need to know the CPU the software is run on or how
    long it takes to perform a test.  If one user tests a number that is twice as
    long as another, then they get four times as many points because it takes four
    times as long to test.  That presumes that both tests are run on the same hardware
    with the same software.  I divide by 10000 to keep the numbers relatively small.

Can I change how user stats are computed?
    Certainly.  You need to modify AddUserTest() in prpserver.cpp.  The caveat is
    that you will need to keep track of any changes to the source as new releases
    of PRPNet come out.  I am open to updating my source, but only if someone can
    provide a better formula that is easy to implement and more equitable.

Who are you and how do I contact you if I find or bug or have any questions?
    My name is Mark Rodenkirch.  I can be contacted at rogue@wi.rr.com.

