DETAILED ACTION
Claims 1-20 are pending in the application.
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
Examiner’s Notes
The Examiner cites particular sections in the references as applied to the claims below for the convenience of the applicant(s). 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(s) 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 § 102
The following is a quotation of the appropriate paragraphs of 35 U.S.C. 102 that form the basis for the rejections under this section made in this Office action:
A person shall be entitled to a patent unless –
(a)(1) the claimed invention was patented, described in a printed publication, or in public use, on sale, or otherwise available to the public before the effective filing date of the claimed invention.
Claims 1-20 are rejected under 35 U.S.C. 102(a)(1) as being anticipated by Fritz et al. (US 10,938,641 B1; hereinafter “Fritz”).
With respect to claim 1, Fritz teaches: A method comprising:
receiving a request from a user to execute code (see e.g. column 4, lines 31-40: “The frontend service(s) 115 may provide a public-facing web-based interface or command-line based interface to users… a user can submit commands and receive responses”) in a notebook (see e.g. column 4, lines 40-48: “Upon receipt of a request from a user, the frontend service 115 may send messages to various backend services via one or more APIs that may not be directly accessible to a user, such as an API that provides users with on-demand development environments. Such development environments may include integrated development environments or notebook editors… term editor is generally used below and may refer to a notebook”);
initiating, based on the request, a first virtual machine (VM) including a virtual environment (see e.g. column 2, lines 20-21: “users of a provider network can launch a development environment”; column 2, lines 51-54: “users with the ability to utilize one or more of a variety of types of computing-related resources such as compute resources (e.g., executing virtual machine (VM) instances and/or containers”; column 10, lines 19-23: “operating system 310 may be a guest O/S executing on a virtual machine within a virtualization environment 307. In such a case, the operating system 310 may be considered an “instance” hosted by the computer system 305”; and Fig. 3) with configurations for execution of the code in the notebook (see e.g. Fig. 3: “Editor Application 330”; column 10, lines 24-32: “editor application 330 is an editor application server that accepts connections (e.g., from application 110) to send and receive data to cause a remote device (e.g., the customer device 111) to render the editor application. For example, the editor application 330 may be a Jupyter notebook server configured to accept remote WebSocket or HTTPS connections from the application 110 via the proxy service 140 and to send data to the application 110 to cause the application 110 to display the editor”; and column 10, lines 36-38: “allow a user to submit all or portions of code written or authored within the editor application 330 to the API 155 of the computing resource 150”);
automatically caching, in a data store (see e.g. Fig. 2: “Machine Image Data Store 280”), the virtual environment with the configurations (see e.g. column 9, lines 31-38: “a machine image that is preconfigured to host editors. The machine image may include one or more editors and one or more connectors that facilitate communications between an editor and a computing resource 150. Machine images of varying configurations may be stored in a machine image data store 280 that are accessed during the launch of an instance by the underlying host computer system”);
automatically caching, in a metadata store (see e.g. Fig. 2: “Instance Metadata 225”), metadata associated with the virtual environment (see e.g. column 8, lines 51-62: “available instances in the instance metadata data store 225… Entries in the instance metadata 225 may include an instance identifier that uniquely identifies the instance, one or more configuration identifiers that identifies the configuration of the instance (e.g., the installed editors, the types of computing resources that the instance can attach to, the performance characteristics of the instance, etc.), an identifier of the pool to which the instance belongs (if multiple pools of different instance configurations are maintained), and an identifier of the state of the instance”), the metadata describing information of the virtual environment (see e.g. column 8, lines 55-62: “one or more configuration identifiers that identifies the configuration of the instance (e.g., the installed editors, the types of computing resources that the instance can attach to, the performance characteristics of the instance, etc.), an identifier of the pool to which the instance belongs (if multiple pools of different instance configurations are maintained), and an identifier of the state of the instance”); and
executing, at the first VM, the code in the notebook in the virtual environment (see e.g. column 6, lines 3-5: “code authored or written by the user into the editor may be executed by the computing resource 150”; and column 7, lines 23-25: “user can interact with the editor and its environment to, for example, author code and cause it to be executed, generate documentation, etc.”).
Fritz discloses providing users with an editor application (i.e. a notebook) for developing and executing code within a virtual machine (a computing resource). Fritz further discloses a machine image data store that stores an image of the virtual machine and an instance metadata store that stores editor instance metadata in association with the virtual machine.
With respect to claim 2, Fritz teaches: The method of claim 1, further comprising:
receiving a subsequent request for executing code in the notebook (see e.g. column 9, lines 29-32: “requests the launch of new instances from a hardware virtualization service 205. As part of the request, the instance pool manager service 107 may specify a machine image that is preconfigured to host editors”);
determining whether the virtual environment associated with the notebook is cached in the data store (see e.g. column 9, lines 30-43: “As part of the request, the instance pool manager service 107 may specify a machine image that is preconfigured to host editors… Machine images of varying configurations may be stored in a machine image data store 280 that are accessed during the launch of an instance by the underlying host computer system (not shown). For example, the hardware virtualization service 205 may send a message to a host computer system to launch an instance using a specific machine image located within the machine image data store 280, and the host computer system will fetch the specified machine image and launch the instance”) by identifying, from the metadata store, the metadata associated with the virtual environment (see e.g. column 9, lines 48-61: “submit a request to the instance pool manager service 107 to obtain an identifier of an instance that can host an editor. The instance pool manager service 107 tracks available instances in the instance metadata data store 225… Entries in the instance metadata 225 may include an instance identifier that uniquely identifies the instance, one or more configuration identifiers that identifies the configuration of the instance (e.g., the installed editors, the types of computing resources that the instance can attach to, the performance characteristics of the instance, etc.), an identifier of the pool to which the instance belongs (if multiple pools of different instance configurations are maintained)”);
responsive to determining that the virtual environment is cached in the data store, downloading, based on the identified metadata, the virtual environment from the data store to a second VM (see e.g. column 3, lines 4-11: “provide users the ability to control or utilize compute instances (e.g., a VM using a guest operating system (O/S) that operates using a hypervisor that may or may not further operate on top of an underlying host O/S, a container that may or may not operate in a VM, an instance that can execute on “bare metal” hardware without an underlying hypervisor), where one or multiple compute instances can be implemented”; column 8, lines 48-52: “submit a request to the instance pool manager service 107 to obtain an identifier of an instance that can host an editor. The instance pool manager service 107 tracks available instances in the instance metadata data store 225”; and column 9, lines 39-43: “hardware virtualization service 205 may send a message to a host computer system to launch an instance using a specific machine image located within the machine image data store 280, and the host computer system will fetch the specified machine image and launch the instance”);
initiating the second VM configured with a local environment using the downloaded virtual environment (see e.g. column 9, lines 40-43: “launch an instance using a specific machine image located within the machine image data store 280, and the host computer system will fetch the specified machine image and launch the instance”); and
executing, at the second VM, the code in the notebook in the local environment (see e.g. column 6, lines 3-5: “code authored or written by the user into the editor may be executed by the computing resource 150”; and column 7, lines 23-25: “user can interact with the editor and its environment to, for example, author code and cause it to be executed, generate documentation, etc.”).
With respect to claim 3, Fritz teaches: The method of claim 2, wherein the first VM is different from the second VM (see e.g. column 3, lines 4-11: “utilize compute instances (e.g., a VM using a guest operating system (O/S) that operates using a hypervisor that may or may not further operate on top of an underlying host O/S, a container that may or may not operate in a VM, an instance that can execute on “bare metal” hardware without an underlying hypervisor), where one or multiple compute instances can be implemented”).
With respect to claim 4, Fritz teaches: The method of claim 1, wherein the associated metadata comprises an expiration condition for the virtual environment (see e.g. column 8, lines 50-63: “The instance pool manager service 107 tracks available instances in the instance metadata data store 225… Entries in the instance metadata 225 may include… an identifier of the state of the instance. States may include whether the instance is launching or has launched and is available”; and column 9, lines 53-59: “instances may send a heartbeat message to the instance pool manager service 107 to provide an indication when an instance in a pool may have failed. If an instance fails to provide a heartbeat message, the instance pool manager service 107 may send a message to the hardware virtualization service 205 to stop or terminate the instance”).
With respect to claim 5, Fritz teaches: The method of claim 4, further comprising:
determining, using the associated metadata, whether the virtual environment meets the expiration condition (see e.g. column 9, lines 53-55: “instances may send a heartbeat message to the instance pool manager service 107 to provide an indication when an instance in a pool may have failed”); and
responsive to the virtual environment meeting the expiration condition, invalidating the virtual environment in the data store (see e.g. column 9, lines 55-60: “If an instance fails to provide a heartbeat message, the instance pool manager service 107 may send a message to the hardware virtualization service 205 to stop or terminate the instance and to launch a new instance to replace the failed instance”).
With respect to claim 6, Fritz teaches: The method of claim 1, wherein the associated metadata comprises a location identifier for identifying a caching location of the virtual environment in the data store (see e.g. column 9, lines 39-43: “hardware virtualization service 205 may send a message to a host computer system to launch an instance using a specific machine image located within the machine image data store 280, and the host computer system will fetch the specified machine image and launch the instance”; note that, fetching the machine image located within the machine image data store 280 inherently discloses a corresponding “location identifier”).
With respect to claim 7, Fritz teaches: The method of claim 1, wherein automatically caching the virtual environment comprises:
determining a change to the code in the notebook (see e.g. column 7, lines 23-25: “user can interact with the editor and its environment to, for example, author code and cause it to be executed, generate documentation, etc.”);
incrementally updating, in the data store, the virtual environment based on the change (see e.g. column 7, lines 31-55: “environment which hosts the editor backs up the editor configuration information and user data to one or more data stores, such as a data store 145. The backups may be periodic or based on configuration changes to the editor by the user… By periodically backing up the user data, including, but not limited to, the code the user has entered into the editor, the user can resume development efforts at a later time”; and column 9, lines 32-43: “The machine image may include one or more editors and one or more connectors that facilitate communications between an editor and a computing resource 150. Machine images of varying configurations may be stored in a machine image data store 280 that are accessed during the launch of an instance by the underlying host computer system (not shown). For example, the hardware virtualization service 205 may send a message to a host computer system to launch an instance using a specific machine image located within the machine image data store 280, and the host computer system will fetch the specified machine image and launch the instance”); and
updating the associated metadata to indicate the update to the virtual environment (see e.g. column 9, lines 46-50: “The instance pool manager service 107 updates the instance metadata 225 with an entry for the newly launched instance and other associated identifiers, including an indication that the instance is available”).
With respect to claims 8-14: Claims 8-14 are directed to a non-transitory computer readable storage medium comprising instructions to cause an processor system to implement active functions corresponding to the method disclosed in claims 1-7, respectively; please see the rejections directed to claims 1-7 above which also cover the limitations recited in claims 8-14. Note that, Fritz also discloses a computer-accessible medium storing program instructions and data to implement the method disclosed in claims 1-7 (see column 18, lines 1-21).
With respect to claims 15-20: Claims 15-20 are directed to a system comprising one or more computer processors and one or more computer-readable mediums storing instructions that, when executed by the one or more computer processors, cause the system to implement active functions corresponding to the method disclosed in claims 1-7, respectively; please see the rejections directed to claims 1-7 above which also cover the limitations recited in claims 15-20. Note that, Fritz also discloses a computer system 700 with one or more processors 710A-N and system memory 720 to implement the method disclosed in claims 1-7 (see Fig. 7).
CONCLUSION
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure:
Faulhaber et al. (US 11,422,862 B1) discloses a notebook for executing kernel code as part of a container-based virtualization environment (see column 7, lines 19-54).
Gopalan et al. (US 2022/0229682 A1) discloses a decision force engine that launches virtual machines in response to job requests and a job execution engine that runs notebooks by importing notebook configuration files (see paragraphs 22, 25).
Contact Information
Any inquiry concerning this communication or earlier communications from the examiner should be directed to Umut Onat whose telephone number is (571)270-1735. The examiner can normally be reached M-Th 9:00-7:30.
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, Kevin L Young can be reached at (571) 270-3180. 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.
/UMUT ONAT/Primary Examiner, Art Unit 2194