Prosecution Insights
Last updated: October 01, 2026
Application No. 18/353,009

DELTA PATCHING FOR SHARED LIBRARIES

Non-Final OA §103
Filed
Jul 14, 2023
Examiner
BERMAN, STEPHEN DAVID
Art Unit
2192
Tech Center
2100 — Computer Architecture & Software
Assignee
Google LLC
OA Round
1 (Non-Final)
78%
Grant Probability
Favorable
1-2
OA Rounds
0m
Est. Remaining
99%
With Interview

Examiner Intelligence

Grants 78% — above average
78%
Career Allowance Rate
269 granted / 343 resolved
+23.4% vs TC avg
Strong +58% interview lift
Without
With
+58.3%
Interview Lift
resolved cases with interview
Typical timeline
2y 8m
Avg Prosecution
21 currently pending
Career history
374
Total Applications
across all art units

Statute-Specific Performance

§101
13.2%
-26.8% vs TC avg
§103
48.4%
+8.4% vs TC avg
§102
14.3%
-25.7% vs TC avg
§112
17.5%
-22.5% vs TC avg
Black line = Tech Center average estimate • Based on career data from 343 resolved cases

Office Action

§103
DETAILED ACTION The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA . The instant application having application No. 18/353,009 filed on July 14, 2023, presents claims 1-20 for examination. Examiner Notes Examiner cites particular columns, paragraphs, figures and line numbers in the references as applied to the claims below for the convenience of the applicant. Although the specified citations are representative of the teachings in the art and are applied to the specific limitations within the individual claim, other passages and figures may apply as well. It is respectfully requested that, in preparing responses, the applicant fully consider the references in their entirety as potentially teaching all or part of the claimed invention, as well as the context of the passage as taught by the prior art or disclosed by the examiner. Claim Rejections - 35 USC § 103 The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action: A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made. Claims 1, 3, 11, 13, and 20 are rejected under 35 U.S.C. 103 as being unpatentable over Carranza et al. (US 20170177325 A1, hereinafter Carranza) in view of Kumashiro et al. (US 20070294684 A1, hereinafter Kumashiro). With respect to claim 1, Carranza discloses A method comprising: selecting, by one or more processors of a computing device a shared library installed at the computing device, the shared library that precedes a target version of the shared library as a baseline version of the shared library (e.g., Figs. 1-4 and associated text, e.g., [0014], The devices may have various data files … The data files may be include, …support files (e.g., dynamic linked libraries (DLL), shared object (so); [0032], FIG. 2 illustrates the use of a single hash to identify device library listing 202. This may be useful in situations where hundreds of libraries are stored on a device; [0033], The listing may be [Library A version 1.0, Library B version 2.2, . . . ]; [0044], At operation 402, an update request from a computing device may be received … The update request may include a profile of a current set of data [baseline] stored on the computing device. The set of data may include applications, libraries, or resources on the device. The profile of the current set of data may identify a version of software installed on the computing device [selecting, by one or more processors of a computing device]; [0046], a newer version of the software is available.); sending, by the one or more processors to a computing system, an update request that includes an indication of the baseline version of the shared library (e.g., Figs. 1-4 and associated text, e.g., [0033],a hash may be created based on a listing of the libraries stored on a device. The listing may be [Library A version 1.0, Library B version 2.2, … ] … The device may generate the hash and transmit it in update request 204; [0044], At operation 402, an update request from a computing device may be received … The update request may include a profile of a current set of data [baseline] stored on the computing device. The set of data may include applications, libraries, or resources on the device. The profile of the current set of data may identify a version of software installed on the computing device.); in response to sending the update request, , by the one or more processors and from the computing system, a patch for patching the baseline version of the shared library to the target version of the shared library (e.g., Figs. 1-4 and associated text, e.g., [0047], At operation 406, in an example, it is determined if a delta set of data has previously been generated to transform the current set of data to the updated set of data. The delta set of data may include an installer to update the software installed on the computing device to the newer version of the software. The delta set of data may be based on a difference in binaries of the current set of data and the updated set of data; [0048], At operation 410, an address for obtaining the delta set of data may be transmitted to the computing device; see also [0027]-[0029].); and , by the one or more processors, the patch to the baseline version of the shared library to generate the target version of the shared library (e.g., Figs. 1-4 and associated text, e.g., [0047], At operation 406, in an example, it is determined if a delta set of data has previously been generated to transform the current set of data to the updated set of data. The delta set of data may include an installer to update the software installed on the computing device to the newer version of the software. The delta set of data may be based on a difference in binaries of the current set of data and the updated set of data.). Carranza does not appear to disclose the following, which is taught in analogous art, Kumashiro: and out of a plurality of versions of … a most recent version of (e.g., Figs. 1-5, and 8-13 and associated text, e.g., [0075], In the example of FIG. 8, the overall system information 401 indicates that the storage unit 130 contains four generations of systems [plurality of versions]; [0083], FIG. 10 shows that seven system generations are designated by version numbers, "1" to "7."; [0085], find which system version is the latest in the client 100. The version information request message 501 carries the version number that is found [selecting out of a plurality of versions of … a most recent version of], thus informing the management server 200 of the latest system version available in the client 100. It is assumed in the present example that the client's system version number is 6; see also [0051], [0086], [0090], and claim 1, 3, and 4.) … receiving (e.g., Figs. 1-5, and 8-13 and associated text, e.g., [0102] (Step S17) The client 100 waits for the management server 200 to respond to the difference request message 503. When the management server 200 returns a difference message 504 containing difference files, the client 100 advances to step S18; see also [0011]-[0012] and [0096]-[0101]) … applying (e.g., Figs. 1-5, and 8-13 and associated text, e.g., [0103] (Step S18) The client 100 updates the storage area of the existing system version by using the difference message 504 received at step S17; see also [0011]-[0012] and [0096]-[0101].). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine the invention of Carranza with the invention of Kumashiro, because it could help to “update installed software in a minimum time,” as suggested by Kumashiro (see [0114]). With respect to claim 11, Carranza discloses A computing device comprising (e.g., Fig. 5.): a memory configured to store a shared library installed at the computing device (e.g., Figs. 1-5 and associated text, e.g., [0014], The devices may have various data files … The data files may be include, …support files (e.g., dynamic linked libraries (DLL), shared object (so); [0033], The listing may be [Library A version 1.0, Library B version 2.2, . . . ]; [0056], the instructions 524 may also reside, completely or at least partially, within the main memory 504, static memory 506, and/or within the processor 502 during execution thereof by the computer system 500.); one or more processors operably coupled to the memory and configured to (e.g., Fig 5 and associated text, e.g., [0056], the instructions 524 may also reside, completely or at least partially, within the main memory 504, static memory 506, and/or within the processor 502 during execution thereof by the computer system 500.): select, a shared library installed at the computing device, the shared library that precedes a target version of the shared library as a baseline version of the shared library (e.g., Figs. 1-4 and associated text, e.g., [0014], The devices may have various data files … The data files may be include, …support files (e.g., dynamic linked libraries (DLL), shared object (so); [0032], FIG. 2 illustrates the use of a single hash to identify device library listing 202. This may be useful in situations where hundreds of libraries are stored on a device; [0033], The listing may be [Library A version 1.0, Library B version 2.2, . . . ]; [0044], At operation 402, an update request from a computing device may be received … The update request may include a profile of a current set of data [baseline] stored on the computing device. The set of data may include applications, libraries, or resources on the device. The profile of the current set of data may identify a version of software installed on the computing device [select]; [0046], a newer version of the software is available.); send, to a computing system, an update request that includes an indication of the baseline version of the shared library (e.g., Figs. 1-4 and associated text, e.g., [0033],a hash may be created based on a listing of the libraries stored on a device. The listing may be [Library A version 1.0, Library B version 2.2, … ] … The device may generate the hash and transmit it in update request 204; [0044], At operation 402, an update request from a computing device may be received … The update request may include a profile of a current set of data [baseline] stored on the computing device. The set of data may include applications, libraries, or resources on the device. The profile of the current set of data may identify a version of software installed on the computing device.); in response to sending the update request, , from the computing system, a patch for patching the baseline version of the shared library to the target version of the shared library (e.g., Figs. 1-4 and associated text, e.g., [0047], At operation 406, in an example, it is determined if a delta set of data has previously been generated to transform the current set of data to the updated set of data. The delta set of data may include an installer to update the software installed on the computing device to the newer version of the software. The delta set of data may be based on a difference in binaries of the current set of data and the updated set of data; [0048], At operation 410, an address for obtaining the delta set of data may be transmitted to the computing device; see also [0027]-[0029].); and the patch to the baseline version of the shared library to generate the target version of the shared library (e.g., Figs. 1-4 and associated text, e.g., [0047], At operation 406, in an example, it is determined if a delta set of data has previously been generated to transform the current set of data to the updated set of data. The delta set of data may include an installer to update the software installed on the computing device to the newer version of the software. The delta set of data may be based on a difference in binaries of the current set of data and the updated set of data.). Carranza does not appear to disclose the following, which is taught in analogous art, Kumashiro: a plurality of versions of … out of a plurality of versions of … a most recent version of (e.g., Figs. 1-5, and 8-13 and associated text, e.g., [0075], In the example of FIG. 8, the overall system information 401 indicates that the storage unit 130 contains four generations of systems [plurality of versions]; [0083], FIG. 10 shows that seven system generations are designated by version numbers, "1" to "7."; [0085], find which system version is the latest in the client 100. The version information request message 501 carries the version number that is found [selecting out of a plurality of versions of … a most recent version of], thus informing the management server 200 of the latest system version available in the client 100. It is assumed in the present example that the client's system version number is 6; see also [0051], [0086], [0090], and claim 1, 3, and 4.) … receive (e.g., Figs. 1-5, and 8-13 and associated text, e.g., [0102] (Step S17) The client 100 waits for the management server 200 to respond to the difference request message 503. When the management server 200 returns a difference message 504 containing difference files, the client 100 advances to step S18; see also [0011]-[0012] and [0096]-[0101]) … apply (e.g., Figs. 1-5, and 8-13 and associated text, e.g., [0103] (Step S18) The client 100 updates the storage area of the existing system version by using the difference message 504 received at step S17; see also [0011]-[0012] and [0096]-[0101].). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine the invention of Carranza with the invention of Kumashiro, because it could help to “update installed software in a minimum time,” as suggested by Kumashiro (see [0114]). With respect to claim 20, Carranza discloses A computer-readable storage medium encoded with instructions that, when executed by one or more processors of a computing device, cause the one or more processors to (e.g., Fig 5 and associated text, e.g., [0056], the instructions 524 may also reside, completely or at least partially, within the main memory 504, static memory 506, and/or within the processor 502 during execution thereof by the computer system 500.): select, a shared library installed at the computing device, the shared library that precedes a target version of the shared library as a baseline version of the shared library (e.g., Figs. 1-4 and associated text, e.g., [0014], The devices may have various data files … The data files may be include, …support files (e.g., dynamic linked libraries (DLL), shared object (so); [0032], FIG. 2 illustrates the use of a single hash to identify device library listing 202. This may be useful in situations where hundreds of libraries are stored on a device; [0033], The listing may be [Library A version 1.0, Library B version 2.2, . . . ]; [0044], At operation 402, an update request from a computing device may be received … The update request may include a profile of a current set of data [baseline] stored on the computing device. The set of data may include applications, libraries, or resources on the device. The profile of the current set of data may identify a version of software installed on the computing device [select]; [0046], a newer version of the software is available.); send, to a computing system, an update request that includes an indication of the baseline version of the shared library (e.g., Figs. 1-4 and associated text, e.g., [0033],a hash may be created based on a listing of the libraries stored on a device. The listing may be [Library A version 1.0, Library B version 2.2, … ] … The device may generate the hash and transmit it in update request 204; [0044], At operation 402, an update request from a computing device may be received … The update request may include a profile of a current set of data [baseline] stored on the computing device. The set of data may include applications, libraries, or resources on the device. The profile of the current set of data may identify a version of software installed on the computing device.); in response to sending the update request, , from the computing system, a patch for patching the baseline version of the shared library to the target version of the shared library (e.g., Figs. 1-4 and associated text, e.g., [0047], At operation 406, in an example, it is determined if a delta set of data has previously been generated to transform the current set of data to the updated set of data. The delta set of data may include an installer to update the software installed on the computing device to the newer version of the software. The delta set of data may be based on a difference in binaries of the current set of data and the updated set of data; [0048], At operation 410, an address for obtaining the delta set of data may be transmitted to the computing device; see also [0027]-[0029].); and the patch to the baseline version of the shared library to generate the target version of the shared library (e.g., Figs. 1-4 and associated text, e.g., [0047], At operation 406, in an example, it is determined if a delta set of data has previously been generated to transform the current set of data to the updated set of data. The delta set of data may include an installer to update the software installed on the computing device to the newer version of the software. The delta set of data may be based on a difference in binaries of the current set of data and the updated set of data.). Carranza does not appear to disclose the following, which is taught in analogous art, Kumashiro: out of a plurality of versions of … a most recent version of (e.g., Figs. 1-5, and 8-13 and associated text, e.g., [0075], In the example of FIG. 8, the overall system information 401 indicates that the storage unit 130 contains four generations of systems [plurality of versions]; [0083], FIG. 10 shows that seven system generations are designated by version numbers, "1" to "7."; [0085], find which system version is the latest in the client 100. The version information request message 501 carries the version number that is found [selecting out of a plurality of versions of … a most recent version of], thus informing the management server 200 of the latest system version available in the client 100. It is assumed in the present example that the client's system version number is 6; see also [0051], [0086], [0090], and claim 1, 3, and 4.) … receive (e.g., Figs. 1-5, and 8-13 and associated text, e.g., [0102] (Step S17) The client 100 waits for the management server 200 to respond to the difference request message 503. When the management server 200 returns a difference message 504 containing difference files, the client 100 advances to step S18; see also [0011]-[0012] and [0096]-[0101]) … apply (e.g., Figs. 1-5, and 8-13 and associated text, e.g., [0103] (Step S18) The client 100 updates the storage area of the existing system version by using the difference message 504 received at step S17; see also [0011]-[0012] and [0096]-[0101].). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine the invention of Carranza with the invention of Kumashiro, because it could help to “update installed software in a minimum time,” as suggested by Kumashiro (see [0114]). With respect to claims 3 and 13, Carranza further teaches wherein selecting the shared library installed at the computing device that precedes the target version of the shared library as the baseline version of the shared library further comprises: selecting, by the one or more processors, a version of the shared library installed at the computing device the shared library installed at the computing device that is of a lower version than the target version of the shared library as the baseline version of the shared library (e.g., Figs. 1-4 and associated text, e.g., [0014], The devices may have various data files … The data files may be include, …support files (e.g., dynamic linked libraries (DLL), shared object (so); [0032], FIG. 2 illustrates the use of a single hash to identify device library listing 202. This may be useful in situations where hundreds of libraries are stored on a device; [0033], The listing may be [Library A version 1.0, Library B version 2.2, . . . ]; [0044], At operation 402, an update request from a computing device may be received … The update request may include a profile of a current set of data stored on the computing device. The set of data may include applications, libraries, or resources on the device. The profile of the current set of data may identify a version of software installed on the computing device; [0046], a newer version of the software is available.) and Kumashiro further teaches the most recent version of … highest … out of the plurality of versions of (e.g., Figs. 1-5, and 8-13 and associated text, e.g., [0075], In the example of FIG. 8, the overall system information 401 indicates that the storage unit 130 contains four generations of systems [plurality of versions]; [0083], FIG. 10 shows that seven system generations are designated by version numbers, "1" to "7."; [0085], find which system version is the latest in the client 100. The version information request message 501 carries the version number that is found [selecting out of a plurality of versions of … a most recent version of], thus informing the management server 200 of the latest system version available in the client 100. It is assumed in the present example that the client's system version number is 6; see also [0051], [0086], [0090], and claim 1, 3, and 4.). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine the invention of Carranza with the invention of Kumashiro, for the same reason set forth above. Claims 2 and 12 are rejected under 35 U.S.C. 103 as being unpatentable over Carranza in view of Kumashiro, as applied to claims 1 and 11 above, and further in view of Kennedy et al. (US 20180267796 A1, hereinafter Kennedy). With respect to claims 2 and 12, Carranza does not appear to disclose the following, which is taught in analogous art, Kennedy: wherein the shared library is a static shared library that is not backwards compatible with previous versions of the shared library (e.g., [0058], updating a stored shared library; [0059], There are three types of shared libraries: … static-updatable non backwards-compatible emulating static linking.). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to further modify the invention of Carranza with the invention of Kennedy because “Use of a particular version of a library can be guaranteed if an application is built using a statically linked library” and “Allowing specification of a particular version of a shared library can allow a developer to design their application as they have been doing to date and with the confidence that there will be no compatibility problems with the library”, as suggested by Kennedy (see [0021] and [0023]). Claims 4-5 and 14-15 are rejected under 35 U.S.C. 103 as being unpatentable over Carranza in view of Kumashiro, as applied to claims 1 and 11 above, and further in view of Grier et al. (US 20020100017 A1, hereinafter Grier). With respect to claims 4 and 14, Carranza also discloses wherein a first application installed at the computing device and a second application installed at the computing device (e.g., Figs. 1-4 and associated text, e.g., [0014], The data files may be include, but are not limited to, application programs.) the baseline version of the shared library, and wherein patching the baseline version of the shared library to generate the target version of the shared library further comprises (e.g., Figs. 1-4 and associated text, e.g., [0014], The data files may be include, …support files (e.g., dynamic linked libraries (DLL), shared object (so); [0047], At operation 406, in an example, it is determined if a delta set of data has previously been generated to transform the current set of data [baseline] to the updated set of data. The delta set of data may include an installer to update the software installed on the computing device to the newer version of the software. The delta set of data may be based on a difference in binaries of the current set of data and the updated set of data; see also [0027]-[0029].): the target version of the shared library (e.g., Figs. 1-4 and associated text, e.g., [0014], The data files may be include, …support files (e.g., dynamic linked libraries (DLL), shared object (so); [0047], The delta set of data may include an installer to update the software installed on the computing device to the newer version of the software [target version of the shared library]. The delta set of data may be based on a difference in binaries of the current set of data and the updated set of data; see also [0027]-[0029].); and , by the one or more processors, the baseline version of the shared library at the computing device the second application (e.g., Figs. 1-4 and associated text, e.g., [0014], The data files may be include, but are not limited to, application programs.). Carranza does not appear to disclose the following, which is taught in analogous art Grier: are linked to … (e.g., Figs. 2A-12 and associated text, e.g., the term "assembly" will refer to one or more components, whether referring to a single component (e.g., one contiguous DLL) or to a plurality of components grouped together; [0038] Assemblies can be shared, such as when more than one application or the like needs an instance of the assembly's code; [0040], metadata (e.g., 206) describing an application's dependencies on shareable assembly versions; [0042], Note that to provide side-by-side existence of assembly versions, any existing assembly versions are not overwritten in the assembly cache 212 when another version is installed.) … updating, by the one or more processors, the first application to link the first application to (e.g., Figs. 2A-12 and associated text e.g., [0072], once an application deployer is confident that the application works with a newer version of a shared assembly, the deployer can choose to change the application configuration file to automatically use the new version instead of the version set forth in the application manifest.) … persisting … for use by the second application (e.g., Figs. 2A-12 and associated text, e.g., [0009] Each assembly may exist and run side-by-side on the system with other versions of the same assembly being used by other applications; [0042], Note that to provide side-by-side existence of assembly versions, any existing assembly versions are not overwritten in the assembly cache 212 when another version is installed.). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to further modify the invention of Carranza with the invention of Grier because it can addresses the “many problems and shortcomings” of sharing components by enabling “applications to explicitly use different versions of assemblies from what the application as originally shipped had specified … [which] allows for exact management and control of assemblies during the lifecycle of the application,” as suggested by Grier (see [0007] and [0010]). With respect to claims 5 and 15, Carranza also discloses wherein a first application and a second application a version of the shared library installed at the computing device, wherein the version of the shared library is selected as the baseline version of the shared library (e.g., Figs. 1-4 and associated text, e.g., [0014], The devices may have various data files … The data files may be include, …support files (e.g., dynamic linked libraries (DLL), shared object (so); [0032], FIG. 2 illustrates the use of a single hash to identify device library listing 202. This may be useful in situations where hundreds of libraries are stored on a device; [0033], The listing may be [Library A version 1.0, Library B version 2.2, . . . ]; [0044], At operation 402, an update request from a computing device may be received … The update request may include a profile of a current set of data [version of the shared library is selected as the baseline] stored on the computing device. The set of data may include applications, libraries, or resources on the device. The profile of the current set of data may identify a version of software installed on the computing device; [0046], a newer version of the software is available.), and wherein patching the baseline version of the shared library to generate the target version of the shared library further comprises (e.g., Figs. 1-4 and associated text, e.g., [0014], The data files may be include, …support files (e.g., dynamic linked libraries (DLL), shared object (so); [0047], At operation 406, in an example, it is determined if a delta set of data has previously been generated to transform the current set of data [baseline] to the updated set of data. The delta set of data may include an installer to update the software installed on the computing device to the newer version of the software. The delta set of data may be based on a difference in binaries of the current set of data and the updated set of data; see also [0027]-[0029].): ; and Kumashiro further teaches second … second (e.g., Figs. 1-5, and 8-13 and associated text, e.g., [0075], In the example of FIG. 8, the overall system information 401 indicates that the storage unit 130 contains four generations of systems; [0083], FIG. 10 shows that seven system generations are designated by version numbers, "1" to "7."; [0085], find which system version is the latest in the client 100. The version information request message 501 carries the version number that is found [second version], thus informing the management server 200 of the latest system version available in the client 100. It is assumed in the present example that the client's system version number is 6; see also [0011-12], [0051], [0086], [0090], [0096]-[0101], and claim 1, 3, and 4.) … patching, by the one or more processors, the second version of the shared library … to generate the target version of the shared library (Id.; (e.g., Figs. 1-5, and 8-13 and associated text, e.g., [0101], In the case of copy & update, the difference files include latest version components that are different from the copied version; [0103] (Step S18) The client 100 updates the storage area of the existing system version by using the difference message 504 received at step S17.); see also [0011] and claims 1, 3, and 4.). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine the invention of Carranza with the invention of Kumashiro for the same reason set forth above. Carranza as modified does not appear to disclose the following, which is taught in analogous art, Grier: links to a first version of the shared library installed at the computing device … links to a second version of … linked by the second application … (e.g., Figs. 2A-12 and associated text, e.g., Abstract, allow an application to run with specified versions of assemblies bound thereto … Each assembly may exist and run side-by-side on the system with other versions of the same assembly being used by other applications [a first application links to a first version of the shared library installed at the computing device and a second application links to a second version of the shared library installed at the computing device]; [0042], Note that to provide side-by-side existence of assembly versions, any existing assembly versions are not overwritten in the assembly cache 212 when another version is installed; [0038], Assemblies can be shared, such as when more than one application or the like needs an instance of the assembly's code.) … updating, by the one or more processors, the first application to link the first application to the target version of the shared library (e.g., Figs. 2A-12 and associated text e.g., [0072], once an application deployer is confident that the application works with a newer version of a shared assembly, the deployer can choose to change the application configuration file to automatically use the new version instead of the version set forth in the application manifest.); and persisting, by the one or more processors, the second version of the shared library at the computing device for use by the second application (e.g., Figs. 2A-12 and associated text, e.g., [0009] Each assembly may exist and run side-by-side on the system with other versions of the same assembly being used by other applications; [0042], Note that to provide side-by-side existence of assembly versions, any existing assembly versions are not overwritten in the assembly cache 212 when another version is installed.). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to further modify the invention of Carranza with the invention of Grier because it can addresses the “many problems and shortcomings” of sharing components by enabling “applications to explicitly use different versions of assemblies from what the application as originally shipped had specified … [which] allows for exact management and control of assemblies during the lifecycle of the application,” as suggested by Grier (see [0007] and [0010]). Claims 6, 7, 16, and 17 are rejected under 35 U.S.C. 103 as being unpatentable over Carranza in view of Kumashiro, as applied to claims 1 and 11 above, and further in view of Hu et al. (US 20170147323 A1, hereinafter Hu) and Yin (US 20260220251 A1, hereinafter Yin). With respect to claims 6 and 16, Carranza also discloses selecting, by the one or more processors and installed at the computing device, a that precedes a target version of the as a baseline version of theapplications, libraries, or resources on the device. The profile of the current set of data may identify a version of software installed on the computing device [selecting, by one or more processors of a computing device]; [0046], a newer version of the software is available.); sending, by the one or more processors to a computing system, a second update request that includes an indication of the baseline version of the (e.g., Figs. 1-4 and associated text, e.g., [0044], At operation 402, an update request from a computing device may be received … The update request may include a profile of a current set of data [baseline] stored on the computing device. The set of data may include applications, libraries, or resources on the device. The profile of the current set of data may identify a version of software installed on the computing device; [0021], multiple update requests may be transmitting); in response to sending the second update request, , by the one or more processors and from the computing system, a second patch for patching the baseline version of the to the target version of the (e.g., Figs. 1-4 and associated text, e.g., [0047], At operation 406, in an example, it is determined if a delta set of data has previously been generated to transform the current set of data to the updated set of data. The delta set of data may include an installer to update the software installed on the computing device to the newer version of the software. The delta set of data may be based on a difference in binaries of the current set of data and the updated set of data; [0048], At operation 410, an address for obtaining the delta set of data may be transmitted to the computing device; see also [0027]-[0029].); and , by the one or more processors, the second patch to the baseline version of the to generate the target version of the e.g., Figs. 1-4 and associated text, e.g., [0047], At operation 406, in an example, it is determined if a delta set of data has previously been generated to transform the current set of data to the updated set of data. The delta set of data may include an installer to update the software installed on the computing device to the newer version of the software. The delta set of data may be based on a difference in binaries of the current set of data and the updated set of data.). Kumashiro further teaches out of a plurality of versions of … a most recent version of (e.g., Figs. 1-5, and 8-13 and associated text, e.g., [0075], In the example of FIG. 8, the overall system information 401 indicates that the storage unit 130 contains four generations of systems [plurality of versions]; [0083], FIG. 10 shows that seven system generations are designated by version numbers, "1" to "7."; [0085], find which system version is the latest in the client 100. The version information request message 501 carries the version number that is found [selecting out of a plurality of versions of … a most recent version of], thus informing the management server 200 of the latest system version available in the client 100. It is assumed in the present example that the client's system version number is 6; see also [0051], [0086], [0090], and claim 1, 3, and 4.) … receiving (e.g., Figs. 1-5, and 8-13 and associated text, e.g., [0102] (Step S17) The client 100 waits for the management server 200 to respond to the difference request message 503. When the management server 200 returns a difference message 504 containing difference files, the client 100 advances to step S18; see also [0011]-[0012] and [0096]-[0101]) … applying (e.g., Figs. 1-5, and 8-13 and associated text, e.g., [0103] (Step S18) The client 100 updates the storage area of the existing system version by using the difference message 504 received at step S17; see also [0011]-[0012] and [0096]-[0101].). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine the invention of Carranza with the invention of Kumashiro. Although Carranza as modified discloses generating a patch for upgrading versions of software components to higher version (see above), it does not appear to disclose the following, which is taught in analogous art, Hu: software development kit (SDK) … SDK … SDK … SDK … SDK … SDK … SDK … SDK … SDK (e.g., Figs. 1-6 and associated text, e.g., Abstract, Disclosed are a method and electronic device for upgrading a software development kit (SDK) of an application.). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to further modify the invention of Carranza with the invention of Hu because it would address “a problem of difficulty in version upgrading caused by the fact that SDKs in the application in the industry may not be automatically updated,” as suggested by Hu (see [0022]). Although Carranza as modified discloses an SDK, it does not appear to disclose the following, which is taught in analogous art, Yin: a sandbox … the sandbox … sandbox … sandbox … sandbox … sandbox … sandbox … sandbox … sandbox (e.g., Figs. 1-4 and associated text, e.g., [0022] At operation S12, in a case where it is determined that the installation package of the target application carries a third-party SDK, different sandboxes are allocated to the third-party SDK and the target application; [0027], the third-party SDK with uncontrollable behaviors is placed in an independent sandbox at the operating system level, so that a harmful third-party SDK can be prevented from infringing on the system through the host application, and security of a mobile terminal can be improved at the system level.). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to further modify the invention of Carranza with the invention of Yin because “security of a mobile terminal can be improved at the system level,” as suggested by Yin (see [0027]). With respect to claims 7 and 17, Carranza does not appear to disclose determining, by the one or more processors, a derived identifier of an instance of a sandbox SDK that executes in a sandboxed environment associated with an application; sending, by the one or more processors to the computing system, a third update request that includes an indication of the derived identifier of the instance of the sandbox SDK; in response to sending the third update request, receiving, by the one or more processors and from the computing system, a third patch for patching the instance of the sandbox SDK; and applying, by the one or more processors, the third patch to the instance of the sandbox SDK to update the instance of the sandbox SDK to generate an updated instance of the sandbox SDK. However, in analogous art, Hu discloses determining, by the one or more processors, a derived identifier of an instance of a SDK that executes in a environment associated with an application (e.g., Figs. 4-5 and associated text, e.g., [0077], terminal 2 acquires the version information and service information [identifier] of the SDK 21 through the access requesting module 22, generates a configuring request including a terminal system type and SDK version information, and sends the configuring request to cloud server 1 to realize the upgrading of the SDK in the application.); sending, by the one or more processors to the computing system, a third update request that includes an indication of the derived identifier of the instance of the SDK (e.g., Figs. 4-5 and associated text, e.g., [0077], terminal 2 acquires the version information and service information of the SDK 21 through the access requesting module 22, generates a configuring request including a terminal system type and SDK version information [an indication of the derived identifier], and sends the configuring request to cloud server 1 to realize the upgrading of the SDK in the application.); in response to sending the third update request, receiving, by the one or more processors and from the computing system, a third patch for patching the instance of the SDK (e.g., Figs. 4-5 and associated text, e.g., [0083] When the system type is Android, since the Android system per se supports the modularization, each service module of the SDK may be subjected to a plug-in to update the SDK in a plug-in oriented manner … The upgrading instruction includes configuration information, and the application of the terminal downloads the plug-in service modules conforming to the corresponding configuration information and the corresponding configuration file from cloud server 1. Android terminal 2 performs service loading using the received plug-in to realize the oriented upgrading on the corresponding modules based on the configuration information.); and applying, by the one or more processors, the third patch to the instance of the SDK to update the instance of the SDK to generate an updated instance of the SDK (Id.; [0062] Step S404: the Android terminal receives the upgrading instruction, loads a corresponding plug-in, and updates the SDK.). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to further modify the invention of Carranza with the invention of Hu because it would address “a problem of difficulty in version upgrading caused by the fact that SDKs in the application in the industry may not be automatically updated,” as suggested by Hu (see [0022]). Although Carranza as modified discloses an SDK, it does not appear to disclose the following, which is taught in analogous art, Yin: sandbox … sandboxed … sandbox … sandbox … sandbox … sandbox … sandbox (e.g., Figs. 1-4 and associated text, e.g., [0022] At operation S12, in a case where it is determined that the installation package of the target application carries a third-party SDK, different sandboxes are allocated to the third-party SDK and the target application; [0027], the third-party SDK with uncontrollable behaviors is placed in an independent sandbox at the operating system level, so that a harmful third-party SDK can be prevented from infringing on the system through the host application, and security of a mobile terminal can be improved at the system level.). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to further modify the invention of Carranza with the invention of Yin because “security of a mobile terminal can be improved at the system level,” as suggested by Yin (see [0027]). Claims 8 and 18 are rejected under 35 U.S.C. 103 as being unpatentable over Carranza in view of Kumashiro, Hu, and Yin, as applied to claim 7 and 17 above, and further in view of Agrawal (US 20210192506 A1, hereinafter Agrawal) With respect to claims 8 and 18, Hu further teaches wherein the derived identifier of the instance of the SDK is based at least in part on an identity of the application associated with the environment (e.g., Figs. 4-5 and associated text, e.g., [0077], terminal 2 acquires the version information and service information [identifier] of the SDK 21 through the access requesting module 22, generates a configuring request including a terminal system type and SDK version information, and sends the configuring request to cloud server 1 to realize the upgrading of the SDK in the application.) and of the instance of the SDK and Yin further teaches sandbox … sandboxed … sandbox (e.g., Figs. 1-4 and associated text, e.g., [0022] At operation S12, in a case where it is determined that the installation package of the target application carries a third-party SDK, different sandboxes are allocated to the third-party SDK and the target application; [0027], the third-party SDK with uncontrollable behaviors is placed in an independent sandbox at the operating system level, so that a harmful third-party SDK can be prevented from infringing on the system through the host application, and security of a mobile terminal can be improved at the system level.). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to further modify the invention of Carranza with the inventions of Hu and Yin for the same reasons as set forth above. Carranza as modified does not appear to disclose the following, which is taught in analogous art, Agrawal: a cryptographic hash (e.g., [0072], a new or updated integrity check hash each time an SDK core is updated or changed; see also [0097]-[0098].). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to further modify the invention of Carranza with the invention of Agrawal, such that a cryptographic hash of an instance of a sandboxed SDK is used in an identifier for the instance of the sandboxed SDK, because a cryptographic hash is a well-known and effective identifier as even small differences in an input (e.g., sandboxed SDK) leads to a very different hash value. Claims 9 and 19 are rejected under 35 U.S.C. 103 as being unpatentable over Carranza in view of Kumashiro, Hu, and Yin, as applied to claim 7 and 17 above, and further in view of Albertini et al. (US 20220327849 A1, hereinafter Albertini). With respect to claims 9 and 19, Hu also discloses wherein applying the third patch to the instance of the SDK to update the instance of the SDK comprises: applying, by the one or more processors, the third patch to the instance of the SDK to perform a update of the instance of the SDK (e.g., Figs. 4-5 and associated text, e.g., [0083] When the system type is Android, since the Android system per se supports the modularization, each service module of the SDK may be subjected to a plug-in to update the SDK in a plug-in oriented manner … The upgrading instruction includes configuration information, and the application of the terminal downloads the plug-in service modules conforming to the corresponding configuration information and the corresponding configuration file from cloud server 1. Android terminal 2 performs service loading using the received plug-in to realize the oriented upgrading on the corresponding modules based on the configuration information; [0062] Step S404: the Android terminal receives the upgrading instruction, loads a corresponding plug-in, and updates the SDK.) and Yin further teaches sandbox … sandbox … sandbox … sandbox (e.g., Figs. 1-4 and associated text, e.g., [0022] At operation S12, in a case where it is determined that the installation package of the target application carries a third-party SDK, different sandboxes are allocated to the third-party SDK and the target application; [0027], the third-party SDK with uncontrollable behaviors is placed in an independent sandbox at the operating system level, so that a harmful third-party SDK can be prevented from infringing on the system through the host application, and security of a mobile terminal can be improved at the system level.). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to further modify the invention of Carranza with the inventions of Hu and Yin for the same reasons as set forth above. Carranza as modified does not appear to disclose the following, which is taught in analogous art, Albertini: same-version (e.g., Figs. 1-2 and associated text, e.g., [0048], The processing configuration can be changed at runtime, also after the initialization of the SDK. For example, the asset storage 13 may send an update notification to the SDK 7. When it receives the update notification, the SDK 7 may download an updated processing configuration from the asset storage 13 in a similar manner as described above and replace the processing configuration, which determines the data processing operations which are applied to the input images by the SDK 7; [0050] The processing configuration determines the data processing operations (i.e., their total number, type and sequence) and the parametrization of each data processing operation. Hence, the system has the capability to optimize or completely interchange the whole computer vision pipeline (as defined by the processing configuration) on the fly without the need of any code changes and recompiling [same-version]; see also [0045].). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to further modify the invention of Carranza with the invention of Albertini, such the update is applied to the sandbox SDK without changing the SDK version, because it would allow for optimization of functionality “without the need of any code changes and recompiling”, as suggested by Albertini (see [0050]). Claim 10 is rejected under 35 U.S.C. 103 as being unpatentable over Carranza in view of Kumashiro, as applied to claim 1 above, and further in view of Hu, Yin, and Wei (US 20230229431 A1, hereinafter Wei). With respect to claim 10, Carranza does not appear to disclose determining, by the one or more processors, a second sandbox SDK that executes in a sandboxed environment associated with a second application; sending, by the one or more processors to the computing system, a hotfix request that includes an indication of a version of the second sandbox SDK; in response to sending the hotfix request, receiving, by the one or more processors and from the computing system, a hotfix patch for patching the second sandbox SDK; and applying, by the one or more processors, the hotfix patch to the second sandbox SDK to update the second sandbox SDK. However, in analogous art, Hu discloses determining, by the one or more processors, a second SDK that executes in a environment associated with a second application (e.g., Figs. 4-5 and associated text, e.g., [0077], terminal 2 acquires the version information and service information of the SDK 21 through the access requesting module 22, generates a configuring request including a terminal system type and SDK version information, and sends the configuring request to cloud server 1 to realize the upgrading of the SDK in the application.); sending, by the one or more processors to the computing system, a request that includes an indication of a version of the second SDK (e.g., Figs. 4-5 and associated text, e.g., [0077], terminal 2 acquires the version information and service information of the SDK 21 through the access requesting module 22, generates a configuring request including a terminal system type and SDK version information, and sends the configuring request to cloud server 1 to realize the upgrading of the SDK in the application.); in response to sending the request, receiving, by the one or more processors and from the computing system, a patch for patching the second SDK (e.g., Figs. 4-5 and associated text, e.g., [0083] When the system type is Android, since the Android system per se supports the modularization, each service module of the SDK may be subjected to a plug-in to update the SDK in a plug-in oriented manner … The upgrading instruction includes configuration information, and the application of the terminal downloads the plug-in service modules conforming to the corresponding configuration information and the corresponding configuration file from cloud server 1. Android terminal 2 performs service loading using the received plug-in to realize the oriented upgrading on the corresponding modules based on the configuration information.); and applying, by the one or more processors, the patch to the second SDK to update the second SDK (Id.; [0062] Step S404: the Android terminal receives the upgrading instruction, loads a corresponding plug-in, and updates the SDK.). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to further modify the invention of Carranza with the invention of Hu because it would address “a problem of difficulty in version upgrading caused by the fact that SDKs in the application in the industry may not be automatically updated,” as suggested by Hu (see [0022]). Although Carranza as modified discloses an SDK, it does not appear to disclose the following, which is taught in analogous art, Yin: sandbox … sandboxed … sandbox … sandbox … sandbox … sandbox(e.g., Figs. 1-4 and associated text, e.g., [0022] At operation S12, in a case where it is determined that the installation package of the target application carries a third-party SDK, different sandboxes are allocated to the third-party SDK and the target application; [0027], the third-party SDK with uncontrollable behaviors is placed in an independent sandbox at the operating system level, so that a harmful third-party SDK can be prevented from infringing on the system through the host application, and security of a mobile terminal can be improved at the system level.). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to further modify the invention of Carranza with the invention of Yin because “security of a mobile terminal can be improved at the system level,” as suggested by Yin (see [0027]). Carranza as modified does not appear to disclose the following, which is taught in analogous art, Wei: hotfix … hotfix … hotfix … hotfix (e.g., Figs. 1-5 and associated text, e.g., [0058], If a target to-be-fixed method exists in the two or more SDKs, a stub for the target to-be-fixed method is retained … Then a hotfix patch is generated…. in the case that hotfix is performed on multiple accessible SDKs dependent from each other, conflicts between hotfix patches for the SDKs can be avoided.). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to further modify the invention of Carranza with the invention of Wei because a hotfix “can quickly repair online anomalies of software products with low-cost” and “in the case that hotfix is performed on multiple accessible SDKs dependent from each other, conflicts between hotfix patches for the SDKs can be avoided”, as suggested by Wei (see [0003] and [0058]). Conclusion The prior art made of record and not relied upon is considered pertinent to applicant's disclosure. Specifically, (1) Wikipedia, “Dynamic-link library” discloses implementation details of dynamic-link library (DLL) files; and (2) Souza et al. “Third-party libraries in mobile apps: When, how, and why developers update them” discloses common used to update third-party libraries. Any inquiry concerning this communication or earlier communications from the examiner should be directed to STEPHEN DAVID BERMAN whose telephone number is (571) 272-7206. The examiner can normally be reached M-F, 9-6 Eastern. Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice. If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Hyung S. Sough can be reached on 571-272-6799. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300. Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000. /STEPHEN D BERMAN/ Examiner, Art Unit 2192
Read full office action

Prosecution Timeline

Jul 14, 2023
Application Filed
May 14, 2025
Response after Non-Final Action
Aug 11, 2026
Non-Final Rejection mailed — §103
Sep 10, 2026
Interview Requested

Precedent Cases

Applications granted by this same examiner with similar technology

Patent 12743274
CHAINED PULL REQUESTS IN A SOURCE CODE MANAGEMENT SYSTEM
3y 11m to grant Granted Sep 22, 2026
Patent 12724688
CHAOS EVENT TESTING USING SIMULATED TRAFFIC FEED AND CHAOS EVENTS SIMULTANEOUSLY
3y 2m to grant Granted Sep 01, 2026
Patent 12710959
EXTRACTING ENTITY RELATIONSHIP DIAGRAMS FROM SOURCE CODE
4y 8m to grant Granted Aug 18, 2026
Patent 12675269
CONTAINERIZED, DECENTRALIZED, AND DISTRIBUTED WEB APPLICATIONS WITH END-TO-END ENCRYPTION
2y 9m to grant Granted Jul 07, 2026
Patent 12664069
CODE CONCIERGE MODEL (CCM) FOR PREDICTING RUNTIME ERRORS OF SOURCE CODE
3y 1m to grant Granted Jun 23, 2026
Study what changed to get past this examiner. Based on 5 most recent grants.

Strategy Recommendation AI-generated — please review before filing

Get a prosecution strategy drawn from examiner precedents, rejection analysis, and claim mapping.
Typically takes 5-10 seconds — AI-generated, attorney review required before filing

Prosecution Projections

1-2
Expected OA Rounds
78%
Grant Probability
99%
With Interview (+58.3%)
2y 8m (~0m remaining)
Median Time to Grant
Low
PTA Risk
Based on 343 resolved cases by this examiner. Grant probability derived from career allowance rate.

Sign in with your work email

Enter your email to receive a magic link. No password needed.

Personal email addresses (Gmail, Yahoo, etc.) are not accepted.

Free tier: 3 strategy analyses per month