# US 2018/0322136 A1 · Plug-in function platform and methods

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2018/0322136 A1
- Document ID: US20180322136A1
- Status: Published application
- Kind: A1
- Application number: 15/675,193
- Filed: 2017-08-11
- Published: 2018-11-08
- Earliest claimed: 2017-05-05
- Assignees: Esoptra NV
- Applicants: Esoptra NV
- Inventors: Paul CARPENTIER; Jan VAN RIEL
- Web page: https://patentgrep.com/patent/US20180322136A1

## CPC

- G06F 16/168: {Details of user interfaces specifically adapted to file systems, e.g. browsing and visualisation, 2d or 3d GUIs (query results presentation G06F16/156)}
- G06F 9/44526: {Plug-ins; Add-ons}
- G06F 9/452: {Remote windowing, e.g. X-Window System, desktop virtualisation (protocols for virtual reality H04L67/131)}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 16/188: Virtual file systems
- G06F 3/04817: using icons (graphical or visual programming using iconic symbols G06F8/34)
- G06F 3/04842: Selection of displayed objects or displayed text elements (G06F3/0482 takes precedence)
- G06F 2009/45595: {Network integration; Enabling network access in virtual machine instances}
- H04L 67/02: based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- H04L 67/75: Indicating network or usage conditions on the user display
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A server executes in a virtual machine and facilitates execution of lightweight plug-in functions that respond to user interface commands from a client device. The functions augment the commands with additional processing even though they may not implement a user interface, they generate data in real time, they access any data repository or data source, can be written in any programming language, and they perceive that they have infinite storage. The client device need not have custom software and implements a traditional file-folder user interface using standard applications. Folders and file contents displayed on the client device need not exist until specifically requested by the user. Plug-in functions have their own root file system but may share a network namespace. Data may be input to a function using a folder name or a micro Web server. Two functions share a database connection to a remote computer. Files stored in a local cache are moved to remote storage transparently when a function needs more space.

## Claims

### Claim 1

A method of reading data on a client computing device, said method comprising:
sending, from a computer server to a client computing device, user interface data that includes an icon representing a folder of information for display, whereby said icon is displayed on said client computing device;
receiving at a remote computer a pathname and a command from said computing device indicating a selection of a user on said user interface to open said folder;
executing a plug-in function of said remote computer with said pathname and said command;
returning from said plug-in function to said computing device a list of contents of said folder, whereby said contents of said folder are displayed in a hierarchy on said user interface, said contents not yet existing on any storage device.

### Claim 2 (depends on 1)

A method as recited in claim 1 wherein said contents do not exist in said hierarchy on said any storage device.

### Claim 3 (depends on 1)

A method as recited in claim 1 wherein said plug-in function only returns said list and does not implement said user interface.

### Claim 4 (depends on 1)

A method as recited in claim 1 further comprising:
displaying said contents in said hierarchy using a presentation application of said computing device.

### Claim 5 (depends on 1)

A method as recited in claim 1 wherein said contents include at least one file folder.

### Claim 6 (depends on 1)

A method as recited in claim 1 wherein said contents include at least one file that does not yet exist.

### Claim 7 (depends on 1)

A method as recited in claim 1 wherein said command is the HTTP list command.

### Claim 8 (depends on 1)

A method as recited in claim 1 wherein compiled code of a server of said remote computer calls said plug-in function, said plug-in function not being part of said compiled code.

### Claim 9

A method of reading data on a client computing device, said method comprising:
sending, from a computer server to a client computing device, user interface data that includes an icon representing a file of information for display, said file not yet existing on any storage device, whereby said icon is displayed on said client computing device;
receiving at a remote computer a pathname and a command from said computing device indicating a selection of a user on said user interface to open said file;
executing a plug-in function of said remote computer with said pathname and said command in order to create said file;
returning from said plug-in function to said computing device the contents of said file, whereby said contents of said file are displayed on said client computing device using an application of said client computing device.

### Claim 10 (depends on 9)

A method as recited in claim 9 further comprising:
displaying a hierarchy of said user interface that includes said file icon in a folder.

### Claim 11 (depends on 9)

A method as recited in claim 9 wherein said plug-in function only returns said file contents and does not implement said user interface.

### Claim 12 (depends on 9)

A method as recited in claim 9 wherein said command is the HTTP get command.

### Claim 13 (depends on 9)

A method as recited in claim 9 wherein compiled code of a server of said remote computer calls said plug-in function, said plug-in function not being part of said compiled code.

### Claim 14

A method of writing data from a client computing device, said method comprising:
sending, from a computer server to a client computing device, user interface data that includes an icon representing a folder of information for display, whereby said icon is displayed on said client computing device;
receiving at a remote computer from said client computing device, a pathname, contents of a file, and a command indicating a selection of a user on said user interface to add said file to said folder;
executing a plug-in function of said remote computer with said pathname and said command and storing said file in storage, said plug-in function not implementing any user interface for displaying said file on said client computing device;
returning from said plug-in function to said computing device a name of said file for displaying on said client device within said folder of said user interface.

### Claim 15 (depends on 14)

A method as recited in claim 14 further comprising:
displaying said contents of said file using a presentation application of said computing device.

### Claim 16 (depends on 14)

A method as recited in claim 14 wherein said command is the HTTP put command.

### Claim 17 (depends on 14)

A method as recited in claim 14 wherein compiled code of a server of said remote computer calls said plug-in function, said plug-in function not being part of said compiled code.

### Claim 18 (depends on 14)

The method as recited in claim 14 further comprising:
said plug-in function creating a new file based upon said file;
storing said new file in storage; and
returning by said plug-in function a name of said new file for displaying on said client computing device within said folder of said user interface.

### Claim 19

A method of executing plug-in functions on a computer server, said method comprising:
fetching layers of executable code for first and second plug-in functions from a repository and unpacking said layers into a root file system folder for each of said plug-in functions onto a local disk of said computer server;
loading, by a server process executing on a virtual machine of said computer server said executable code of said plug-in functions and executing each of said plug-in functions, each of said plug-in functions having its own root file system and each of said plug-in functions sharing the same namespace;
retrieving, by said first plug-in function, first data from a remote enterprise computer using a network of said virtual machine;
retrieving, by said second plug-in function, second data from a remote enterprise computer using said network of said virtual machine; and
each of said first and second plug-in functions using said respective first and second data to create respective first and second data files which are each sent to a client computing device.

### Claim 20 (depends on 19)

A method as recited in claim 19 wherein said plug-in functions share said same namespace by sharing the same IP stack.

### Claim 21 (depends on 19)

A method as recited in claim 19 wherein said network is a subnet.

### Claim 22 (depends on 19)

A method as recited in claim 19 wherein said network uses a single VPN of said server process.

### Claim 23 (depends on 19)

A method as recited in claim 19 wherein said first and second plug-in functions use said same network to access a database of said remote enterprise computer.

### Claim 24

A method of executing a plug-in function on a computer server, said method comprising:
calling a plug-in function by a server process on a server computer, said plug-in function having its own root file system but not having its own namespace;
executing on said computer server said plug-in function and receiving a command from a remote user computing device;
reading data from a data source;
creating a file based on said data and sending said file to said remote user computing device for display of said file, said plug-in function not implementing any user interface on said remote user computing device

### Claim 25 (depends on 24)

A method as recited in claim 24 wherein said plug-in function shares a namespace with a second plug-in function executing on said computer server.

### Claim 26 (depends on 24)

A method as recited in claim 24 further comprising:
receiving a path of a file-folder hierarchy from said remote user computing device.

### Claim 27 (depends on 24)

A method as recited in claim 24 further comprising:
displaying said file on said remote user computing device using a presentation application.

### Claim 28

A method of reading data on a client computing device, said method comprising:
sending, from a computer server to a client computing device, user interface data that includes an icon representing a folder of information for display, whereby said icon is displayed on said client computing device;
receiving at a remote computer a command from said computing device indicating a selection by a user on said user interface to create a new folder having a folder name input by said user;
executing a plug-in function of said remote computer to create said new folder with said folder name and to return said new folder for display on said user interface of said computing device; and
executing said plug-in function using said folder name as input in order to produce a result that is dependent upon said folder name.

### Claim 29 (depends on 28)

A method as recited in claim 28 further comprising:
displaying said new folder in a hierarchy on said user interface, said new folder not having any contents; and
executing said plug-in function using said folder name as input only after receiving a command indicating that said user has selected said new folder to be opened.

### Claim 30 (depends on 28)

A method as recited in claim 28 further comprising:
displaying said new folder in a hierarchy on said user interface; and
executing said plug-in function using said folder name as input before receiving a command indicating that said user has selected said new folder to be opened.

### Claim 31 (depends on 29)

A method as recited in claim 29 further comprising:
using said folder name as a search term by said plug-in function and finding at least one digital object based upon said search term; and
sending an identifier of said at least one digital object to said computing device for display within said new folder.

### Claim 32 (depends on 30)

A method as recited in claim 30 further comprising:
using said folder name as a search term by said plug-in function and finding at least one digital object based upon said search term; and
storing said at least one digital object in a cache of said remote computer.

### Claim 33 (depends on 32)

A method as recited in claim 32 further comprising:
receiving a command indicating that said user has selected said new folder to be opened; and
sending, from said cache, an identifier of said at least one digital object to said computing device for display within said new folder.

### Claim 34 (depends on 29)

A method as recited in claim 29 further comprising:
creating at least one digital object based upon said search term; and
sending an identifier of said at least one digital object to said computing device for display within said new folder.

### Claim 35 (depends on 30)

A method as recited in claim 30 further comprising:
creating at least one digital object based upon said search term; and
storing said at least one digital object in a cache of said remote computer.

### Claim 36

A method of writing data from a client computing device, said method comprising:
receiving at a remote computer a command from a client computing device indicating a selection by a user on a user interface to create a new folder having a folder name input by said user;
executing a plug-in function of said remote computer to create said new folder with said folder name and to return said new folder for display on said user interface of said computing device;
receiving at said remote computer a digital object that was added to said new folder by said user using said user interface of said computing device; and
executing said plug-in function and processing said digital object using said folder name to produce a result that is dependent upon said folder name.

### Claim 37 (depends on 36)

A method as recited in claim 36 further comprising:
displaying on said client computing device an icon representing a parent folder; and
receiving said selection by said user that indicates creation of said new folder within said parent folder.

### Claim 38 (depends on 36)

A method as recited in claim 36 further comprising:
executing said plug-in function in order to store said digital object using said folder name.

### Claim 39 (depends on 36)

A method as recited in claim 36 further comprising:
executing said plug-in function in order to add said folder name as metadata of said digital object and to store said digital object along with said metadata.

### Claim 40 (depends on 36)

A method as recited in claim 36 further comprising:
executing said plug-in function in order to insert said folder name into said digital object and to store said digital object along with said inserted folder name.

### Claim 41 (depends on 36)

A method as recited in claim 36 wherein said new folder does not contain said added digital object.

### Claim 42

A method of inputting metadata from a client computing device, said method comprising:
executing a plug-in function of a remote computer in daemon mode and displaying on a client computing device a user interface that includes a folder icon representing said plug-in function and a user input icon;
receiving at said remote computer a command from said computing device indicating a selection by a user on said user interface of said user input icon;
sending, by said plug-in function, a Web page for display on said computing device;
receiving, by said plug-in function, a metadata value input by said user on said Web page; and
executing said plug-in function using said metadata value as input in order to produce a result that is dependent upon said metadata value.

### Claim 43 (depends on 42)

A method as recited in claim 42 further comprising:
using said metadata value as a search term by said plug-in function and finding at least one digital object based upon said metadata value; and
sending an identifier of said at least one digital object to said computing device for display within said folder icon.

### Claim 44 (depends on 42)

A method as recited in claim 42 further comprising:
receiving a digital object from said computing device and storing said digital object along with said metadata value.

### Claim 45 (depends on 42)

A method as recited in claim 42 further comprising:
storing said metadata value in a file associated with said folder in a cache of said remote computer, wherein said file not being visible to said user of said computing device.

### Claim 46 (depends on 42)

A method as recited in claim 42 further comprising:
implementing a micro Web server by said plug-in function in order to display said user input icon and to display said Web page.

### Claim 47

A method of inputting metadata from a client computing device, said method comprising:
receiving at a remote computer a command from a client computing device indicating a selection by a user on a user interface to create a new folder having a folder name input by said user;
executing a plug-in function of said remote computer to create said new folder with said folder name and to return said new folder for display on said user interface of said computing device;
assigning, by said plug-in function, a metadata value to said folder name input by said user; and
executing said plug-in function using said metadata value as input in order to produce a result that is dependent upon said metadata value.

### Claim 48 (depends on 47)

A method as recited in claim 47 further comprising:
using said metadata value as a search term by said plug-in function and finding at least one digital object based upon said metadata value; and
sending an identifier of said at least one digital object to said computing device for display within said new folder.

### Claim 49 (depends on 47)

A method as recited in claim 47 further comprising:
receiving at said remote computer a digital object that was added to said new folder by said user using said user interface of said computing device; and
storing said digital object along with said metadata value.

### Claim 50 (depends on 47)

A method as recited in claim 47 further comprising:
storing said metadata value in a file associated with said folder in a cache of said remote computer, wherein said file not being visible to said user of said computing device.

### Claim 51

A method of communicating with a database from a client computing device, said method comprising:
executing a first plug-in function of a remote computer in daemon mode and opening a connection with a database by said first plug-in function;
receiving a request at said remote computer from said client computing device to access said database via a second plug-in function of said remote computer;
executing said second plug-in function of said remote computer and sending said request to said executing first plug-in function;
accessing said database by said first plug-in function with said request and receiving a response from said database;
sending said response from said first plug-in function to said second plug-in function; and
delivering said response from said second plug-in function to said client computing device.

### Claim 52 (depends on 51)

A method as recited in claim 51 wherein said request is a read request and wherein said response is a digital object.

### Claim 53 (depends on 51)

A method as recited in claim 51 wherein said request is a write request that includes a digital object, said method further comprising:
writing said digital object into said database, wherein said response is an acknowledgement of said writing.

### Claim 54 (depends on 51)

A method as recited in claim 51 wherein said first and second plug-in functions are the same function and are executed as different processes.

### Claim 55 (depends on 51)

A method as recited in claim 51 wherein said first and second plug-in functions share the same network namespace.

### Claim 56

A method of displaying data on a client computing device, said method comprising:
sending, from a computer server to a client computing device, user interface data that includes an icon representing a folder of information for display, whereby said icon is displayed on said client computing device;
receiving at said computer server a pathname and a user interface command from said client computing device indicating an action with respect to said icon of said user interface;
executing a plug-in function of said computer server using said pathname and said user interface command to implement said user interface command;
executing said plug-in function in order to implement an additional step not included within said user interface command; and
returning a result to said client computing device for display.

### Claim 57 (depends on 56)

A method as recited in claim 56 wherein said user interface command is to create a new folder of information, said method further comprising:
receiving a name for said new folder from said client computing device and using said name as an argument to said plug-in function to implement said additional step.

### Claim 58 (depends on 56)

A method as recited in claim 56 wherein said user interface command is to write a new file of information, said method further comprising:
receiving at said computer server said new file; and
creating data based upon said new file to implement said additional step.

### Claim 59 (depends on 58)

A method as recited in claim 58 further comprising:
returning said created data to said client computing device for display.

### Claim 60 (depends on 58)

A method as recited in claim 58 further comprising:
writing said created data to permanent storage.

### Claim 61 (depends on 56)

A method as recited in claim 56 wherein said user interface command is to write a new file of information, said method further comprising:
receiving at said computer server said new file; and
writing said new file to storage other than within said folder to implement said additional step.

### Claim 62 (depends on 56)

A method as recited in claim 56 wherein said user interface command is to write a new file of information, said method further comprising:
receiving at said computer server said new file; and
writing said new file to storage with metadata unique said folder to implement said additional step.

### Claim 63 (depends on 62)

A method as recited in claim 62 wherein said metadata is the name of said folder.

### Claim 64 (depends on 62)

A method as recited in claim 62 wherein said metadata has been previously input by a user of said client computing device.

### Claim 65 (depends on 56)

A method as recited in claim 56 wherein said user interface command is to open said folder of information, said method further comprising:
returning contents of said folder from said computer server to said client computing device, said contents including a name of a file that does not yet exist.

### Claim 66 (depends on 56)

A method as recited in claim 56 wherein said user interface command is to read a file having a file name present in said folder, said method further comprising:
creating said file to implement said additional step; and
returning said file to said client computing device.

### Claim 67 (depends on 56)

A method as recited in claim 56 wherein said user interface command is to remove a file of said folder or said folder, said method further comprising:
performing additional processing based upon a name of said file or said folder, or based upon contents of said file or said folder, in order to implement said additional step.

### Claim 68 (depends on 56)

A method as recited in claim 56 wherein said user interface command is to move a file of said folder or subfolder, said method further comprising:
performing additional processing based upon a name of said file or said folder, or based upon contents of said file or said folder, in order to implement said additional step.

### Claim 69

In a virtual machine of a computer, a method of writing from a plug-in function to a file system, said method comprising:
executing a plug-in function of said virtual machine at the request of a first user of a remote computing device;
receiving a file at said plug-in function having a file name;
creating a unique file name for said file name based upon an identifier of said plug-in function and an identifier of said first user; and
writing said file to a user folder of a file system on a local disk of said computer by said plug-in function using said unique file name to identify said file on said local disk.

### Claim 70 (depends on 69)

A method as recited in claim 69, further comprising:
writing files to said local disk by said plug-in function without said plug-in function allocating disk space on said local disk.

### Claim 71 (depends on 70)

A method as recited in claim 70, wherein said virtual machine includes an executing server process, said method further comprising:
allocating space on said local disk by said server process.

### Claim 72 (depends on 71)

A method as recited in claim 71, further comprising:
swapping out at least one file from said local disk to a remote object store by said server process.

### Claim 73 (depends on 72)

A method as recited in claim 72, wherein said at least one file having a same unique name on said local disk and in said remote object store.

### Claim 74 (depends on 70)

A method as recited in claim 70, wherein said virtual machine includes an executing server process, said method further comprising:
moving files from said local disk to a remote object store by said server process without the involvement of said plug-in function.

### Claim 75 (depends on 70)

A method as recited in claim 70 wherein the amount of said files written to said local disk by said plug-in function is limited by a capacity of said object store.

### Claim 76 (depends on 70)

A method as recited in claim 70 wherein the amount of said files written to said local disk by said plug-in function is limited by an operating system of said computer.

### Claim 77 (depends on 69)

A method as recited in claim 69 wherein said receiving said file includes inputting said file from said remote computing device, creating said file, inputting said file from a remote service, or modifying an existing a file.

### Claim 78 (depends on 69)

A method as recited in claim 69 wherein said unique file name is also based upon an identifier of an organization of said user.

### Claim 79 (depends on 69)

A method as recited in claim 69 further comprising:
executing said plug-in function at the request of a second user of a second remote computing device; and
writing a second file having a second file name that is the same as said file name of said file to said user folder of said file system on said local disk of said computer using a second unique file name to identify said second file on said local disk.

### Claim 80 (depends on 69)

A method as recited in claim 69 further comprising:
creating said unique file name by combining said file name, said identifier of said plug-in function and said identifier of said first user.

### Claim 81

In a virtual machine of a computer, a method of managing space of a local disk of said computer, said method comprising:
determining, by a server process of said virtual machine, whether to make more storage space available on said local disk;
when it is determined to make more storage space available, selecting a stored file to be removed from said local disk;
copying said stored file from said local disk to remote storage; and
freeing up space on said local disk that had been used by said stored file.

### Claim 82 (depends on 81)

A method as recited in claim 81, wherein said steps of said method execute in the background and wherein said determining occurs periodically or occurs when it is determined that space available on said local disk is below a threshold number.

### Claim 83 (depends on 81)

A method as recited in claim 81, further comprising:
receiving a request from another process of said virtual machine to write a new file to said local disk;
determining whether to make more storage space available on said local disk based upon said request; and
writing said new file to said local disk after said freeing up space.

### Claim 84 (depends on 83)

A method as recited in claim 83, further comprising:
determining whether to make more storage space available on said local disk also based upon storage space available or upon Mode space available on said local disk.

### Claim 85 (depends on 83)

A method as recited in claim 83, wherein said request is a request to write said new file to a user folder of a file system on said local disk.

### Claim 86 (depends on 81)

A method as recited in claim 81, further comprising:
before said determining, writing said stored file to a user folder of a file system on said local disk by another process of said virtual machine;
after said copying, reading said stored file by said another process of said virtual machine by requesting said stored file from said user folder of said file system; and
moving said stored file from said remote storage to said local disk by said server process.

### Claim 87 (depends on 81)

A method as recited in claim 81, further comprising:
selecting said stored file based upon said stored file being least recently used.

### Claim 88 (depends on 81)

A method as recited in claim 81, further comprising:
copying said stored file to remote storage and storing said stored file using the same name used to store said stored file on said local disk.
