Customizing product announcements based on product usage

A computer-implemented method includes tracking usage history of a plurality of components of one or more products. An original set of announcements about the one or more products is received, where the original set of announcements includes a plurality of announcement records. The plurality of announcement records are prioritized based on the usage history of the plurality of components. A usage-based set of announcements is generated based on the prioritization of the plurality of announcement records.

BACKGROUND

The present invention relates to product maintenance and, more specifically, to customizing product announcements based on product usage.

Information technology (IT) vendors provide regular product announcements about upcoming product changes. For instance, announcements may indicate that existing features are changing, being deleted, or being replaced. In some cases, new features are added, or critical features are deprecated. Product announcements are designed to keep users apprised of changes, such that users can continue using their products without interruption, and to enable users to prepare for upcoming changes that impact their products.

SUMMARY

Embodiments of the present invention are directed to a computer-implemented method for customizing product announcements. A non-limiting example of the computer-implemented method includes tracking usage history of a plurality of components of one or more products. An original set of announcements about the one or more products is received, where the original set of announcements includes a plurality of announcement records. The plurality of announcement records are prioritized based on the usage history of the plurality of components. A usage-based set of announcements is generated based on the prioritization of the plurality of announcement records.

Embodiments of the present invention are directed to a system for customizing product announcements. A non-limiting example of the system includes a memory having computer-readable instructions and one or more processors for executing the computer-readable instructions. The computer-readable instructions include tracking usage history of a plurality of components of one or more products. Further according to the computer-readable instructions, an original set of announcements about the one or more products is received, where the original set of announcements includes a plurality of announcement records. The plurality of announcement records are prioritized based on the usage history of the plurality of components. A usage-based set of announcements is generated based on the prioritization of the plurality of announcement records.

Embodiments of the invention are directed to a computer-program product for customizing product announcements, the computer-program product including a computer-readable storage medium having program instructions embodied therewith. The program instructions are executable by a processor to cause the processor to perform a method. A non-limiting example of the method includes tracking usage history of a plurality of components of one or more products. Further according to the method, an original set of announcements about the one or more products is received, where the original set of announcements includes a plurality of announcement records. The plurality of announcement records are prioritized based on the usage history of the plurality of components. A usage-based set of announcements is generated based on the prioritization of the plurality of announcement records.

In the accompanying figures and following detailed description of the disclosed embodiments, the various elements illustrated in the figures are provided with two- or three-digit reference numbers. With minor exceptions, the leftmost digit(s) of each reference number correspond to the figure in which its element is first illustrated.

DETAILED DESCRIPTION

Turning now to an overview of technologies that are more specifically relevant to aspects of the invention, the volume of information in product announcements is often too large for human consumption. While this problem is not readily obvious with respect to consumer products, such as mobile phones and notebook computers, the problem is significant for business or enterprise products, such as International Business Machines® z/OS®. An individual product with numerous components (e.g., sub-products, functions, and sub-functions) can have a significant volume of announcements. Further, a system can include multiple products with numerous components, which can lead to an overwhelming volume of product announcements. Most of the information in the product announcements, however, will not be relevant to the specific usage of a user because product announcements are not tailored. Critical announcements may be missed during manual consumption of the information in the product announcements. As a result, there may be a loss in functionality when a component on which an organization depends experiences a change. This can lead to expenses in both time and money.

Turning now to an overview of the aspects of the invention, one or more embodiments of the invention address the above-described shortcomings of the prior art by providing a mechanism to assist users in digesting product announcements. More specifically, embodiments of the invention build a database based on a local registry. The local registry describes which components of one or more products are used and when they were last used. Based on this information, a product announcement vehicle may filter and prioritize available product announcements before presenting a resulting customized version of the product announcements.

The above-described aspects of the invention address the shortcomings of the prior art by providing an improved system of providing product announcements. Embodiments of the invention allow a user to focus on product announcements, including upgrades, that are most relevant to that user's specific usage. As a result, users are less likely to miss critical updates and other announcements related to components that are actually being used, and thus, products are more likely to be kept up to date.

Turning now to a more detailed description of aspects of the present invention,FIG. 1is a diagram of a customization system100for customizing product announcements based on product usage, according to some embodiments of this invention. As shown inFIG. 1, an announcement vehicle110may run on or may be otherwise associated with a computer system120, which may maintain a database130describing tracked components140of products150that have been used on the computer system120. The computer system120may include one or more computing devices, which may be co-located or may be distributed. For example, and not by way of limitation, the announcement vehicle110may be a piece of software installed on the computing device120and in communication with a server160of a vendor. Alternatively, however, the announcement vehicle110may be firmware, a specialized hardware circuit, or may be a combination of hardware, software, and firmware. The server160may be in communication with one or numerous announcement vehicles110, each of which may be associated with a respective computer system120. Through the announcement vehicle110, the server160may communicate product announcements, also referred to herein as announcements, to the computer system120.

The computer system120may include one or more products150in use on the computer system120. Each product150may be hardware, software, or a combination of both. Further, each product150may be, but need not be, divided into components140, which may include sub-products155, functions, and sub-functions, for instance. The definition of a component140within a product150may be product-specific. For example, and not by way of limitation, a product150may be divided into sub-products155or into even finer levels based on functionality, based on physical division, or based on categorization. For example, and not by way of limitation, a product150to which the customization system100may apply is IBM z/OS. Thus product150may be divided into sub-products, such as a kernel, one or more databases, middleware, and a networking function. The networking function sub-product155may be divided into a set of functions, such as Transmission Control Protocol/Internet Protocol (TCP/IP), which may be divided into a set of sub-functions, such as IPv4 and IPv6. In this disclosure, each division of a product150, such as a sub-product155, a function, or a subfunction, is referred to as a component140.

In some embodiments of the invention, the customization system100tracks the usage of at least one product150on the computer system120, thus enabling the product announcements associated with that product150to be customized as described herein. Generally, in some embodiments of the invention, the customization system100tracks all components140of such a product150, also referred to as a participating product150, but alternatively, the customization system100may track only selected components140. The components140whose usages are tracked to enable customization of product announcements are referred to herein as tracked components140.

In some embodiments of the invention, each time a component140is used on the computer system120, the use of that component140is written to a registry170on the computer system120. For instance, an operating system of the computer system120may detect the use of the component140and, based on that detection, may update the registry170with a record that indicates the most recent usage. Each such record may include a component identifier of the component140and may include a time of the usage, including the date. Depending on the product150, the number of components140registering with the registry170may be one or numerous. For instance, in the case of a product150that is an operating system, hundreds of components140of that operating system may register with the registry170upon their use. Further, if there are multiple instances of a product150on the computer system120, then each such instance may have its own set of components140that register with the registry170upon use.

Based on the registry the customization system100may automatically generate a database130, which includes a subset of information in the registry170. For example, and not by way of limitation, the announcement vehicle110may keep the database130updated, or a registry tool incorporated into the customization system100may do so. The database130may include, for each tracked component140, an indication of the usage of that component140. For example, the database130includes at least an indication of the most recent usage of the component140as well as an indication of the frequency of use of the component140. For instance, the database130may indicate all uses within a certain timeframe or that meet certain other criteria.

It will be understood that a product150may include hundreds or thousands of components140, and a customer may utilize many customized instances of each such product150as well as other products150on a computer system120. In other words, while a first instance of a product150may have one set of components140in use, a second instance of the same product150may have another set of components140in use, where those sets may or may not overlap. For example, and not by way of limitation, a first component140may be in use in hundreds of instances of the product150, which a second component140may be in use in only fifty instances. Some of these instances may be more critical to a customer's business than others, and in some embodiments of the invention, the database130may maintain indications of importance of instances as well. The database130may thus maintain information describing each component140and each instance of the various products150being tracked. Thus, thousands of components140may register with the registry170, and thousands of components140may thus be represented in the database130to indicate how each instance of each tracked component140is being used.

As described herein, the database130is utilized to customize product announcements, but the database130may have additional or alternative uses. In some embodiments of the invention, for instance, information in the database130is transmitted to one or more servers160associated with one or more vendors, thus providing the vendors with information about product usage. The vendors can use this information to improve products150, improve the marketing of products, or provide new products150.

In some embodiments of the invention, the announcement vehicle110receives announcements from a server160associated with a vendor. Although this disclosure provides examples with a single server160and a single vendor, it will be understood that the announcement vehicle110may receive announcements from multiple servers160, which may be associated with one or more vendors. The announcement vehicle110may analyze the announcements received in view of information in the database130and, as described in detail below, may generate a usage-based set of announcements. In some embodiments of the invention, an announcement may initiate an action, such as by including a link that causes the action such as an upgrade or an uninstall. As such, by generating the usage-based set of announcements, the announcement vehicle110may enable a user to view relevant announcements as well as to act on those announcements in some cases.

FIG. 2is a flow diagram of a method200of customizing product announcements based on product usage, according to some embodiments of this invention. It will be understood that this method200is an example and does not limit the scope of embodiments of the invention. As shown inFIG. 2, at block201, during normal usage of the computer system120, tracked components140of a product150are used, and this use is recorded in the registry170.

At block202, the database130is updated based on the registry170, to indicate usage of tracked components140. Updating the database130may occur from time to time, based on various criteria. For instance, the customization system100may monitor the registry170and may automatically update the database130upon receiving an indication that a new usage of a tracked component140has occurred. For another example, the customization system100may periodically update the database130at intervals, to indicate uses of the tracked components140that have occurred since the last update.

In some embodiments of the invention, the activities of updating the registry170based on usage and updating the database130based on the registry are ongoing. InFIG. 2, this is shown by the arrow that extends from block202back to block201.

At block203, a set of announcements is received at the announcement vehicle110. The set of announcements may include a plurality of individual announcements, or announcement records. This received set of announcements may have been issued by a vendor and transmitted from a server160associated with the vendor. In some embodiments of the invention, the announcement vehicle110includes an artificially intelligent tool that analyzes the received set of announcements in view of information stored in the database130to generate a usage-based set of announcements that is based on the received set of announcements. The usage-based set of announcements may be a summary, or reduced version, of the received set of announcements in a form that is customized based on product usage.

At block204, the announcement vehicle110may assign to each announcement record, in the received set of announcements, at least one component identifier. The assigned component identifier may identify a component140to which the announcement relates. Each component140may already have one or more identifiers, which may have been established by the developer, such as a name or other string. It is likely the case that a component identifier appears in an announcement that relates to the associated component140. Thus, to assign a component identifier to an announcement, the announcement vehicle110may search for a component identifier in the announcement itself and may assign to the announcement a component identifier that is found. If an announcement is associated with metadata, that metadata may identify a related component140, and in that case, the announcement vehicle110may extract component identifiers from the metadata.

At block205, the announcement vehicle110may assign to each announcement record an action code or action identifier. The action code may be based on the activity that is occurring with respect to the component140at issue in the announcement. For example, and not by way of limitation, there may be a distinct action code for each of the following actions that may be described in announcements: add or create a new component140, enhance a component140, reduce functionality of a component140, alter a component140, or delete a component140. In the case of adding a new component140, the component identifier assigned to the announcement, as described above, may be the identifier of the component140deemed most closely related to the new component140being added. Various techniques can be used to determine which action code to assign to an announcement. For example, and not by way of limitation, the announcement vehicle may have access to a set of keywords, where each keyword maps to a specific action code. For instance, the keyword “deprecate” may map to the action code for “delete.” Upon identifying one or more keywords in the announcement, the announcement vehicle may select the action code that corresponds to (i.e., is mapped to) more of the keywords than any other action code. For another example, natural language processing may be applied to the announcement to determine which action code is most appropriate. For yet another example, if an announcement is associated with metadata, then an action code may be indicated in the metadata, and in that case, the announcement vehicle110may extract the action code and assign it as needed.

At block206, the announcement vehicle110determines which announcement records relate to components140that are in use. Whether a component140is in use can be defined in various ways. For example, and not by way of limitation, a component140may be deemed in use if it has been used at least once within a preestablished period of time, such as one year; a component140may be deemed in use if it has been used at least a preestablished number of times within a preestablished period of time, such as at least five times in the past year; or a component140may be deemed in use if it has been used at least once within a first preestablished period of time or at least a preestablished number of times within a second preestablished period of time, such as at least once within the past three months or at least three times within the past year.

Given a definition of “in use,” the announcement vehicle110may determine which components140are in use based on the database130. As discussed above, a component record in the database130may include information about the usage history of the associated component140. More specifically, the usage history maintained may be appropriate information to determine whether the associated component140is in use. For instance, if the definition of use is based on frequency within the past year, then the database130may maintain, for each tracked component140, an indication of use frequency within the past year. Thus, the announcement vehicle110may determine which components140are in use based on the database130. More specifically, the announcement vehicle may compare the component identifier of each announcement record to the component records in the database130to determine which announcements relate to components140that are in use. As such, the announcement vehicle110may divide the announcement records into two sets: a first set that relates to components140in use, and a second set that relates to components140that are not in use.

At block207, the announcement vehicle determines an importance of each component140that is in use and referenced in the announcements. In some embodiments of the invention, the importance is simply the time since last use, or the importance of a component140is otherwise based on how recently that component140was used. For another example, however, importance may be based on a combination of one or more of the following: last use, use frequency, and number of instances in use. In some embodiments of the invention, importance is given in the form of a usage score, which may be calculated according to a scoring algorithm. For example, and not by way of limitation, the usage score of a component140may be a weighted combination of minutes since last usage, number of uses within the last six months, and number of instances in use. It will be understood, however, that various scoring algorithms may be used.

In some embodiments of the invention, given the definition of importance being used, the database130maintains appropriate information about each tracked component140to enable importance to be calculated. For instance, if importance is based on a combination of most recent use and use frequency within the last year, then both of these values may be maintained in the database130. Thus, based on information in the database130, the announcement vehicle110may determine an importance of each component140in use and reference in the announcements.

At block208, the announcement vehicle110determines an importance of each announcement record related to a component140that is in use. It will be understood that various mechanisms may be used to determine the importance of announcement records. For example, and not by way of limitation, an action score may represent importance, and actions scores may be based on action codes. As such, an action code that suggests a level of urgency (e.g., deleting a component140) may be given higher importance that an action code that has lesser urgency (e.g., adding a new component140). Thus, having assigned an action code to each announcement record, the announcement vehicle110may map that action code to a respective importance, or action score, of the announcement record.

At block209, the announcement vehicle110ranks, or sorts, the announcement records that relate to in-use components140. This ranking may be based on a combination of the importance of the in-use components140and the importance of the announcement records themselves. In other words, for instance, the ranking may be based on the usage scores of the in-use components140combined with the action scores of the announcement records themselves. For example, an announcement record with high importance (e.g., with an action code that suggests urgency) that relates to a component140with high importance (e.g., a frequently used component140) may be ranked highly, while an announcement record with low importance (e.g., with an action code that suggests no urgency) that relates to a component140with low importance (e.g., a component that was used once, long ago) may be ranked substantially lower. In some embodiments of the invention, the importance of components140and announcement records are respectively represented by usage scores and action scores, and a final ranking score of an announcement record is a weighted average of the action score of the announcement record itself and the usage score of the component140to which it relates. Thus, having established the various importance levels, the announcement vehicle110may determine a ranking score for each announcement record. This scoring may implicitly result in a ranking according to these ranking scores. In some embodiments of the invention, the ranking of announcement records represents a prioritization that is customized to the user's actual usage of the components140referenced in the announcements.

At block210, the announcement vehicle110generates a usage-based set of announcements based, at least in part, on the received set of announcements and on the scores or rankings established above. For instance, in some embodiments of the invention, the announcement records that relate to in-use components140may be sorted according to their respective ranking scores. In some embodiments of the invention, the usage-based set of announcements includes a flag or other indication of which components140referenced in the announcement records relate to which instances of the product150. For example, and not by way of limitation, each instance may have an instance identifier, such as an integer or a string. The identifier of an instance may appear in the usage-based announcements in association with each announcement record related to a component140in use in that instance. Further, if the user has previously indicated a level of importance of each instance, then an announcement record related to a component140in use in an instance with at least a threshold level of importance may be flagged or otherwise emphasized to indicate a relationship to an important instance of the product150.

After all of the announcement records relating to in-use components140, the remaining announcement records may follow. If included, these other announcement records need not be sorted. Alternatively, the announcement records relating only to components140that are not in use may be excluded from the usage-based set of announcements. However, if the announcements records relating only to components140not in use are excluded, then the usage-based set of announcements may include a link to a location where the remaining announcements can be viewed. It will be understood that various techniques, or combinations of techniques, may be used to generate the user-based set of announcements based on the activities described above.

In some embodiments of the invention, the announcement records of components140in use are grouped according to action code. For instance, this can be the case if the announcement vehicle110sorts, at a first level, based on action score and then, at a second level, based on usage score. In this case, announcement records with critical action codes (e.g., delete) appear first, and announcement records with less critical action codes (e.g., add) appear later or last. Within these groups defined by action code, the announcement records may be further sorted based on usage score. For example, and not by way of limitation, this dual-level sorting may be achieved based on using ranking scores as described above, where the weighting of action scores within the ranking score is a degree of magnitude larger than the weighting of usage scores. Alternatively, however, this grouping can be achieved without the use of ranking scores, such as by sorting according to two levels as described above.

In some embodiments of the invention, the announcement vehicle110groups announcement records that relate to a common component140. For instance, if a first announcement record is ranked higher than a second announcement record related to the same component140, then the second announcement record may be placed just after the first announcement record, potentially coming before announcement records that are ranked higher than it. In this manner, the user can expect to find announcements for a single component140collected together for convenience.

In some embodiments of the invention, the usage-based set of announcements includes one or more scores or importance explanations associated with each announcement record. This can be useful, for example, if the customer is not aware of which components140are in use and how frequently they are in use. For instance, along with each announcement record, the announcement vehicle110may display an indication of the usage score and an indication of the action score. These need not be displayed as numerical values but instead, for example, may be displayed as an explanatory phrase or may be represented as color-coding. For instance, the usage scores and action scores may each be divided into one or more ranges, where each range maps to a respective explanatory phrase or color. For example, the highest range of usage scores may be associated with a phrase such as “highest usage,” and announcement records related to components140with usage scores in this range may include this phrase or may be color-coded according to the respective range. Thus, a user may be conveniently notified of why each announcement record is important to the user's organization.

Further, in some embodiments of the invention, the usage-based set of announcements may be provided in the form of simply a summary or table, which includes one or more of the following: the component identifier of the related component140, an identifier of a computing device utilizing the related component140, the action code, an indication of usage score, and an indication of action score. This can enable the user to quickly determine the relevance of each announcement record. Further, the usage-based set of announcements may include embedded links, enabling the user to select a link and thereby cause the display of a full announcement associated with the link selected.

Thus, as described in detail above, embodiments of the customization system100prioritize announcements about changes that apply to the specific customer's current usage model. Announcements related to components140not in use may be positioned after those related to components140in use, thus enabling the user to focus on functionality that has relevance to the user's operations.

FIG. 3is a block diagram of a computer system120for implementing some or all aspects of the customization system100, according to some embodiments of this invention. The customization systems100and methods described herein may be implemented in hardware, software (e.g., firmware), or a combination thereof. In some embodiments, the methods described may be implemented, at least in part, in hardware and may be part of the microprocessor of a special or general-purpose computer system120, such as a personal computer, workstation, minicomputer, or mainframe computer.

In some embodiments, as shown inFIG. 3, the computer system120includes a processor305, memory310coupled to a memory controller315, and one or more input devices345and/or output devices340, such as peripherals, that are communicatively coupled via a local I/O controller335. These devices340and345may include, for example, a printer, a scanner, a microphone, and the like. Input devices such as a conventional keyboard350and mouse355may be coupled to the I/O controller335. The I/O controller335may be, for example, one or more buses or other wired or wireless connections, as are known in the art. The I/O controller335may have additional elements, which are omitted for simplicity, such as controllers, buffers (caches), drivers, repeaters, and receivers, to enable communications.

The processor305is a hardware device for executing hardware instructions or software, particularly those stored in memory310. The processor305may be a custom made or commercially available processor, a central processing unit (CPU), an auxiliary processor among several processors associated with the computer system120, a semiconductor-based microprocessor (in the form of a microchip or chip set), a macroprocessor, or other device for executing instructions. The processor305includes a cache370, which may include, but is not limited to, an instruction cache to speed up executable instruction fetch, a data cache to speed up data fetch and store, and a translation lookaside buffer (TLB) used to speed up virtual-to-physical address translation for both executable instructions and data. The cache370may be organized as a hierarchy of more cache levels (L1, L2, etc.).

The memory310may include one or combinations of volatile memory elements (e.g., random access memory, RAM, such as DRAM, SRAM, SDRAM, etc.) and nonvolatile memory elements (e.g., ROM, erasable programmable read only memory (EPROM), electronically erasable programmable read only memory (EEPROM), programmable read only memory (PROM), tape, compact disc read only memory (CD-ROM), disk, diskette, cartridge, cassette or the like, etc.). Moreover, the memory310may incorporate electronic, magnetic, optical, or other types of storage media. Note that the memory310may have a distributed architecture, where various components are situated remote from one another but may be accessed by the processor305.

The instructions in memory310may include one or more separate programs, each of which comprises an ordered listing of executable instructions for implementing logical functions. In the example ofFIG. 3, the instructions in the memory310include a suitable operating system (OS)311. The operating system311essentially may control the execution of other computer programs and provides scheduling, input-output control, file and data management, memory management, and communication control and related services.

Additional data, including, for example, instructions for the processor305or other retrievable information, may be stored in storage320, which may be a storage device such as a hard disk drive or solid-state drive. The stored instructions in memory310or in storage320may include those enabling the processor to execute one or more aspects of the customization systems100and methods of this disclosure.

The computer system120may further include a display controller325coupled to a display330. In some embodiments, the computer system120may further include a network interface360for coupling to a network365. The network365may be an IP-based network for communication between the computer system120and an external server, client and the like via a broadband connection. The network365transmits and receives data between the computer system120and external systems. In some embodiments, the network365may be a managed IP network administered by a service provider. The network365may be implemented in a wireless fashion, e.g., using wireless protocols and technologies, such as WiFi, WiMax, etc. The network365may also be a packet-switched network such as a local area network, wide area network, metropolitan area network, the Internet, or other similar type of network environment. The network365may be a fixed wireless network, a wireless local area network (LAN), a wireless wide area network (WAN) a personal area network (PAN), a virtual private network (VPN), intranet or other suitable network system and may include equipment for receiving and transmitting signals.

Customization systems100and methods according to this disclosure may be embodied, in whole or in part, in computer program products or in computer systems120, such as that illustrated inFIG. 3.