Abstract:
Apparatus, methods and articles of manufacture for software demonstration are disclosed. Apparatus include a server that provides, via a network, a program or programs to be demonstrated to a user. The user uploads the code that the program will execute. Results are then supplied after execution, and may be made available to the user in a number of ways. Methods and articles of manufacture are also disclosed.

Description:
FIELD OF THE INVENTION  
       [0001]     The present invention relates to software demonstration. More specifically, the present invention relates to software demonstration through computer networks.  
       BACKGROUND OF THE INVENTION  
       [0002]     Providing software for user demonstration may be difficult. For example, a stand alone software product may be demonstrated through physically delivering a trial copy to a user, or permitting download of a trial copy and subsequent installation on a user&#39;s machine, and there are few technical difficulties associated with such procedures. However, if the software is not standalone, and/or requires installation and integration with existing software, a demonstration cannot easily be installed and less easily removed from a user&#39;s system.  
         [0003]     One example of software that needs integration into a user&#39;s system or network is email system software. Email system software usually requires installation on a server and configuration to accommodate the network and its users. Although demonstration copies can be provided on demonstration machines, the peculiarities of a user&#39;s system and/or network may make any such demonstration of such a software product less than convincing.  
         [0004]     If the software is being offered as a service, such as might be done by an Application Service Provider (“ASP”) with an email scanning service, demonstration difficulties are multiplied. When email scanning software is offered as a service, a live demonstration requires resources—a sales person for example, with a properly configured machine. Similar to the difficulties noted above with regard to demonstrating a product, demonstrating a service on a machine or network other than a user&#39;s machine or network may simply be unconvincing.  
         [0005]     Internet based demonstrations do eliminate at least one difficulty associated with software demonstration of either a service or product by making distribution of a trial product or service less costly than physical demonstration. However, Internet demonstrations of a software service that requires integration with a user&#39;s system or network, such as an email system, may be impossible because the Internet or file server offering the demonstration software service is not the user&#39;s. Thus, integration issues cannot be revealed in such a demonstration.  
         [0006]     Certain methods have been developed to attempt to solve software service distribution difficulties. For example, a virus scanning service for email may let the user send his or her email to a server for virus scanning. This method often provides an open relay. In other words, email is sent to a server and the server scans the email and then forwards the email according to its address. The problem with this method is that open relay mail servers are insecure, for example, an email server may be used to distribute unsolicited bulk email (UBE); as a platform of attack for an email denial of service, etc. Difficulties may multiply—once a mail server is being used to distribute UBE or in another unauthorized fashion, the server may be blacklisted or isolated from other email servers through placement on a DNS blocked list, etc. Thus an open relay method may be unacceptable.  
         [0007]     Another method is to allow potential customers to send email to the server which is then processed and returned to the sender. However, this method may also be unacceptable because a user may intercept email that is to be returned to the sender. For example, a malicious user could surreptitiously install a program on the demonstration server that allows the interception of email.  
         [0008]     Accordingly, there exists a need for improved apparatus, methods and articles of manufacture for demonstrating software.  
       SUMMARY OF THE INVENTION  
       [0009]     The present invention comprises apparatus, methods and articles of manufacture for software demonstration. Methods comprise providing an identified user with access, via a network, to a server comprising a program to be demonstrated; receiving code from the user that will be executed by the program; executing the code within the program to be demonstrated; and, providing any results of the execution. Thus the user and others can review the performance of the software to be demonstrated on data supplied by the user, without implicating the user&#39;s system. Moreover, embodiments are made available over the Internet. Apparatus and articles of manufacture are also disclosed. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0010]      FIG. 1  shows the use of a preferred embodiment. 
     
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS  
       [0011]     The present invention comprises apparatus, methods and articles of manufacture for software demonstration. Embodiments may provide demonstrations of programs upon user-supplied code (“code” as used herein generally includes text, data, and files, as well as binaries) in any number of ways desired, for example, a single product (e.g., an email scanner from a single vendor,) a comparison of products in the same market (e.g., email scanners from different vendors) products in different markets (e.g., email scanners and proscribed code scanners,) combinations of these, etc.  
         [0012]      FIG. 1  shows a email antivirus scanner program  30  accessible to user  20  via server  10  over network a. In this and other preferred embodiments, network a is the Internet, and server  10  is generally available via the Internet.  
         [0013]     User  20  obtains access to program  30  in various ways in various embodiments. Generally, the preferred embodiments provide limited secured access through user identification as is further described below. However, it should be noted that access may be provided, in other embodiments, according to any methods. For example, access may be provided without restriction to any user, predefined restrictions may be applied to users as desired, etc.  
         [0014]     Limited secured access is controlled a number of ways in various preferred embodiments. Generally, in the preferred antivirus email embodiments, a unique, operational email address, generated manually and/or automatically, is used to both identify the user and provide a destination for the user&#39;s email to be tested for the demonstration, as will be explained further below. For example, in a preferred embodiment a user may fill out a registration form, and then be contacted by the demonstrator&#39;s operator, in order to be provided with an demonstration email address and password. As another example, a user may automatically be provided with a demonstration email address upon filling out a registration form. (In yet other embodiments, further identification may be required, e.g. credit cards, personal information, etc.) In especially preferred embodiments, the server will automatically create a user id. One method of doing so used in an especially preferred embodiment is to assign the user an id based upon the email address the user has used to submit the sample. That email address then becomes the user id.  
         [0015]     Additionally, embodiments may attempt to simplify user email addressing, by, for example, allowing a user to provide her own email prefix, to be appended to a demonstrator provided email domain. Of course, in email and other embodiments, other idenification methods can be used, such as an ID number, password, etc. Moreover, it should be noted, an identified user may be able to use an embodiment once or more than once, in a variety of ways, such as for a predetermined time, with a predetermined amount of data, etc.  
         [0016]     Returning to  FIG. 1 , once user  20  obtains access to program  30 , she uses the provided email address to send, forward or otherwise transmit the email to be scanned by the demonstrator. In the preferred embodiments, the email to be scanned is limited, e.g., by numbers, by size, by allowed attachments, etc.  
         [0017]     Program  30  then demonstrates its attributes on the emails provided by the user e.g., by scanning for proscribed code. Program  30  returns the results to server  10 , where it is displayed as a web page, accessible via any commonly available web browser.  
         [0018]     The user then logs onto server  10  to retrieve the demonstration results. Results are presented as a web page, which may have been constructed in any number of ways as known in the art, e.g. Active Server Pages, PHP, Perl, HTML, XML, jsp, etc. The results will, of course, vary with the program to be demonstrated. For example, an antivirus program will show the results of its scan on the user-provided emails, an antispam scanner will show its results, etc. Generally, the results of any particular program will be displayed in a web page using the reporting capabilities of that particular program. It may also be desired, however, to provide results in other formats, for example, standardized formats across programs to be demonstrated, via email to a user address, etc. and so results may be presented in a predetermined format as well.  
         [0019]     Thus the user is able to view the efficacy of the demonstrated program. If desired, in certain embodiments, a link may then be provided to purchase the demonstrated program, if the user desires.  
         [0020]     Data obtained from the demonstrations may be retained on an as-desired basis; for example, daily, weekly, as run, when server space becomes limited, etc. Data obtained from the demonstrations may also be used to refine demonstration programs, if desired.  
         [0021]     Of course, various embodiments may use various operating systems and technologies. For example, servers may be used that run on Sun Solaris® Unix®, as well as other Unix® and Unix®-like platforms, including but not limited to Linux® and its variants, OS X, as well as other operating system platforms and code including but not limited to Microsoft Server 2003, Microsoft Windows® XP, Windows® NT, Windows® 2000, Windows® 95, 98 CE and Me, IBM OS/390, MacOS, VxWorks,® Palm OS, Symbian, Java and others. The demonstration system may be present in a different operating system than the user&#39;s machine, as all that may be necessary for the user is a web browser, in those web-based embodiments. Moreover, embodiments may be constructed in a number of ways, e.g., present on a single server, where the program to be demonstrated resides on that server, across a number of servers, machines, in a distributed fashion, etc.  
         [0022]     Embodiments may be highly secured systems as well and use various security methods, both described herein and as known in the art, to secure access. Increased security may also be provided in various embodiments through other methods. For example, passwords may be used in various manners in order to attempt to increase security of the embodiment. For example, either or both providing data and receiving results may be subject to password protection, and that password protection may be used in a number of ways. For example, passwords may be required by the system in the headers or body of a forwarded message; to display of test results, etc.  
         [0023]     Embodiments may also provide secure shut down mechanisms. So, for example, if an embodiment detects that it is under a denial of service attack via mail flood or any other method, from another node, system or systems on the network, it can configure itself and/or a network gateway to temporarily not accept connections from the node, system or systems that are doing the attack. The embodiment would then report the attack to a network administrator.  
         [0024]     Embodiments may also remove user emails on a predetermined schedule. For example, any email addresses that are not assigned to an active user (one using the system for demonstration purposes) may be removed as soon as possible, on a regular schedule, etc. As another example, the server may be moved from domain to domain in order to minimize tampering. Email addresses may then be removed, be made unusable, etc.  
         [0025]     Demonstrations may be of any programs desired and, in various embodiments, one or more programs may be made available for demonstration. In certain preferred embodiments, those products made available for demonstration may be from a single vendor. Yet other preferred embodiments may make products available from multiple vendors for demonstration, e.g., comparative testing offered by network and/or web-based retailers, reviewers, etc. Thus, the same user provided data may be used to test a number of programs, e.g. a user might desire to test competing antivirus programs, competing compilers, etc. and results from each program be provided accordingly. It should be noted that any number of programs may be demonstrated as desired, as well as upgrades, patches, maintenance fixes, etc.  
         [0026]     As embodiments may be provided to demonstrate various types of software, embodiments may provide, to a server or servers containing the program or programs to be demonstrated, any type of user provided code. For example, a user may provide code specific to the demonstration and so may provide other types of code instead of, or in addition to, email. For example, user provided code may be transmitted in order to have a server demonstration of instant messaging code, peer-to-peer code, validity checker(s), syntax checker(s), etc.  
         [0027]     Embodiments are available as desired. For example, because of their automated nature, an embodiment may be made available constantly over the Internet, and thus accessible to users.  
         [0028]     The above description and the views and material depicted by the figures are for purposes of illustration only and are not intended to be, and should not be construed as, limitations on the invention. Moreover, certain modifications or alternatives may suggest themselves to those skilled in the art upon reading of this specification, all of which are intended to be within the spirit and scope of the present invention as defined in the attached claims.