Dynamic product installation based on user feedback

A method and technique for utilizing user feedback of product installation disclosed. The technique includes: initiating an installation process to install an instance of a product, by an install module of the product, on a client computing system of a first user; interfacing, by the install module, with a server system to retrieve install path data defining a default installation path for the product, the default installation path based on previous feedback data received from at least a second user previously installing another instance of the product; modifying, by the install module, a default installation path for the product on the client computing system of the first user using the install path data; during the installation process, obtaining current feedback data from the first user corresponding to the installation process on the client computing system of the first user; and transmitting the current feedback data to the server system.

BACKGROUND

When a product is installed on a data processing system (e.g., a software and/or hardware product), the product generally includes a routine executed for installing the product. During product installation on the data processing system, a user may be presented by the routine with various options and/or prompts associated with the installation, such as acceptance of license terms, where to install certain data and/or files, whether a default/standard or custom installation path is desired, etc. Sometimes, if a step in the installation process does not complete as expected or results in a manner slightly different than documented, the user may attempt to retrieve assistance from a product support helpdesk or third party website, such as a message board.

BRIEF SUMMARY

According to one aspect of the present disclosure a method and technique for dynamic product installation based on user feedback is disclosed. The method includes: initiating an installation process to install an instance of a product, by an install module of the product, on a client computing system of a first user; interfacing, by the install module, with a server system to retrieve install path data defining a default installation path for the product, the default installation path based on previous feedback data received from at least a second user previously installing another instance of the product; modifying, by the install module, a default installation path for the product on the client computing system of the first user using the install path data; during the installation process, obtaining current feedback data from the first user corresponding to the installation process on the client computing system of the first user; and transmitting the current feedback data to the server system.

DETAILED DESCRIPTION

Embodiments of the present disclosure provide a method, system and computer program product for dynamic product installation based on user feedback. For example, in some embodiments, the method and technique utilizes user feedback corresponding to a previous install of a product to assist and/or modify future installations of the product. The feedback of previous users/installers may be retrieved in real time upon initiating an install of the product such that the installing user may view the comments/feedback of previous installers while currently installing the product (e.g., displayed to the user at different corresponding stages of the installation process/sequence). The code/routine for installing the product may automatically access a remote data source for previous install feedback information. In some embodiments, the feedback of previous users/installs may be used to modify a default installation path for the product. For example, in some embodiments, feedback received from previous users/installs may indicate that certain installation steps are favored or disfavored. An install module may evaluate/analyze the user feedback and automatically determine whether certain steps of a default installation path for the product should be modified. The code/routine used to install the product may retrieve the information for the installation path and automatically modify the default installation path for the product based on user feedback from previous installs. Thus, embodiments of the present may include: initiating an installation process to install an instance of a product, by an install module of the product, on a client computing system of a first user; interfacing, by the install module, with a server system to retrieve install path data defining a default installation path for the product, the default installation path based on previous feedback data received from at least a second user previously installing another instance of the product; modifying, by the install module, a default installation path for the product on the client computing system of the first user using the install path data; during the installation process, obtaining current feedback data from the first user corresponding to the installation process on the client computing system of the first user; and transmitting the current feedback data to the server system.

In some embodiments, server140and server150connect to network130along with data store160. Server140and server150may be, for example, IBM® Power Systems™ servers. In addition, clients110and120connect to network130. Clients110and120may be, for example, personal computers or network computers. In the depicted example, server140provides data and/or services such as, but not limited to, data files, operating system images, and applications to clients110and120. Network data processing system100may include additional servers, clients, and other devices.

FIG. 2is an embodiment of a data processing system200such as, but not limited to, client110and/or server140in which an embodiment of a system for dynamic product installation based on user feedback according to the present disclosure may be implemented. In this embodiment, data processing system200includes a bus or communications fabric202, which provides communications between processor unit204, memory206, persistent storage208, communications unit210, input/output (I/O) unit212, and display214.

In some embodiments, memory206may be a random access memory or any other suitable volatile or non-volatile storage device. Persistent storage208may take various forms depending on the particular implementation. For example, persistent storage208may contain one or more components or devices. Persistent storage208may be a hard drive, a flash memory, a rewritable optical disk, a rewritable magnetic tape, or some combination of the above. The media used by persistent storage208also may be removable such as, but not limited to, a removable hard drive.

Communications unit210provides for communications with other data processing systems or devices. In these examples, communications unit210is a network interface card. Modems, cable modem and Ethernet cards are just a few of the currently available types of network interface adapters. Communications unit210may provide communications through the use of either or both physical and wireless communications links.

Alternatively, program code216may be transferred to data processing system200from computer readable media218through a communications link to communications unit210and/or through a connection to input/output unit212. The communications link and/or the connection may be physical or wireless in the illustrative examples.

The different components illustrated for data processing system200are not meant to provide architectural limitations to the manner in which different embodiments may be implemented. The different illustrative embodiments may be implemented in a data processing system including components in addition to or in place of those illustrated for data processing system200. Other components shown inFIG. 2can be varied from the illustrative examples shown. For example, a storage device in data processing system200is any hardware apparatus that may store data. Memory206, persistent storage208, and computer readable media218are examples of storage devices in a tangible form.

FIG. 3is a diagram illustrating a computing environment in which an embodiment of a system300for dynamic product installation based on user feedback according to the present disclosure may be implemented. In the illustrated embodiment, system300includes a server302and clients304and306. Server302and clients304and306may comprise data processing platforms such as servers140and150and clients110and120, respectively, or may comprise any other type of data processing platform such as system200. In the illustrated embodiment, server302includes a processor unit310and a memory312. In memory312resides an install module320, install feedback data322and install path data324. However, it should be understood that install module320, install feedback data322and install path data324may be stored at different locations. Install feedback data322comprises information collected from clients304and/or306(or users of clients304and/or306) in connection with the installation of a particular product (e.g., a software application, hardware component, some combination thereof, etc.) on clients304and/or306. Install path data324comprises information and/or instructions for modifying an installation path/sequence for a product based on feedback data322.

Install module320is configured to retrieve/receive feedback data and export feedback data (or otherwise make feedback data322available) to subsequent users installing the product. In some embodiments, install module320analyzes feedback data322and automatically modifies an installation path/sequence for subsequent installations of the product based on feedback of users collected based on previous installs of the product. Install module320may be implemented in any suitable manner using known techniques that may be hardware-based, software-based, or some combination of both. For example, install module320may comprise software, logic and/or executable code for performing various functions as described herein (e.g., residing as software and/or an algorithm running on a processor unit, hardware logic residing in a processor or other type of logic chip, centralized in a single integrated circuit or distributed among different chips in a data processing system).

In the illustrated embodiment, clients304and306are communicatively coupled to server302via a network330(e.g., such as network130). Clients304and306include respective processor units340and342and memories344and346. Respective memories344and346include an instance of a product350(e.g., product3501on client304and product3502on client306). Each product350includes an install module352(e.g., install module3521on client304and install module3522on client306). Install module352may be implemented in any suitable manner using known techniques that may be hardware-based, software-based, or some combination of both. For example, install module352may comprise software, logic and/or executable code for performing various functions as described herein (e.g., residing as software and/or an algorithm running on a processor unit, hardware logic residing in a processor or other type of logic chip, centralized in a single integrated circuit or distributed among different chips in a data processing system).

Install module352is configured to facilitate installation of product350on a respective client304/306. For example, install module352may comprise code and/or files that are processed/extracted to facilitate the installation of product on a respective client304/306. Install module352may present an interface to the user to display/collect information and/or guide the user through the installation process for product350such as, but not limited to, accepting license terms, selecting a “typical” or “custom” installation for product350, selecting a directory for various product350-related files/components, etc. According to the present disclosure, install module352is configured to display feedback prompts (e.g., in the form of queries, “like” and “dislike” input icons, open-ended requests for information, etc.) at various stages/points during installation of product350and collect responses or feedback to such prompts (e.g., register clicks of feedback prompts, collect and store rich-text field inputs, etc.). In the illustrated embodiment, the collected feedback is depicted as current install feedback data360(e.g., current install feedback data3601on client304and current install feedback data3602on client306). Thus, while a user is installing product3501on client304, the user is queried for installation feedback. The queries may be related to the installation environment, whether certain steps in the installation process were clear to and/or understood by the user, whether the user liked/disliked certain installation steps or the order/sequence of installation, whether the user encountered problems/difficulties with particular steps of the installation process, etc. In some embodiments, install module352is configured to collect the feedback data360and transmit/communicate feedback data360to server302(e.g., stored in server302as install feedback data322). In some embodiments, the feedback data360is communicated to server302in real time or near real time; however, it should be understood that install module352may also be configured to collect all and/or portions of feedback data360and transmit all or portions of feedback data360to server302as a batch of information (e.g., a single transfer or a series of transfers taking place at various stages of the installation process). Install module352may also be configured to save the collected feedback data360as metadata to the product350.

The feedback data360is then made available for subsequent installs of product350(e.g., by the same or other users). For example, in some embodiments, install module352is instrumented with code that, during the installation process of product350, displays feedback information collected from previous installations of product350. For example, in the illustrated embodiment, memories344and346also comprise previous install feedback data370(e.g., previous install feedback data3701on client304and previous install feedback data3702on client306). In some embodiments, during the installation process of product350, install module352communicates with server302and retrieves/obtains install feedback data322(e.g., comprising feedback resulting from previous installs of product350) and displays the previous install feedback information (i.e., previous install feedback data371) to the user. Thus, during the installation process, the user may view comments/feedback from other users that have previously performed the installation process for product352.

As an example, consider that a user of client304installs product3501on client304. During the installation process, install module3521may display feedback data3711corresponding to previous installs of product350(e.g., installs performed by other users on other machines/systems) by retrieving the feedback data3711from server302(e.g., feedback data322). In some embodiments, server302may be associated with a social networking website where other users may have directly uploaded/posted feedback or comments on their installation of the product350(e.g., instead of the feedback data360being collected by install module352). For example, in some embodiments, install feedback data322may reside on at least two different server systems (e.g., one server system may use feedback data to modify a default installation path where the other server may comprise a social networking site where other users have posted their feedback). Thus, feedback data322may reflect feedback from a number of different users that have previously installed instances of product350on their respective machines/clients. Additionally, a user of client304may input current install feedback3601while installing product3501and the user's feedback information will be uploaded to server302(e.g., stored as install feedback data322) such the client304user's feedback will be available for subsequent users/installers to see/view (e.g., a user of client306if installing product3502subsequent to the user of client304).

In some embodiments, install feedback data322is analyzed by install module320to vary and/or modify a “typical” or “standard” installation path for product350. For example, in some embodiments, install module352may invoke certain feedback prompts/requests in response to a “custom” installation being selected by a user. The “custom” installation may include providing the user/installer with various options for the installation and/or otherwise enabling the user to customize the installation of product350(e.g., installing only select modules/components, selecting certain directories for files/components, selecting various installation/operating parameters, etc.). During the custom installation process (e.g., at various steps/stages or the conclusion of various steps/stages of the installation path), install module352may request/prompt the user to input feedback data360reflecting whether various features, options and/or steps of the installation process were as expected, successful, liked, disliked, etc. Feedback data360is delivered to server302for analysis by install module320. For example, in some embodiments, and the end or processing or conclusion of the installation process, install module352may tally those processing steps that were liked and/or disliked and communicate the tallied information to server302. Install module320may be configured to assess the received feedback information (e.g., install feedback data322) to determine whether modifications to a “typical” or “standard” installation path (e.g., a non-customized path) should be made. For example, install module320may assess over time which installation steps where most liked and/or most disliked and modify the typical installation path for product350to include those steps that were liked the most and/or exclude those steps that were disliked the most. The modification information for the installation path for product350may be stored as install path data324.

In some embodiments, in response to install module352preparing to initiate an installation process for product350, install module352may interface with server302and download install path data324for any modifications to the installation path/sequence (e.g., code changing the installation path for a typical installation), thereby providing a dynamic modification to the typical installation path for product350based on user feedback on previous custom installations of product350. Thus, install module320may inspect the installation paths taken by previous users/installers for product350and determine a most favored/liked installation path for the product to create and/or modify a default installation path for product350.

FIG. 4is a flow diagram illustrating an embodiment of a method for dynamic product installation based on user feedback according to the present disclosure. The method begins at block402, where install module352initiates an installation process for product350. At block404, install module352interfaces with server system302to obtain install path data324indicating a default installation path for the product350based on feedback obtained from other product350installs occurring previously. At block406, install module352modifies a default installation path for the product350based on install path data324. At block408, install module352interfaces with server system302to obtain previous install feedback data322/370for the product350.

At block410, install module352displays previous install feedback data370at respective/various stages of the installation process of the product350, thereby enabling the installing user to view feedback/comments provided by other users that have previously installed instances of the product350. At block412, install module352displays feedback prompts at various stages of the installation process requesting user feedback (e.g., current install feedback data360). At block414, install module352receives current install feedback data360from the user. At block416, install module352uploads current install feedback data360to the server system302, which may then be used by install module320to determine whether to modify future default installation paths for the product and/or combine the current installing user's feedback with other previously obtained feedback for display to other subsequent installers of the product350.

Thus, embodiments of the present disclosure provide a technique to utilize user feedback corresponding to an install of a product to assist and/or modify future installations of the product. The feedback of previous users/installers may be retrieved in real time upon initiating an install of the product such that the installing user may view the comments/feedback of previous installers while currently installing the product (e.g., displayed to the user at different corresponding stages of the installation process/sequence). Further in some embodiments, the feedback of previous users/installs may be used to modify a default installation path for the product. For example, in some embodiments, feedback received from previous users/installs may indicate that certain installation steps are favored or disfavored. An install module may evaluate/analyze the user feedback and automatically determine whether certain steps of a default installation path for the product should be modified.