System and method for software feature management
Summary by NHIP
Software Feature Management System
The method installs a full featured framework containing configurable features with properties defining enabled, disabled, or hidden states. It connects to a feature server to retrieve property sets based on a unique identity and configures features post-installation, transmitting user-initiated changes generated within a graphical user interface.
Claim Score by NHIP
Abstract
A method includes providing a computer readable code configured to perform a process of feature management. The computer code includes one or more configurable features having a feature property. The feature property includes a state. The method also includes: running the computer readable code on the local computer; connecting by the local computer with a feature computer server; identifying an instance of an installed computer program including the computer readable code, and retrieving a feature record associated with the installed computer program or the member from the feature server; and configuring a state of one or more of a set of the feature properties of the installed computer program based on a retrieved feature record. A system to perform the method is also described.

Term
6.5 yearsleft in the term
Expires 14 March 2033.
- Priority and filed
- Granted
- Today
- Expires
23 claims: 3 independent, 20 dependent
- 1Broadest claimClaim Score 28, narrow(NHIP)A method comprising:installing to a computer readable non-transitory storage medium a full featured framework of a computer program having a plurality of features, a predetermined subset of the plurality of features being associated with feature properties that define whether a feature within the plurality of features is at least one of an enabled state, a disabled state, or a hidden state;executing the full featured framework of the computer program upon a computer coupled to the computer readable non-transitory storage medium wherein the computer program connects via a network to a feature server;identifying upon the feature server a unique identity associated with the installed full featured framework of the computer program;retrieving from the feature server a set of feature properties associated with the unique identity;configuring the predetermined subset of the plurality of features of the already installed full featured framework of the computer program post-installation in dependence upon only the retrieved set of feature properties and the already installed full featured framework of the computer program;and transmitting to the feature server a change with respect to enabling a feature property in response to a user initiated request to enable the feature property and an associated enabling of a feature within the plurality of features controlled by the feature property, wherein the user initiated request is generated in response to an action of the user within a graphical user interface displayed to the user during their normal use of the full featured framework of the computer program which displays at least a subset of the currently enabled features of the full featured framework of the computer program.
- 14A method comprising:providing a feature server storing within a database sets of feature properties, each set of feature properties associated with a unique identity and each feature property having a state, wherein the state is at least one of an enabled state, a disabled state, or a hidden state;receiving from a remote computer executing an installed full featured framework of a computer program a request for a set of feature properties, the request comprising at least a unique identity associated with the installed full featured framework of the computer program;transmitting to the remote computer the set of features associated with the unique identity upon validation of the unique identity, wherein the set of feature properties transmitted to the remote computer configure a predetermined sub-set of the features of the already installed full featured framework of the computer program post-installation, the configuration of each feature within the sub-set of the features being made in dependence upon only the state of a feature property within the set of feature properties associated with that feature and the already installed full featured framework of the computer program;and transmitting to the feature server a change with respect to enabling a feature property in response to a user initiated request to enable the feature property and an associated enabling of a feature within the plurality of features controlled by the feature property, wherein the user initiated request is generated in response to an action of the user within a graphical user interface displayed to the user during their normal use of the full featured framework of the computer program which displays at least a subset of the currently enabled features of the full featured framework of the computer program.
- 22A method comprising:providing on a computer executing an installed full featured framework of a computer program a screen mask that overlays a displayed graphical user interface generated by the computer program, the screen mask configurable post-installation for: allowing user actions with respect to a first predetermined portion of the graphical user interface in dependence upon the states of a set of feature properties relating to features of the full featured framework of the computer program established post-installation of the full featured framework of the computer program, wherein each feature of the features of the full featured framework has a state that is at least one of an enabled state, a disabled state, or a hidden state;and blocking user actions with respect to a second predetermined portion of the graphical user interface in dependence upon the states of the features relating to the set of features of the full featured framework of the computer program established post-installation of the full featured framework of the computer program;receiving from a feature server during execution of the installed full featured framework of the computer program a set of feature properties, the feature server storing within a database sets of feature properties where each set of feature properties associated with a unique identity of at least one of an installation of the full featured framework of the computer program and a computer having the full featured framework of the computer program installed upon it and each feature property having a state;transmitting to a remote computer the set of features associated with the unique identity upon validation of the unique identity, wherein the set of feature properties transmitted to the remote computer configure a predetermined sub-set of the features of the already installed full featured framework of the computer program post-installation, the configuration of each feature within the sub-set of the features being made in dependence upon only the state of a feature property within the set of feature properties associated with that feature and the already installed full featured framework of the computer program;and transmitting to the feature server a change with respect to enabling a feature property in response to a user initiated request to enable the feature property and an associated enabling of a feature within the plurality of features controlled by the feature property, wherein the user initiated request is generated in response to an action of the user within a graphical user interface displayed to the user during their normal use of the full featured framework of the computer program which displays at least a subset of the currently enabled features of the full featured framework of the computer program.
Independent claims3
51 paragraphs in 9 sections, as filed
FIELD OF THE INVENTION
0001The invention relates to feature management and more particularly to the management of features of a computer program.
BACKGROUND OF THE INVENTION
0002Computer programs are often made available about the same time in more than one version. The different versions of a computer program generally vary by the number of features made available to a user of the computer program. The most common way to install a given version of a computer program is to install the entire framework of that version of the computer program. Accordingly, when upgrading an already installed computer program, a successive installation usually replaces the existing computer program framework during the subsequent installation. This user process of upgrading an already installed computer program by replacing the currently installed program framework is inefficient.
0003There is a need for a more efficient system and method to provide a modified or upgraded computer program which offers a different set of features, without needing to replace the underlying framework of an already installed computer program.
SUMMARY OF THE INVENTION
0004According to one aspect, the invention features a method beginning with the step of providing a computer readable non-transitory storage medium including a computer readable code configured to run on a local computer and configured to perform a process of feature management. The computer code includes one or more configurable features having a feature property. The feature property includes a state. The method includes the steps of: running the computer readable code on the local computer; connecting by the local computer with a feature computer server; identifying an instance of an installed computer program including the computer readable code, and retrieving a feature record associated with the installed computer program or the member from the feature server; and configuring the state of one or more of a set of the feature properties of the installed computer program based on a retrieved feature record.
0005In one embodiment, the step of identifying an instance of an installed computer program includes identifying an instance of an installed computer program by an identification string.
0006In another embodiment, the identification string includes a serial number.
0007In yet another embodiment, the identification string includes an identification of the local computer.
0008In yet another embodiment, the identification string includes a user name.
0009In yet another embodiment, the user name identifies a subscription account.
0010In yet another embodiment, the state includes an enabled state or a disabled state.
0011In yet another embodiment, the state further includes a displayed or a hidden state.
0012In yet another embodiment, following the step of configuring a state of one or more of the set of the feature properties, the method further includes the step of displaying at least one of the features with an indication of the state of the feature property of the feature.
0013In yet another embodiment, the step of displaying at least one of the features includes a displayed color or brightness of color.
0014In yet another embodiment, the step of displaying at least one of the features includes a displayed superimposed shaded box.
0015In yet another embodiment, the step of configuring a state of one or more of the set of the feature properties further includes the step of displaying at least one of the features with an indication of a presently unavailable feature.
0016In yet another embodiment, the method further includes an instruction on how to enable the feature.
0017In yet another embodiment, the instruction on how to enable the feature includes an instruction on how to purchase a version of the computer program offering the feature or an instruction on how to purchase a subscription to a version of the computer program offering the feature.
0018According to another aspect, the invention features a system which includes a computer configured to run a computer readable non-transitory storage medium including a computer readable code configured to run on the computer and to perform a process of feature management. The computer readable code is configured to run on the local computer, to connect by the local computer with a feature computer server, to identify an instance of an installed computer program including the computer readable code, and to retrieve a feature record associated with the installed computer program or the member from the feature server, and to configure the state of one or more of a set of the feature properties of the installed computer program based on a retrieved feature record.
0019The foregoing and other objects, aspects, features, and advantages of the invention will become more apparent from the following description and from the claims.
BRIEF DESCRIPTION OF THE DRAWINGS
0020The objects and features of the invention can be better understood with reference to the drawings described below, and the claims. The drawings are not necessarily to scale, emphasis instead generally being placed upon illustrating the principles of the invention. In the drawings, like numerals are used to indicate like parts throughout the various views.
0021<figref idref="DRAWINGS">FIG. 1</figref> shows a block diagram of one exemplary system suitable to perform the processes described herein; and
0022<figref idref="DRAWINGS">FIG. 2</figref> shows a flow chart of one exemplary embodiment of a process to manage the features of a computer program.
DETAILED DESCRIPTION
0023As described hereinabove, during an installation of a different version of the same program (e.g. a version offering a premium feature set), a computer program is typically re-installed as a new computer program framework which completely replaces the installed computer program framework. Such a complete replacement of the framework is inefficient. The framework replacement approach means delivery of a relatively large amount of computer code, either by download, as over the Internet, or by an actual transfer of physical media such as by a distribution CD or DVD.
0024An alternative computer distribution model installs a full featured framework of the computer program. Many of the features of the computer program can have associated with the features a “feature property”. The feature property can have states such as, for example, an enabled state, a hidden state, or a disabled state (i.e. non-enabled). There can also be a displayed state, or a displayed state with an indication. Features can be displayed, for example, with an indication of the current state of one or more configurable features. Such displays can include an indication of feature availability, feature non-availability, or an offer for purchase of a currently non-enabled feature. The indication can be a graphical on-screen indication, such as, for example, a different color font of the text of a displayed feature name, and/or a shaded background for foreground brightness level or color, displayed color, brightness of color, a displayed superimposed shaded box, etc. associated with a feature selection having feature property currently set to a certain feature property state. While the feature property can be similar in nature to other properties of the computer program, such as, for example, properties of objects, the feature property by design, cannot typically be accessed by a user of the computer program, nor can its state typically be set or changed by the user of the installed computer program. The states of one or more of the property features can be pre-set for a distribution copy of the computer program, such as a user might purchase in the form of a DVD or by online download of computer program installation file.
0025The states of one or more of the property features can be changed by the computer server, such as, for example, a feature computer server on the Internet. Following installation of the computer program, the computer program can connect to the “feature server” to determine what features are available to a user of any particular installation of the computer program. The computer program can connect one or more times to the feature server. The feature server can identify by any suitable means which particular installation of a computer program is connecting to the server. The computer program can then retrieve a corresponding record for that installed computer program to configure one or more configurable features of the computer program as per the feature property state information contained within the downloaded or otherwise accessed property feature record. For example, an automated request (transparent to the user) for the current states of a set of property features for a particular installed computer program can be accompanied, for example, by a serial number associated with that particular installed computer program, a computer identification of the computer on which the computer program is installed, or a user name based on a user logon to the installed program. For any given query, the feature server can return information which then configures the states of property features of a set or subset of configurable property features. The installed computer framework is thus remotely feature configurable by the feature server and the underlying program framework no longer needs to be replaced to change the availability of one or more of the configurable features of the computer program.
0026<figref idref="DRAWINGS">FIG. 1</figref> shows a block diagram of one exemplary computer system suitable for performing the processes described herein. A computer, typically a local computer <b>101</b> (e.g. a client computer) is connected via any suitable data connection <b>103</b> (e.g. Cable modem, WiFi, WiMAX, FioS, DSL, local or wide area Ethernet network connections, etc.) typically via an Internet connection, to any suitable cloud <b>102</b> (typically the Internet). A computer server configured as a feature server <b>105</b> is also connected to the cloud <b>102</b> via any suitable connection <b>106</b>. The computers, local computer <b>101</b>, and feature server <b>105</b>, need not be of the same type computer.
0027<figref idref="DRAWINGS">FIG. 2</figref> shows a flow chart of one exemplary embodiment of the process. The process for management of features of a computer program includes the steps of: A) Provide a computer readable non-transitory storage medium comprising a computer readable code configured to run on a local computer which is configured to perform a process of feature management; B) Run the computer readable code on a local computer; C) Connect by the local computer to a feature computer server; D) Identify an instance of an installed computer program including the computer readable code, and to retrieve a feature record associated with the installed computer program or the member from the feature server; and E) Configure a state of one or more of a set of feature properties of the installed computer program based on the retrieved feature record. The steps of the exemplary process can be better understood in the examples and detailed description hereinbelow.
EXAMPLE 1
0028A computer software company offers a computer program in a standard and a premium version. A user obtains one distribution version of the computer program (either standard or premium), such as by purchase of downloadable software or by purchasing a distribution disc such as a distribution DVD. Either by information entered during an online purchase, or by initial online registration, a record is created at the feature server for that user's purchase which indicates whether the user purchased a standard or premium version of the computer program. The computer program is then installed on any suitable computer. During program startup (following installation of the computer program) and/or a user logon to the computer program, an automated request (transparent to the user) for the current states of a set of property features is sent to the feature server. The feature server returns information to the computer program which configures the states of property features of a set of property features of the computer program. In example 1, the information returned by the property feature servers configures the features of the installed computer program consistent with the most recent purchase of a standard or premium version of the computer program.
0029One advantage of a computer program having remotely configurable property features is that a software company can change the feature set available at any level of purchase at any time. Continuing with the example of a computer program distributed in both a standard version, and a premium version which offers more features than the standard version, at some later date following the first use of the computer program, either the standard user or the premium user can be offered a different, typically larger, set of available features. In other words, the company can later re-define what features are made available by the different featured versions of a program.
0030Also, in the case of unauthorized distribution of serial numbers as might become known to the software company, features can be turned off, such as, for example, to render known “pirated” installations of the computer program to a limited or severely limited state of use.
0031Subscription Based Features:
0032Another application for a complete framework having all features installed with at least some of the features controlled by a property feature as described herein is a subscription based purchase program. In a subscription based purchase program, a user purchases a level of features, such as by purchase subscription of a standard subscription or a premium subscription. By contrast with the purchase of a feature version as described hereinabove, a subscription purchase typically includes both a feature set (e.g. a version with certain user available features) and a time duration for the availability of those features. In a subscription embodiment, the user feature record or computer ID feature record further includes the authorized time duration for the subscription purchase. In some cases, the purchase model could be combined with a subscription model, where some features of a previously purchased version can be made available on a time limited subscription basis (generally including an ability to re-subscribe as desired). There could also be made available an option to purchase a program version following a subscription period.
EXAMPLE 2
0033A user installs a computer program. The user, without any connection to a feature server, has available the features of the standard version of the computer program. The user then purchases a one year subscription to the premium version of the computer program under a user name. Following the purchase of the subscription, the user starts the computer program. The user enters a user name into a logon field of the computer program at which point, the computer program connects to the feature server and requests (transparent to the user) a current list of the states of property features, wherein, if still within the one year subscription period of time, the feature server returns information to the computer program which then configures the states of property features of the computer program for the premium version of the computer program. Beyond one year from the start date of the one year subscription (if a renewal has not yet been purchased) the feature server returns information to the computer program which configures the states of property features for the standard version of the computer program. There can also be information returned by the feature server that can prompt the user to renew the subscription. Some computer programs installed only for use by subscription can be feature limited or severely feature limited following expiration, without timely renewal, of a subscription program.
0034Offer for Feature Purchase and/or Computer Program Upgrade:
0035Yet another aspect of feature management by feature server is the ability for the computer program to offer presently unavailable features to a user for purchase. Such offers can range from an indication of availability, an offer with additional information (e.g. a “teaser” in advertising parlance), to a full offer for sale with information and user selectable link or clickable link. The offer can be for individual premium features, selected sets of premium features, a premium version of the computer program, or a premium subscription to the computer program. Such offers can be made during normal use of the computer program. In some cases, there can be user settable options where such offers can be optionally displayed or not displayed by choice of the user of the computer program.
0036A drop-down menu of features or a window of feature selections (also called a docker) can list features which are not enabled. In one contemplated embodiment, a user indicating an interest in a non-enabled (disabled) feature, such as by a user “mouse over” or mouse “hover” or any other user attempt to click on or otherwise to select the presently non-enabled feature, can cause the computer program to generate a message or instruction indicating what type of purchase or version upgrade would enable that feature. Further, the message can include a user controlled input option, typically by a clickable link, which can direct the user to a purchase site, such as a purchase website. Following a successful purchase of the feature, or more likely of a program version or program subscription package that includes the desired feature, the user's record is updated at the feature server. The computer program, alerted to a possible purchase by operation of the purchase link, can connect to the feature server to download the latest record. If the user made a successful purchase, the user's updated record will reflect the newly available features and the computer program will then make available to the user the newly purchased feature as an enabled feature. Alternatively or additionally, the next time the computer program is started and/or the next time the user logons to the computer program, newly purchased features can show as available features.
EXAMPLE 4
0037A user “mouse over” of a premium feature not currently available on the user's purchased version of the computer program and/or through their level of user subscription causes a prompt to show on the computer screen. The prompt notifies the user that the feature of the user's interest is available in the premium version of the computer program. A clickable link offers the user a path to purchase a premium subscription to the computer program. The user follows the path and successfully completes the purchase of a premium subscription. Either by detecting the user activity of having followed the purchase path to a successfully completed purchase, and/or by a successive program start and/or user logon to the computer program, the program connects to the feature server and retrieves the updated user's record. The original non-enabled feature of interest is now enabled.
0038There can be a number of ways to show one or more non-enabled features to a user. For example, a non-enabled feature can be displayed in a menu or in a docker in a different color than the enabled features, such as by a grey text font for a non-enabled feature compared with a black font for enabled features. There can also be a translucent box which covers a non-enabled feature. Similarly, premium features can be shown in a different color, such as, for example, a blue text item in a list or in a docker, the blue text denoting premium items compared with a black text for standard features. The brightness or intensity of a colored font could also be modified to indicate an enabled or non-enabled feature. For example, a dimmed brightness or a light shade of the same color could be used to indicate a non-enabled feature, and a “standard” brightness or regular shade of the same color could be used to indicate an enabled feature. In a worst case scenario, such as, for example, for known pirated installations, there could be an opaque box drawn on the screen over one or more features.
0039Interception of Mouse Clicks:
0040Computer programs typically identify a feature selection by cursor control, as is typically accomplished by a mouse controlled (user driven) cursor position followed by a mouse click. In such cases one technique to control the access to features is to generate a screen mask which matches a user displayed screen. For a region of the screen about one or more displayed user selectable features, the display mask, which is typically not visible to a user of the screen, can pass or intercept mouse clicks. Thus if a feature is enabled, a user mouse click operates the feature normally. However, if that feature is presently disabled, the mask can intercept any mouse clicks made in an attempt to select the non-enabled feature. Moreover, as described hereinabove, mouse clicks over a non-enabled feature can optionally cause a prompt to be made to the user offering information on what version includes the desired non-enabled feature and/or how to purchase the non-enabled feature.
0041Features can be defined at build time using “feature groups” which describe the feature state (enabled, disabled, or hidden) for each of the entitlement states (not-started/signed-in, signed-in, and expired).
EXAMPLE
0042These feature groups can then be applied to each feature as follows:
0043<tables id="TABLE-US-00001" num="00001"><table frame="none" colsep="0" rowsep="0" pgwide="1"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="329pt" align="left" /><thead><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry>// Premium Feature Group definition</entry></row><row><entry>premium =</entry></row><row><entry>{</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="84pt" align="left" /><colspec colname="2" colwidth="245pt" align="left" /><tbody valign="top"><row><entry> local_sub</entry><entry>= msf_entry:new{ TrialNotstarted=disabled, TrialNotExpired=disabled,</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="329pt" align="left" /><tbody valign="top"><row><entry>TrialExpired=disabled, Activated=disabled },</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="84pt" align="left" /><colspec colname="2" colwidth="245pt" align="left" /><tbody valign="top"><row><entry> premium_sub</entry><entry>= msf_entry:new{ TrialNotstarted=disabled, TrialNotExpired=enabled,</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="329pt" align="left" /><tbody valign="top"><row><entry>TrialExpired=disabled, Activated=enabled },</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="84pt" align="left" /><colspec colname="2" colwidth="245pt" align="left" /><tbody valign="top"><row><entry> premiumtrial_sub</entry><entry>= msf_entry:new{ TrialNotstarted=disabled, TrialNotExpired=enabled,</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="329pt" align="left" /><tbody valign="top"><row><entry>TrialExpired=disabled, Activated=enabled },</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="84pt" align="left" /><colspec colname="2" colwidth="245pt" align="left" /><tbody valign="top"><row><entry> pure_sub</entry><entry>= msf_entry:new{ TrialNotstarted=disabled, TrialNotExpired=enabled,</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="329pt" align="left" /><tbody valign="top"><row><entry>TrialExpired=disabled, Activated=enabled },</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="84pt" align="left" /><colspec colname="2" colwidth="245pt" align="left" /><tbody valign="top"><row><entry> Subscription</entry><entry>= true</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="329pt" align="left" /><tbody valign="top"><row><entry>}</entry></row><row><entry>// Some feature declarations</entry></row><row><entry>Features::Styles::Previews = { “31a3bbff-5364-1483-47d1-c7a9dea84022”, Subscription = true }</entry></row><row><entry>Features::Color::Styles::ConvertToGrayscale = { “f932ddf7-bb7c-414a-b786-cbd18ad98afc”, Subscription =</entry></row><row><entry>true }</entry></row><row><entry>Features::Color::Styles::AdvancedViewOptions = { “cecdb1b4-22ab-949d-40d2-dd837c0bfac9”, Subscription =</entry></row><row><entry>true }</entry></row><row><entry>// Some feature status definitions</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="161pt" align="left" /><colspec colname="2" colwidth="168pt" align="left" /><tbody valign="top"><row><entry>Features::Styles::Previews.status</entry><entry>= premium</entry></row><row><entry>Features::Color::Styles::ConvertToGrayscale.status</entry><entry>= premium</entry></row><row><entry>Features::Color::Styles::AdvancedViewOptions.status</entry><entry>= premium</entry></row><row><entry namest="1" nameend="2" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0044At the server-side entitlements, a product of a build can be uploaded to the server. At run-time the application might query the feature status explicitly, for example:
0045<tables id="TABLE-US-00002" num="00002"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="offset" colwidth="14pt" align="left" /><colspec colname="1" colwidth="203pt" align="left" /><thead><row><entry /><entry namest="offset" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /><entry>If (FeatureManagment::Features::Color::Styles::ConvertToGrayscale)</entry></row><row><entry /><entry> // do something only allowed when convert to grayscale on.</entry></row><row><entry /><entry namest="offset" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0046Or features can be automatically controlled by the user interface (UI) Framework which supports the enabled, hidden, and disabled (teaser) states automatically by virtue of the feature identifiers matching the UI-Element or control identifiers (e.g. globally unique identifiers (guids) matching the UI-Element or control guids). Suitable guids include those which follow the universally unique identifier (UUID) standard.
0047Now in more detail, in one exemplary embodiment, the base-class of each UI control supported by the UI Framework includes an aspect or part known as an itemOverlay. In some embodiments, the itemOverlay in this case includes a win32 window whose life-time, appearance, and mouse-click handling are manipulated according to the Feature Status of the particular item to: 1) do nothing (enabled); 2) highlight the item (premium or other reason to draw attention); 3) prevent use, or intercept use to put up some information—for example how to purchase (teaser); or 4) hide completely (hidden).
0048It is unimportant what operating system is used. Computer programs having feature properties and process techniques as described herein can be written for use with any suitable computer operating system. The Windows™ operating system available from the Microsoft Corporation of Redmond, Wash. is but one example of a suitable operating system.
0049It is unimportant to the processes described herein what type of local computer (e.g. a client computer) is used by a user. It is also unimportant to the processes described herein what type of computer is used by the feature computer server. Typically, the local computer is physically accessible by a user of the local computer. A computer can include any suitable type of computer having any suitable operating system. It is further contemplated that the inventive techniques as described herein can be practiced on any suitable computer based device having a computer processor or firmware which simulates the functions of a computer processor.
0050In most embodiments, the feature server identifies an instance of the installed computer program. The identification can take place in both non-subscription (e.g. purchased) installations as well as for subscription based accounts. In one embodiment, the step of identifying an instance of an installed computer program includes identifying an instance of an installed computer program by an identification string. The identification string can be any suitable type of identification string and can include numbers, and/or characters, and/or symbols. The identification string can be a serial number, such as a serial number entered by a user following purchase of a computer program. The identification string can also be an identification of a local computer, such as for example a name or number or manufacturer hardware serial number or serial number or any other suitable identification of an installed instance of an operating system. The identification string can be a user name or an identification string which represents a login by a particular user at a local computer. The identification of a particular user can also be used to identify a particular subscription account.
0051While the present invention has been particularly shown and described with reference to the preferred mode as illustrated in the drawing, it will be understood by one skilled in the art that various changes in detail may be affected therein without departing from the spirit and scope of the invention as defined by the claims.
Contents9
4 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US12255773B1 | Cited by | United States of America | Search report |
| US2005027657A1 | Cites | United States of America | Search report |
| US2005055309A1 | Cites | United States of America | Search report |
| US2007150964A1 | Cites | United States of America | Search report |
| US2009089752A1 | Cites | United States of America | Search report |
| US2009260002A1 | Cites | United States of America | Search report |
| US2011145789A1 | Cites | United States of America | Search report |
| US2013067447A1 | Cites | United States of America | Search report |
| US6134593A | Cites | United States of America | Search report |
| US6151643A | Cites | United States of America | Search report |
| US6542943B2 | Cites | United States of America | Search report |
| US7752139B2 | Cites | United States of America | Search report |
| US7921059B2 | Cites | United States of America | Search report |
| US8224750B1 | Cites | United States of America | Search report |
| US20050027657A1 | Cites | United States of America | Search report |
| US20050055309A1 | Cites | United States of America | Search report |
| US20070150964A1 | Cites | United States of America | Search report |
| US20090089752A1 | Cites | United States of America | Search report |
| US20090260002A1 | Cites | United States of America | Search report |
| US20110145789A1 | Cites | United States of America | Search report |
| US20130067447A1 | Cites | United States of America | Search report |
3 members in 1 office
Members3
| Document | Office | Kind | |
|---|---|---|---|
| US2014282474A1 | United States of America | A1 | |
| US9836730B1 | United States of America | B1 | |
| US9928086B2This record | United States of America | B2 |
64 transactions on the USPTO file
Allowed after 2 non-final rejections, 2 final rejections and 2 RCEs.
- Non-final rejections
- 2
- Final rejections
- 2
- RCEs
- 2
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 8th Yr, Small EntityM2552 | M2552 | |
| Payment of Maintenance Fee, 4th Yr, Small EntityM2551 | M2551 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Supplemental Papers - Oath or DeclarationC600 | C600 | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Mail PUBS Notice Requiring Inventors Oath or DeclarationMM327-O | MM327-O | |
| PUBS Notice Requiring Inventors Oath or DeclarationM327-O | M327-O | |
| Mail Pre-Exam NoticeMPEN | MPEN | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Reasons for AllowanceEX.R | EX.R | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Interview Summary - Examiner Initiated - TelephonicEXET | EXET | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Mail-Petition to Revive Application - GrantedMPREV | MPREV | |
| Petition to Revive Application - GrantedPREV | PREV | |
| Petition EnteredPET. | PET. | |
| Applicant Has Filed a Verified Statement of Small Entity Status in Compliance with 37 CFR 1.27SMAL | SMAL | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Mail Abandonment for Failure to Respond to Office ActionAbandonedMABN2 | MABN2 | |
| Aband. for Failure to Respond to O. A.AbandonedABN2 | ABN2 | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application Dispatched from OIPEOIPE | OIPE | |
| FITF set to NO - revise initial settingFTFI | FTFI | |
| Sent to Classification ContractorPGPC | PGPC | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Application Is Now CompleteCOMP | COMP | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
19 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| AssignmentAS | AS | |
| Maintenance fee paymentMAFP | MAFP | |
| Maintenance fee paymentMAFP | MAFP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication
- 09928086
- Application
- 13826836
Titles
- English
- System and method for software feature management
Patent term adjustment
- A delay
- +34 daysthe office missed an examination deadline
- B delay
- +247 dayspendency past three years
- Applicant delay
- −612 days
- Net adjustment
- 0 days
Classification
- CPC, 1
- G06F9/44505
- IPC, 2
- G06F9 44
- G06F9 445