WO2016028973A1 - Plug-in manager and deployment system - Google Patents
Plug-in manager and deployment system Download PDFInfo
- Publication number
- WO2016028973A1 WO2016028973A1 PCT/US2015/046034 US2015046034W WO2016028973A1 WO 2016028973 A1 WO2016028973 A1 WO 2016028973A1 US 2015046034 W US2015046034 W US 2015046034W WO 2016028973 A1 WO2016028973 A1 WO 2016028973A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- plug
- user
- user device
- ins
- metadata
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
- G06F9/4451—User profiles; Roaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
Definitions
- a plug-in is a software component that adds one or more specific features to an existing software system. Plug-ins can be developed by the original software system creators, by third- party entities, and can even be custom developed in-house by an organization that uses the existing software system.
- plug-ins are available for a given software system.
- some plug-ins may not be reliable or relevant for a particular purpose, industry, department, field, geographic location, etc.
- administrators responsible for obtaining/purchasing the plug-ins may have little insight into how many users would use a particular plug-in, which plug-ins are desired by the users, which plug-ins are desired by particular departments, etc.
- a plug-in catalog server can retrieve a plug-in for a software application, add the plug-in to a list of available plug-ins, transmit the list of available plug-ins to a user device, receive a message from the user device that indicates a vote for the plug-in, add the plug-in to a plug-in catalog based at least in part on the vote, receive a request for the plug-in from the user device, receive feedback associated with the plug-in from the user device, and store the feedback in the plug-in catalog.
- the plug-in catalog server can run a plug-in crawler that detects plug-ins from one or more remote sources.
- the plug-in catalog server can generate a user profile, where the user profile includes metadata corresponding to a user of a second user device and the plug-in catalog server adds the user profile to a user group based on the metadata.
- the plug-in catalog server can associate a second plug-in with the user group based on metadata associated with the second plug-in and transmit the second plug-in to the second user device based on the user profile being in the user group.
- the plug-in catalog server can increment a vote counter based on the message that indicates a vote.
- the plug-in catalog server can add the plug-in to the plug-in catalog based on an indication that the plug-in was approved by an administrator.
- the plug-in catalog server can determine usage data of the user device associated with the plug-in, receive a request for a plug-in report from an administrator, generate the plug-in report using the usage data and the feedback associated with the plug-in, and transmit the report to the administrator.
- the plug-in catalog server can retrieve an update for the plug-in and transmit the update to the user device.
- the plug-in can include metadata
- the plug-in catalog server can index the metadata, receive a query from a second user device, add an indication of the plug-in to a results list based on determining that at least part of the query matches at least party of the indexed metadata, and transmit the results list to the second user device.
- FIG. 1 is a diagram depicting a schematic of a plug-in management network, consistent with certain disclosed embodiments
- FIG. 2 is a flow diagram illustrating an example of adding new plug-ins to a catalog, consistent with certain disclosed embodiments
- FIG. 3 is a flow diagram illustrating an example of adding new plug-ins to a catalog, consistent with certain disclosed embodiments
- FIG. 4 is a flow diagram illustrating an example of adding new plug-ins to a catalog, consistent with certain disclosed embodiments
- FIG. 5 is a schematic depicting an example user interface displaying selectable sets of plug-ins, consistent with certain disclosed embodiments
- FIG. 6 is a flow diagram illustrating an example of providing for user collaboration regarding plug-ins in a plug-in catalog, consistent with certain disclosed embodiments
- FIG. 7 is a flow diagram illustrating an example of pushing plug-ins to a user group, consistent with certain disclosed embodiments
- FIG. 8 is a flow diagram illustrating an example of updating plug-ins, consistent with certain disclosed embodiments.
- FIG. 9 is a flow diagram illustrating an example of indexing plug-ins and performing a search, consistent with certain disclosed embodiments.
- FIG. 10 is a diagram illustrating an example of a hardware system for providing a plug-in management system, consistent with certain disclosed embodiments.
- FIG. 1 is a diagram depicting a schematic of a plug-in management network, consistent with certain disclosed embodiments.
- FIG. 1 depicts a plug-in management network 100, including a plug-in catalog server 110, a first user 120, a second user 130, and an administrator 140.
- Plug-in catalog server 110 can be in communication with first user 120, second user 130, and administrator 140.
- plug-in catalog server 110 can be in communication with first user 120, second user 130, and administrator 140 via a direct connection and/or a network connection (e.g., a local area network or a wide area network such as the Internet).
- a network connection e.g., a local area network or a wide area network such as the Internet.
- a "plug-in” refers to a software component that adds one or more specific features to an existing software system.
- a "plug-in” can also refer to a script.
- a script is a small non-compiled program written for a scripting language or command interpreter.
- a "plug-in” can additionally refer to a piece of stand-alone software that does not require integration with an existing software system.
- the existing software system can be an exploration and production sector (E&P) software system that allows users to interpret seismic data, perform well correlation, build reservoir models suitable for simulation, submit and visualize simulation results, calculate volumes, produce maps, and design development strategies to maximize reservoir exploitation.
- a plug-in can be designed that improves the functionality of the E&P software system by, for example, integrating seismic, geological, geomechanical, microseismic, and reservoir simulation capabilities offered by the E&P software system, providing fracture simulation models and planar fracture models that are not provided by are improve the models provided by the E&P software system, and enabling production evaluation and history matching capabilities that are not enabled or improve the capabilities enabled by the E&P software system.
- plug-in catalog server 110 can represent one or more computing devices in one or more locations that catalogs and deploys plug-ins for one or more software systems and provides for collaboration among users and between users and administrators (e.g., first user 120, second user 130, and administrator 140).
- plug-in catalog server 110 can represent a distributed network of servers.
- plug-in catalog server 1 10 can be, for example, a personal computer, a mainframe computer, or any other device with a network connection capable of maintaining a plug-in catalog, deploying plug-ins, and providing for collaboration between users and administrators.
- plug-in catalog server 110 can be a specialized device specifically designed to perform the functions described herein.
- plug-in catalog server 1 10 can maintain and deploy a catalog of plug-ins for a particular software system.
- an organization may utilize an organization-wide software system that employees of the organization utilize, and plug-in catalog server 1 10 can maintain and deploy a catalog of plug-ins for the organization-wide software system.
- plug-in catalog server 1 10 can maintain a catalog of plug-ins for multiple software systems utilized by one or more organizations.
- plug-in catalog server 110 can detect types of software systems installed on user devices, and can limit the plug-ins that are available to a particular user device based on the type of software system installed on the user device.
- First user 120, second user 130, and administrator 140 can communicate with plug-in catalog server 1 10 to, for example, add plug-ins to the catalog, search for plug-ins, vote for plug- ins, collaborate regarding plug-ins, retrieve plug-ins, and update plug-ins, as described in further detail below.
- FIG. 1 The example depicted in FIG. 1 is merely for the purpose of illustration, and is not intended to be limiting.
- additional servers, additional administrators, and additional or fewer users may be used as part of a plug-in management network.
- the plug-in management network depicted and processes described are merely a simplified example of a plug-in management network, consistent with certain disclosed embodiments, but such an example is not intended to be limiting.
- FIG. 2 is a flow diagram illustrating an example of adding new plug-ins to a catalog, consistent with certain disclosed embodiments.
- the method can be performed on a computing device, such as, for example, plug-in catalog server 110 in FIG. 1.
- the example of a method shown can begin in 200, when the computing device retrieves a new plug-in.
- the computing device can run a plug-in crawler that detects new plug-ins from one or more remote sources.
- the plug-in crawler can communicate with one or more websites, one or more remote folders, one or more cloud storage platforms, one or more servers, etc. to determine that the new plug-in is available.
- a user can instruct the computing device to retrieve the new plug-in (e.g. via administrator 140 in FIG. 1).
- the computing device can receive one or more plug-ins pushed out by a user of the plug-in catalog (e.g., first user 120 or second user 130 in FIG. 1).
- the user can push out a plug-in to the computing device with instructions to add the plug-in to the catalog, push the plug-in to one or more specified users, push the plug-in to one or more user groups, etc.
- the computing device can determine whether the new plug-in was approved.
- an administrator can install and run the plug-in on his/her device and test the plug-in for security, functionality, compatibility with the software system, compatibility with other plug-ins, etc. Based on the testing, the administrator can indicate whether the plug-in is approved.
- the plug-in can be, for example, deleted, added to an ignore list, stored with an indication that it is not approved, etc.
- the computing device can proceed to 220, and the plug-in can be added to a plug-in catalog maintained by the computing device.
- a plug-in catalog can include a list of every approved plug-in that is available to one or more users of the plug-in catalog.
- the plug-in catalog may additionally include metadata associated with each plug-in.
- metadata can include a name of the plug-in, a description of the plug-in, an author of the plugin, a category of the plug-in, a user group associated with the plug-in, a location of an image associated with the plug-in, an industry associated with the plug-in, etc.
- the metadata can be displayed for users of the plug-in catalog.
- a user of the plug-in catalog e.g. via first user 120 in FIG. 1
- a list of plug-ins can be displayed for the user via a Hypertext Transfer Protocol (HTTP) webpage.
- HTTP Hypertext Transfer Protocol
- the HTTP webpage can display a list of the plug-in names, as well as additional metadata, such as, for example, a description of each plug-in in the list.
- the plug-in server can receive a request to install a plug-in from the user.
- a user can access the plug-in catalog (e.g. via the HTTP webpage) and request an approved plug-in for installation on the user's device.
- the plug-in server can transmit the plug-in to the user's device, and the user's device can subsequently install the plug-in. For example, the next time the user starts the software system, the plug-in can automatically install on the user's device [0044] While the operations depicted in FIG. 2 have been described as performed in a particular order, the order described is merely exemplary, and various different sequences of operations can be performed, consistent with certain disclosed embodiments. Additionally, the operations are described as discrete steps merely for the purpose of explanation, and, in some embodiments, multiple operations may be performed simultaneously and/or as part of a single computation. Further, the operations described are not intended to be exhaustive or absolute, and various operations can be inserted or removed.
- FIG. 3 is a flow diagram illustrating an example of adding new plug-ins to a catalog, consistent with certain disclosed embodiments.
- the method can be performed on a computing device, such as, for example, plug-in catalog server 110 in FIG. 1.
- the example of a method shown can begin in 300, when the computing device retrieves an indication of a new plug-in.
- the computing device can run a plug-in crawler that detects new plug-ins from one or more remote sources.
- the plug-in crawler can communicate with one or more websites, one or more remote folders, one or more cloud storage platforms, one or more servers, etc. to determine that the new plug-in is available.
- a user can instruct the computing device to add the indication of the new plug-in (e.g. via administrator 140 in FIG. 1).
- the indication of the new plug-in can include metadata associated with the plug-in but not the plug-in itself.
- the computing device can receive one or more plug-ins pushed out by a user of the plug-in catalog (e.g., first user 120 or second user 130 in FIG. 1).
- a user of the plug-in catalog e.g., first user 120 or second user 130 in FIG. 1.
- the user can push out a plug-in to the computing device with instructions to add the plug-in to the catalog, push the plug-in to one or more specified users, push the plug-in to one or more user groups, etc.
- the computing can add the plug-in to a list of available plug-ins.
- a list of available plug-ins can be a list of plug-ins that are available (e.g. for purchase and/or download) but are currently not in the plug-in catalog.
- the list of available plug-ins may include metadata associated with each available plug-in.
- metadata can include a name of the plug-in, a description of the plug-in, an author of the plugin, a category of the plug-in, a user group associated with the plug-in, a location of an image associated with the plug- in, etc.
- the metadata can be displayed for users viewing the available plug-ins.
- a user can access the list of available plug-ins via a browser interface, and the list of available plug-ins can be displayed for the user via an HTTP webpage.
- the HTTP webpage can display a list of the plug-in names, as well as additional metadata for the user.
- the computing device can receive votes for the plug-in.
- a user can view the list of available plug-ins and express an interest in obtaining the plug-in by indicating a vote for the plug-in (e.g., by clicking on a vote option).
- a vote counter can be associated with each available plug-in and the vote counter can be incremented with each vote.
- the computing device can, in 330, obtain the plug-in.
- an administrator can view the vote counter and provide instructions to the computing device to obtain the plug-in.
- the plug-in can be obtained by purchasing one or more licenses for the plug-in. For example, the number of purchased licenses can be based on the vote counter.
- the plug-in can be obtained by downloading the plug-in to the plug-in catalog server.
- the computing device can determine whether the new plug-in was approved.
- an administrator can install and run the plug-in on his/her device and test the plug-in for security, functionality, compatibility with the software system, compatibility with other plug-ins, etc. Based on the testing, the administrator can indicate whether the plug-in is approved.
- the plug-in can be, for example, deleted, added to an ignore list, stored with an indication that it is not approved, etc.
- the computing device can proceed to 350, and the plug-in can be added to the plug-in catalog maintained by the computing device.
- FIG. 4 is a flow diagram illustrating an example of adding new plug-ins to a catalog, consistent with certain disclosed embodiments. The method can be performed on a computing device, such as, for example, plug-in catalog server 110 in FIG. 1.
- the example of a method shown can begin in 400, when the computing device retrieves a new plug-in.
- the computing device can run a plug-in crawler that detects new plug-ins from one or more remote sources.
- the plug-in crawler can communicate with one or more websites, one or more remote folders, one or more cloud storage platforms, one or more servers, etc. to determine that the new plug-in is available.
- a user can instruct the computing device to retrieve the new plug-in (e.g. via administrator 140 in FIG. 1).
- the computing device can receive one or more plug-ins pushed out by a user of the plug-in catalog (e.g., first user 120 or second user 130 in FIG. 1).
- the user can push out a plug-in to the computing device with instructions to add the plug-in to the catalog, push the plug-in to one or more specified users, push the plug-in to one or more user groups, etc.
- the computing device can group the plug-ins into categories.
- the plug-ins can be grouped into categories automatically based on metadata associated with the plug-in.
- the metadata can indicate an industry associated with the plug-in, and each category can be associated with one or more industries.
- the metadata can indicate an author of the plug-in, such as, the organization that maintains the plug-in catalog, the creator of the software system, a trusted third party, or an unknown third party, and each category can be associated with one or more authors.
- the computing device can determine whether the new plug-in was approved.
- an administrator can install and run the plug-in on his/her device and test the plug-in for security, functionality, compatibility with the software system, compatibility with other plug-ins, etc. Based on the testing, the administrator can indicate whether the plug-in is approved.
- the administrator may only test plug-ins that are in a particular group. For example, some plug-ins that are available may not be relevant to the organization. Accordingly, the plug-ins can be grouped into a category based on the industry metadata, and the administrator may not test the plug-ins in that group. As an additional example, plug-ins created by the organization, by the creator of the software system, and/or by a trusted third party may be grouped into a category that is tested by the administrator, while plug- ins created by unknown third parties may be grouped into a category that is not tested by the administrator.
- plug-ins that are not initially tested by the administrator can be voted on, as discussed above, and the administrator may subsequently test the plug-in after a sufficient number of votes are received for the plug-in.
- the plug-in can be, for example, deleted, added to an ignore list, stored with an indication that it is not approved, etc.
- the computing device can proceed to 430, and the plug-in can be added to a plug-in catalog maintained by the computing device.
- FIG. 5 is a schematic depicting an example user interface displaying selectable sets of plug-ins, consistent with certain disclosed embodiments.
- User interface 500 can be, for example, an HTML webpage displayed on a web browser running on a user's computer.
- user interface 500 can be displayed on first user 120 or second user 130 in FIG. 1.
- the selectable sets of plug-ins include available plug-ins 510, approved plug-ins 520, and installed plug-ins 530. If the user selects available plug-ins 510, a list of the available plug- ins can be displayed for the user in the web browser. As described above, the list of available plug-ins can include plug-ins that are available (e.g. for purchase and/or download) but are currently not in the plug-in catalog (e.g., plug-ins that have not been approved). The list of available plug-ins can be displayed along with metadata associated with each plug-in (e.g., name, description, etc.). In some embodiments, the user can vote on available plug-ins, as described above.
- a list of the plug-ins in the plug-in catalog can be displayed for the user in the web browser.
- the plug-in catalog can be a list of every approved plug-in that is available to one or more users of the plug-in catalog.
- the plug-in catalog can be displayed along with metadata associated with each plug-in (e.g., name, description, etc.).
- the user may only be able to view plug-ins that are associated with a group of which the user is a member, as described above.
- a list of the plug-ins installed on the user's device can be displayed for the user in the web browser.
- the list of the plug-ins installed can be displayed along with metadata associated with each plug-in (e.g., name, description, etc.).
- the user may able to check for updates for plug-ins, manage plug-ins, and/or delete plug-ins by interacting with the list of the plug-ins installed.
- the example user interface depicted in FIG. 5 is merely an example, and is not intended to be limiting.
- the user interface can exist outside of a web browser (e.g., as a stand-alone application), can include additional or fewer selectable sets of plug-ins, can include additional information and/or options, etc.
- FIG. 6 is a flow diagram illustrating an example of providing for user collaboration regarding plug-ins in a plug-in catalog, consistent with certain disclosed embodiments.
- the method can be performed on a computing device, such as, for example, plug-in server 1 10 in FIG. 1.
- a method shown can begin in 600, when the computing device generates a user profile.
- a user profile can be generated for multiple users and/or every user of the plug-in catalog.
- the user profile can be created based on information provided by, for example, the user or an administrator.
- the information in the user profile can include, for example, one or more software systems that the user has used and/or has installed, plug-ins the user has used or has requested, a geographic location of the user, an expertise of the user, a level of professional experience of the user, an industrial field of the user, an educational background of the user, etc.
- the information can be stored as metadata of the user's profile.
- the information can be retrieved from a corporate system that contains the user's information (e.g., an employee database).
- the computing device can receive user usage data.
- user usage data can be tracked for multiple users and/or every user of the plug-in catalog.
- the user usage data can include, for example, a number of times a software system is used by the user, a number of times a plug-in is used by a user, an amount of time the software system is used by the user, an amount of time a plug-in is used by the user, etc.
- the user usage data can be retrieved from a management system that captures the user usage data.
- the user's usage data can be stored with the user's profile. For example, the user's usage data can be stored as metadata of the user's profile.
- the computing device can receive feedback from the user associated with a plug-in.
- the feedback can include feedback for an administrator of the plug-in catalog.
- a user performing a certain type of workflow can specify a group of plug-ins that should be packaged together to facilitate performing the workflow.
- a user can specify which plug-ins worked or did not work and/or rate the plug-ins based on a workflow.
- a user can specify suggested improvements to one or more plug-ins.
- the feedback can include communication between users of a plug-in.
- a user can post or respond to questions related to how other users are using the plug-in and/or questions related to a specific problem associated with a plug-in.
- a user can provide feedback about his/her experience with the plug-in and/or any problems with the plug-in.
- a user (or an administrator) can provide documentation related to the plug-in.
- the computing device can associate the feedback, the user usage data, and an indicator of the user's profile with the plug-in.
- users and/or administers can view feedback and user usage data when viewing the plug-ins via, for example, an HTML webpage.
- the computing device can receive a request for a report for one or more plug- ins.
- the computing device can receive a request for a report from an administrator (e.g., administrator 140 in FIG. 1).
- an administrator can request a report on which plug-ins are used the most based on a specified geographic location or a specified time period.
- an administrator can request a report on the user feedback for a plug-in.
- the computing device can generate the report.
- the computing device can use received feedback, usage data, and/or indicators of user profiles for multiple users of one or more plug-ins to generate the report.
- the computing device can transmit the generated report to the administrator.
- the generated report can be transmitted to administrator 140 in FIG. 1.
- FIG. 7 is a flow diagram illustrating an example of pushing plug-ins to a user group, consistent with certain disclosed embodiments.
- the method can be performed on a computing device, such as, for example, plug-in server 110 in FIG. 1.
- each user can be associated with a user profile that includes, for example, one or more software systems that the user has used and/or has installed, plug-ins the user has used or has requested, a geographic location of the user, an expertise of the user, a level of professional experience of the user, an industrial field of the user, an educational background of the user, etc.
- the computing device can group the users based on, for example, user profile information.
- users can be grouped based on one or more of software systems installed, plug-ins used, geographic location, expertise, industrial field, etc.
- the computing device can assign one or more plug-ins to a group.
- the plug-ins can be automatically assigned to a group.
- plug-ins associated with a specific industrial field can be automatically assigned to a group based on the industrial field.
- an administrator can assign the plug-ins to groups.
- the plug-ins can be pushed to each device associated with a user in the assigned user group (e.g., user 120 and user 130 in FIG. 1). Subsequently, in some embodiments, when a user starts the software system, the plug-in will automatically install on the user's device.
- the operations depicted in FIG. 7 have been described as performed in a particular order, the order described is merely exemplary, and various different sequences of operations can be performed, consistent with certain disclosed embodiments. Additionally, the operations are described as discrete steps merely for the purpose of explanation, and, in some embodiments, multiple operations may be performed simultaneously and/or as part of a single computation. Further, the operations described are not intended to be exhaustive or absolute, and various operations can be inserted or removed.
- FIG. 8 is a flow diagram illustrating an example of updating plug-ins, consistent with certain disclosed embodiments.
- the method can be performed on a computing device, such as, for example, plug-in server 1 10 in FIG. 1.
- the example of a method shown can begin in 800, when the computing device retrieves a new plug-in update.
- the computing device can run a plug-in crawler that detects new plug-ins updates from one or more remote sources.
- the plug-in crawler can communicate with one or more websites, one or more remote folders, one or more cloud storage platforms, one or more servers, etc. to determine that the new plug-in update is available.
- a user can instruct the computing device to retrieve the new plug-in update (e.g. via administrator 140 in FIG. 1).
- the computing device can determine whether the new plug-in update was approved.
- an administrator can install and run the plug-in update on his/her device and test the plug-in update for security, functionality, compatibility with the software system, compatibility with other plug-ins, etc. Based on the testing, the administrator can indicate whether the plug-in update is approved.
- the plug-in update can be, for example, deleted, added to an ignore list, stored with an indication that it is not approved, etc.
- the computing device can proceed to 820, and the plug-in update can be assigned to a user and/or a user group.
- the plug-in update can be assigned to a user group that includes all users that have the plug-in, all users that have requested the update, all users in a group that is associated with industrial field associated with the plug-in, etc.
- the update can be pushed to a device of the assigned user or to each device associated with a user in the user group (e.g., user 120 and user 130 in FIG. 1). Subsequently, in some embodiments, when a user starts the software system, the plug-in update will automatically install on the user's device.
- FIG. 9 is a flow diagram illustrating an example of indexing plug-ins and performing a search, consistent with certain disclosed embodiments.
- the method can be performed on a computing device, such as, for example, plug-in server 110 in FIG. 1.
- the example of a method shown can begin in 900, when the computing device retrieves a plug-in for indexing.
- the plug-in can be in a list of available plug-ins or approved plug-ins, as described above with regard to FIG. 5
- the computing device can index metadata of the plug-in. For example, a name and/or each relevant word of a description of the plug-in can be indexed.
- the computing device can additionally index feedback associated with the plug-in, user usage data associated with the plug-in, etc.
- the computing device can additionally index variable information associated with the plug-in, such as, for example, whether the plug-in has a license available, whether the plug-in has been approved, etc.
- 900 and 910 can be performed for each available plug-in and/or each approved plug-in to allow for searching the plug-ins.
- the computing device can receive a search query from a user.
- the query can include a name, an industry, a field, a geographic area, etc.
- the query can include an indication of a specific problem associated with plug-ins or a background, expertise, and/or geographical location associated with users of a plug-in catalog.
- the query can specify that only plug-ins with license(s) available should be included in the search and/or that only approved plug-ins should be included in the search.
- the computing device can search the indexed data using the query. If, in 930, indexed metadata of a plug-in matches the query, the plug-in can be added to a results list in 940. [0102] In 950, the results list can be transmitted to the user. For example, the results list can be transmitted to user 120 or user 130 in FIG. 1.
- FIG. 10 is a diagram illustrating an example of a hardware system for providing a plug- in management system, consistent with certain disclosed embodiments.
- the example system 1000 includes example system components that may be used. The components and arrangement, however, may be varied.
- a computer 1001 may include a processor 1010, a memory 1020, storage 1030, and input/output (I/O) devices (not pictured).
- the computer 1001 may be implemented in various ways and can be configured to perform any of the embodiments described above.
- the computer 1001 may be a general purpose computer, a mainframe computer, a specialized plug-in management computer, any combination of these components, or any other appropriate computing device.
- the computer 1001 may be standalone, or may be part of a subsystem, which may, in turn, be part of a larger system.
- the computer 1001 can implement, for example, plug-in server 110, as shown in FIG. 1.
- the processor 1010 may include one or more processing devices, such as, for example, a microprocessor from the Intel CoreTM family manufactured by IntelTM, the PhenomTM family manufactured by AMDTM, or the like.
- Memory 1020 may include one or more non-transitory storage devices configured to store information and/or instructions used by processor 1010 to perform certain functions and operations related to the disclosed embodiments, such as the methods of FIGs. 2-4 and 6-9.
- Storage 1030 may include a volatile, non- volatile, non-transitory, magnetic, semiconductor, tape, optical, removable, non-removable, or other type of computer- readable medium used as a storage device.
- storage 1030 can store plug- ins, plug-in metadata, user profiles, user feedback, user usage data, etc.
- memory 1020 may include one or more programs or subprograms including instructions that may be loaded from storage 1030 or elsewhere that, when executed by computer 1001, perform various procedures, operations, or processes consistent with disclosed embodiments.
- memory 1020 may include a plug-in management program 1025 for adding new plug-ins, providing for user collaboration, pushing plug-ins to user group, updating plug-ins, and/or indexing plug-ins and performing searches, according to various disclosed embodiments.
- Memory 1020 may also include other programs that perform other functions, operations, and processes, such as programs that provide communication support, Internet access, etc.
- the plug-in management program 1025 may be embodied as a single program, or alternatively, may include multiple sub-programs that, when executed, operate together to perform the functions and operations of the plug-in management program 1025 according to disclosed embodiments.
- plug-in management program can perform the process and operations of FIGs. 2-4 and 6-9 described above.
- the computer 1001 may communicate over a link with a network 1040.
- the link may be a direct communication link, a local area network (LAN), a wide area network (WAN), or other suitable connection.
- the network 1040 may include the Internet, as well as other networks, which may be connected to various systems and devices.
- the computer 1001 may include one or more input/output (I/O) devices (not pictured) that allow data to be received and/or transmitted by the computer 1001.
- I/O devices may also include one or more digital and/or analog communication I/O devices that allow the computer 1001 to communicate with other machines and devices.
- I/O devices may also include input devices such as a keyboard or a mouse, and may include output devices such as a display or a printer.
- the computer 1001 may receive data from external machines and devices and output data to external machines and devices via I/O devices.
- the configuration and number of input and/or output devices incorporated in I/O devices may vary as appropriate for various embodiments.
- Example uses of the system 1000 can be described by way of example with reference to the example embodiments described above.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
Systems, devices, and computer-implemented methods for managing and deploying plug-ins. A plug-in server can retrieve plug-ins, add plug-ins to a plug-in catalog, push plug-ins to user devices, provide plug-in updates to user devices, and index plug-ins for searching. Users of the plug-in server can view and/or search for available or approved plug-ins, obtain approved plug-ins, request available plug-ins, and provide feedback regarding plug-ins.
Description
PLUG-IN MANAGER AND DEPLOYMENT SYSTEM
Cross-Reference to Related Applications
[0001] This application claims priority to U.S. Provisional Patent Application no. 62/040,816, which was filed on August 22, 2014 and is incorporated herein by reference in its entirety.
Background
[0002] Workers in various organizations utilize and often rely on robust software systems to perform their work. These software systems can be augmented and/or modified by the workers or organizations using plug-ins.
[0003] A plug-in is a software component that adds one or more specific features to an existing software system. Plug-ins can be developed by the original software system creators, by third- party entities, and can even be custom developed in-house by an organization that uses the existing software system.
[0004] In some cases, a vast pool of plug-ins are available for a given software system. However, some plug-ins may not be reliable or relevant for a particular purpose, industry, department, field, geographic location, etc. Additionally, administrators responsible for obtaining/purchasing the plug-ins may have little insight into how many users would use a particular plug-in, which plug-ins are desired by the users, which plug-ins are desired by particular departments, etc.
Summary
[0005] Systems, apparatus, computer-readable media, and methods are disclosed for managing and deploying software application plug-ins.
[0006] In at least one embodiment, a plug-in catalog server can retrieve a plug-in for a software application, add the plug-in to a list of available plug-ins, transmit the list of available plug-ins to a user device, receive a message from the user device that indicates a vote for the plug-in, add the plug-in to a plug-in catalog based at least in part on the vote, receive a request for the plug-in from the user device, receive feedback associated with the plug-in from the user device, and store the feedback in the plug-in catalog.
[0007] In at least one other embodiment, the plug-in catalog server can run a plug-in crawler that detects plug-ins from one or more remote sources.
[0008] In at least one other embodiment, the plug-in catalog server can generate a user profile, where the user profile includes metadata corresponding to a user of a second user device and the plug-in catalog server adds the user profile to a user group based on the metadata. In some embodiments, the plug-in catalog server can associate a second plug-in with the user group based on metadata associated with the second plug-in and transmit the second plug-in to the second user device based on the user profile being in the user group.
[0009] In at least one other embodiment, the plug-in catalog server can increment a vote counter based on the message that indicates a vote.
[0010] In at least one other embodiment, the plug-in catalog server can add the plug-in to the plug-in catalog based on an indication that the plug-in was approved by an administrator.
[0011] In at least one other embodiment, the plug-in catalog server can determine usage data of the user device associated with the plug-in, receive a request for a plug-in report from an administrator, generate the plug-in report using the usage data and the feedback associated with the plug-in, and transmit the report to the administrator.
[0012] In at least one other embodiment, the plug-in catalog server can retrieve an update for the plug-in and transmit the update to the user device.
[0013] In at least one other embodiment, the plug-in can include metadata, and the plug-in catalog server can index the metadata, receive a query from a second user device, add an indication of the plug-in to a results list based on determining that at least part of the query matches at least party of the indexed metadata, and transmit the results list to the second user device.
[0014] It will be appreciated that this summary is intended merely to introduce a subset of aspects of the disclosure, presented below. Accordingly, this summary is not to be considered limiting on the disclosure.
Brief Description of the Drawings
[0015] The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate various embodiments of the present disclosure and together, with the description, serve to explain the principles of the present disclosure. In the drawings:
[0016] FIG. 1 is a diagram depicting a schematic of a plug-in management network, consistent with certain disclosed embodiments;
[0017] FIG. 2 is a flow diagram illustrating an example of adding new plug-ins to a catalog, consistent with certain disclosed embodiments;
[0018] FIG. 3 is a flow diagram illustrating an example of adding new plug-ins to a catalog, consistent with certain disclosed embodiments;
[0019] FIG. 4 is a flow diagram illustrating an example of adding new plug-ins to a catalog, consistent with certain disclosed embodiments;
[0020] FIG. 5 is a schematic depicting an example user interface displaying selectable sets of plug-ins, consistent with certain disclosed embodiments;
[0021] FIG. 6 is a flow diagram illustrating an example of providing for user collaboration regarding plug-ins in a plug-in catalog, consistent with certain disclosed embodiments;
[0022] FIG. 7 is a flow diagram illustrating an example of pushing plug-ins to a user group, consistent with certain disclosed embodiments;
[0023] FIG. 8 is a flow diagram illustrating an example of updating plug-ins, consistent with certain disclosed embodiments;
[0024] FIG. 9 is a flow diagram illustrating an example of indexing plug-ins and performing a search, consistent with certain disclosed embodiments; and
[0025] FIG. 10 is a diagram illustrating an example of a hardware system for providing a plug-in management system, consistent with certain disclosed embodiments.
Detailed Description
[0026] The following detailed description refers to the accompanying drawings. Wherever convenient, the same reference numbers are used in the drawings and the following description refers to the same or similar parts. While several examples of embodiments and features of the present disclosure are described herein, modifications, adaptations, and other implementations are possible, without departing from the spirit and scope of the present disclosure. Accordingly, the following detailed description does not limit the present disclosure. Instead, the proper scope of the disclosure is defined by the appended claims.
[0027] FIG. 1 is a diagram depicting a schematic of a plug-in management network, consistent with certain disclosed embodiments. In particular, FIG. 1 depicts a plug-in management network
100, including a plug-in catalog server 110, a first user 120, a second user 130, and an administrator 140. Plug-in catalog server 110 can be in communication with first user 120, second user 130, and administrator 140. For example, plug-in catalog server 110 can be in communication with first user 120, second user 130, and administrator 140 via a direct connection and/or a network connection (e.g., a local area network or a wide area network such as the Internet).
[0028] As used herein, a "plug-in" refers to a software component that adds one or more specific features to an existing software system. In some embodiments, a "plug-in" can also refer to a script. A script is a small non-compiled program written for a scripting language or command interpreter. In further embodiments, a "plug-in" can additionally refer to a piece of stand-alone software that does not require integration with an existing software system.
[0029] In some implementations, the existing software system can be an exploration and production sector (E&P) software system that allows users to interpret seismic data, perform well correlation, build reservoir models suitable for simulation, submit and visualize simulation results, calculate volumes, produce maps, and design development strategies to maximize reservoir exploitation. In such implementations, a plug-in can be designed that improves the functionality of the E&P software system by, for example, integrating seismic, geological, geomechanical, microseismic, and reservoir simulation capabilities offered by the E&P software system, providing fracture simulation models and planar fracture models that are not provided by are improve the models provided by the E&P software system, and enabling production evaluation and history matching capabilities that are not enabled or improve the capabilities enabled by the E&P software system.
[0030] In some embodiments, plug-in catalog server 110 can represent one or more computing devices in one or more locations that catalogs and deploys plug-ins for one or more software systems and provides for collaboration among users and between users and administrators (e.g., first user 120, second user 130, and administrator 140). For example, plug-in catalog server 110 can represent a distributed network of servers.
[0031] In some implementations, plug-in catalog server 1 10 can be, for example, a personal computer, a mainframe computer, or any other device with a network connection capable of maintaining a plug-in catalog, deploying plug-ins, and providing for collaboration between users
and administrators. In further implementations, plug-in catalog server 110 can be a specialized device specifically designed to perform the functions described herein.
[0032] In some embodiments, plug-in catalog server 1 10 can maintain and deploy a catalog of plug-ins for a particular software system. For example, an organization may utilize an organization-wide software system that employees of the organization utilize, and plug-in catalog server 1 10 can maintain and deploy a catalog of plug-ins for the organization-wide software system. In other embodiments, plug-in catalog server 1 10 can maintain a catalog of plug-ins for multiple software systems utilized by one or more organizations. In still further embodiments, plug-in catalog server 110 can detect types of software systems installed on user devices, and can limit the plug-ins that are available to a particular user device based on the type of software system installed on the user device.
[0033] First user 120, second user 130, and administrator 140 can communicate with plug-in catalog server 1 10 to, for example, add plug-ins to the catalog, search for plug-ins, vote for plug- ins, collaborate regarding plug-ins, retrieve plug-ins, and update plug-ins, as described in further detail below.
[0034] The example depicted in FIG. 1 is merely for the purpose of illustration, and is not intended to be limiting. In some embodiments, additional servers, additional administrators, and additional or fewer users may be used as part of a plug-in management network. Further, the plug-in management network depicted and processes described are merely a simplified example of a plug-in management network, consistent with certain disclosed embodiments, but such an example is not intended to be limiting.
[0035] FIG. 2 is a flow diagram illustrating an example of adding new plug-ins to a catalog, consistent with certain disclosed embodiments. The method can be performed on a computing device, such as, for example, plug-in catalog server 110 in FIG. 1.
[0036] The example of a method shown can begin in 200, when the computing device retrieves a new plug-in. In some embodiments, the computing device can run a plug-in crawler that detects new plug-ins from one or more remote sources. For example, the plug-in crawler can communicate with one or more websites, one or more remote folders, one or more cloud storage platforms, one or more servers, etc. to determine that the new plug-in is available. In other embodiments, a user can instruct the computing device to retrieve the new plug-in (e.g. via administrator 140 in FIG. 1). In further embodiments, the computing device can receive one or
more plug-ins pushed out by a user of the plug-in catalog (e.g., first user 120 or second user 130 in FIG. 1). For example, the user can push out a plug-in to the computing device with instructions to add the plug-in to the catalog, push the plug-in to one or more specified users, push the plug-in to one or more user groups, etc.
[0037] In 210, the computing device can determine whether the new plug-in was approved. In some embodiments, an administrator can install and run the plug-in on his/her device and test the plug-in for security, functionality, compatibility with the software system, compatibility with other plug-ins, etc. Based on the testing, the administrator can indicate whether the plug-in is approved.
[0038] If, in 210, the plug-in was not approved, the plug-in can be, for example, deleted, added to an ignore list, stored with an indication that it is not approved, etc.
[0039] If, in 210, the plug-in was approved, the computing device can proceed to 220, and the plug-in can be added to a plug-in catalog maintained by the computing device.
[0040] A plug-in catalog can include a list of every approved plug-in that is available to one or more users of the plug-in catalog. In some embodiments, the plug-in catalog may additionally include metadata associated with each plug-in. For example, metadata can include a name of the plug-in, a description of the plug-in, an author of the plugin, a category of the plug-in, a user group associated with the plug-in, a location of an image associated with the plug-in, an industry associated with the plug-in, etc.
[0041] In some embodiments, the metadata can be displayed for users of the plug-in catalog. For example, a user of the plug-in catalog (e.g. via first user 120 in FIG. 1) can access the plug- in catalog via a browser interface, and a list of plug-ins can be displayed for the user via a Hypertext Transfer Protocol (HTTP) webpage. The HTTP webpage can display a list of the plug-in names, as well as additional metadata, such as, for example, a description of each plug-in in the list.
[0042] In 230, the plug-in server can receive a request to install a plug-in from the user. In some implementations, a user can access the plug-in catalog (e.g. via the HTTP webpage) and request an approved plug-in for installation on the user's device.
[0043] Based on the request, in 240, the plug-in server can transmit the plug-in to the user's device, and the user's device can subsequently install the plug-in. For example, the next time the user starts the software system, the plug-in can automatically install on the user's device
[0044] While the operations depicted in FIG. 2 have been described as performed in a particular order, the order described is merely exemplary, and various different sequences of operations can be performed, consistent with certain disclosed embodiments. Additionally, the operations are described as discrete steps merely for the purpose of explanation, and, in some embodiments, multiple operations may be performed simultaneously and/or as part of a single computation. Further, the operations described are not intended to be exhaustive or absolute, and various operations can be inserted or removed.
[0045] FIG. 3 is a flow diagram illustrating an example of adding new plug-ins to a catalog, consistent with certain disclosed embodiments. The method can be performed on a computing device, such as, for example, plug-in catalog server 110 in FIG. 1.
[0046] The example of a method shown can begin in 300, when the computing device retrieves an indication of a new plug-in. In some embodiments, the computing device can run a plug-in crawler that detects new plug-ins from one or more remote sources. For example, the plug-in crawler can communicate with one or more websites, one or more remote folders, one or more cloud storage platforms, one or more servers, etc. to determine that the new plug-in is available. In other embodiments, a user can instruct the computing device to add the indication of the new plug-in (e.g. via administrator 140 in FIG. 1). In some embodiments, the indication of the new plug-in can include metadata associated with the plug-in but not the plug-in itself. In further embodiments, the computing device can receive one or more plug-ins pushed out by a user of the plug-in catalog (e.g., first user 120 or second user 130 in FIG. 1). For example, the user can push out a plug-in to the computing device with instructions to add the plug-in to the catalog, push the plug-in to one or more specified users, push the plug-in to one or more user groups, etc.
[0047] In 310, the computing can add the plug-in to a list of available plug-ins. A list of available plug-ins can be a list of plug-ins that are available (e.g. for purchase and/or download) but are currently not in the plug-in catalog. In some embodiments, the list of available plug-ins may include metadata associated with each available plug-in. For example, metadata can include a name of the plug-in, a description of the plug-in, an author of the plugin, a category of the plug-in, a user group associated with the plug-in, a location of an image associated with the plug- in, etc.
[0048] In some embodiments, the metadata can be displayed for users viewing the available plug-ins. For example, a user can access the list of available plug-ins via a browser interface,
and the list of available plug-ins can be displayed for the user via an HTTP webpage. The HTTP webpage can display a list of the plug-in names, as well as additional metadata for the user.
[0049] In 320, the computing device can receive votes for the plug-in. In some embodiments, a user can view the list of available plug-ins and express an interest in obtaining the plug-in by indicating a vote for the plug-in (e.g., by clicking on a vote option). In some implementations, a vote counter can be associated with each available plug-in and the vote counter can be incremented with each vote.
[0050] In some embodiments, based on the vote counter (e.g., comparing the vote counter to a threshold) the computing device can, in 330, obtain the plug-in. In other embodiments, an administrator can view the vote counter and provide instructions to the computing device to obtain the plug-in. In some implementations, the plug-in can be obtained by purchasing one or more licenses for the plug-in. For example, the number of purchased licenses can be based on the vote counter. In additional or alternative implementations, the plug-in can be obtained by downloading the plug-in to the plug-in catalog server.
[0051] In 340, the computing device can determine whether the new plug-in was approved. In some embodiments, an administrator can install and run the plug-in on his/her device and test the plug-in for security, functionality, compatibility with the software system, compatibility with other plug-ins, etc. Based on the testing, the administrator can indicate whether the plug-in is approved.
[0052] If, in 340, the plug-in was not approved, the plug-in can be, for example, deleted, added to an ignore list, stored with an indication that it is not approved, etc.
[0053] If, in 340, the plug-in was approved, the computing device can proceed to 350, and the plug-in can be added to the plug-in catalog maintained by the computing device.
[0054] While the operations depicted in FIG. 3 have been described as performed in a particular order, the order described is merely exemplary, and various different sequences of operations can be performed, consistent with certain disclosed embodiments. Additionally, the operations are described as discrete steps merely for the purpose of explanation, and, in some embodiments, multiple operations may be performed simultaneously and/or as part of a single computation. Further, the operations described are not intended to be exhaustive or absolute, and various operations can be inserted or removed.
[0055] FIG. 4 is a flow diagram illustrating an example of adding new plug-ins to a catalog, consistent with certain disclosed embodiments. The method can be performed on a computing device, such as, for example, plug-in catalog server 110 in FIG. 1.
[0056] The example of a method shown can begin in 400, when the computing device retrieves a new plug-in. In some embodiments, the computing device can run a plug-in crawler that detects new plug-ins from one or more remote sources. For example, the plug-in crawler can communicate with one or more websites, one or more remote folders, one or more cloud storage platforms, one or more servers, etc. to determine that the new plug-in is available. In other embodiments, a user can instruct the computing device to retrieve the new plug-in (e.g. via administrator 140 in FIG. 1). In further embodiments, the computing device can receive one or more plug-ins pushed out by a user of the plug-in catalog (e.g., first user 120 or second user 130 in FIG. 1). For example, the user can push out a plug-in to the computing device with instructions to add the plug-in to the catalog, push the plug-in to one or more specified users, push the plug-in to one or more user groups, etc.
[0057] In 410, the computing device can group the plug-ins into categories. In some embodiments, the plug-ins can be grouped into categories automatically based on metadata associated with the plug-in. For example, the metadata can indicate an industry associated with the plug-in, and each category can be associated with one or more industries. As an additional example, the metadata can indicate an author of the plug-in, such as, the organization that maintains the plug-in catalog, the creator of the software system, a trusted third party, or an unknown third party, and each category can be associated with one or more authors.
[0058] In 420, the computing device can determine whether the new plug-in was approved. In some embodiments, an administrator can install and run the plug-in on his/her device and test the plug-in for security, functionality, compatibility with the software system, compatibility with other plug-ins, etc. Based on the testing, the administrator can indicate whether the plug-in is approved.
[0059] In some implementations, the administrator may only test plug-ins that are in a particular group. For example, some plug-ins that are available may not be relevant to the organization. Accordingly, the plug-ins can be grouped into a category based on the industry metadata, and the administrator may not test the plug-ins in that group. As an additional example, plug-ins created by the organization, by the creator of the software system, and/or by a
trusted third party may be grouped into a category that is tested by the administrator, while plug- ins created by unknown third parties may be grouped into a category that is not tested by the administrator.
[0060] In some embodiments, plug-ins that are not initially tested by the administrator can be voted on, as discussed above, and the administrator may subsequently test the plug-in after a sufficient number of votes are received for the plug-in.
[0061] If, in 420, the plug-in was not approved, the plug-in can be, for example, deleted, added to an ignore list, stored with an indication that it is not approved, etc.
[0062] If, in 420, the plug-in was approved, the computing device can proceed to 430, and the plug-in can be added to a plug-in catalog maintained by the computing device.
[0063] While the operations depicted in FIG. 4 have been described as performed in a particular order, the order described is merely exemplary, and various different sequences of operations can be performed, consistent with certain disclosed embodiments. Additionally, the operations are described as discrete steps merely for the purpose of explanation, and, in some embodiments, multiple operations may be performed simultaneously and/or as part of a single computation. Further, the operations described are not intended to be exhaustive or absolute, and various operations can be inserted or removed.
[0064] FIG. 5 is a schematic depicting an example user interface displaying selectable sets of plug-ins, consistent with certain disclosed embodiments. User interface 500 can be, for example, an HTML webpage displayed on a web browser running on a user's computer. For example, user interface 500 can be displayed on first user 120 or second user 130 in FIG. 1.
[0065] The selectable sets of plug-ins include available plug-ins 510, approved plug-ins 520, and installed plug-ins 530. If the user selects available plug-ins 510, a list of the available plug- ins can be displayed for the user in the web browser. As described above, the list of available plug-ins can include plug-ins that are available (e.g. for purchase and/or download) but are currently not in the plug-in catalog (e.g., plug-ins that have not been approved). The list of available plug-ins can be displayed along with metadata associated with each plug-in (e.g., name, description, etc.). In some embodiments, the user can vote on available plug-ins, as described above.
[0066] If the user selects approved plug-ins 520, a list of the plug-ins in the plug-in catalog can be displayed for the user in the web browser. As described above, the plug-in catalog can be a
list of every approved plug-in that is available to one or more users of the plug-in catalog. The plug-in catalog can be displayed along with metadata associated with each plug-in (e.g., name, description, etc.). In some embodiments, the user may only be able to view plug-ins that are associated with a group of which the user is a member, as described above.
[0067] If the user selects installed plug-ins 530, a list of the plug-ins installed on the user's device can be displayed for the user in the web browser. The list of the plug-ins installed can be displayed along with metadata associated with each plug-in (e.g., name, description, etc.). In some embodiments, the user may able to check for updates for plug-ins, manage plug-ins, and/or delete plug-ins by interacting with the list of the plug-ins installed.
[0068] The example user interface depicted in FIG. 5 is merely an example, and is not intended to be limiting. In various embodiments, the user interface can exist outside of a web browser (e.g., as a stand-alone application), can include additional or fewer selectable sets of plug-ins, can include additional information and/or options, etc.
[0069] FIG. 6 is a flow diagram illustrating an example of providing for user collaboration regarding plug-ins in a plug-in catalog, consistent with certain disclosed embodiments. The method can be performed on a computing device, such as, for example, plug-in server 1 10 in FIG. 1.
[0070] The example of a method shown can begin in 600, when the computing device generates a user profile. In various embodiments, a user profile can be generated for multiple users and/or every user of the plug-in catalog.
[0071] The user profile can be created based on information provided by, for example, the user or an administrator. In some embodiments, the information in the user profile can include, for example, one or more software systems that the user has used and/or has installed, plug-ins the user has used or has requested, a geographic location of the user, an expertise of the user, a level of professional experience of the user, an industrial field of the user, an educational background of the user, etc. In various embodiments, the information can be stored as metadata of the user's profile. In further embodiments, the information can be retrieved from a corporate system that contains the user's information (e.g., an employee database).
[0072] In 610, the computing device can receive user usage data. In various embodiments, user usage data can be tracked for multiple users and/or every user of the plug-in catalog.
[0073] The user usage data can include, for example, a number of times a software system is used by the user, a number of times a plug-in is used by a user, an amount of time the software system is used by the user, an amount of time a plug-in is used by the user, etc. In some embodiments, the user usage data can be retrieved from a management system that captures the user usage data. In further embodiments, the user's usage data can be stored with the user's profile. For example, the user's usage data can be stored as metadata of the user's profile.
[0074] In 620, the computing device can receive feedback from the user associated with a plug-in.
[0075] In some embodiments, the feedback can include feedback for an administrator of the plug-in catalog. For example, a user performing a certain type of workflow can specify a group of plug-ins that should be packaged together to facilitate performing the workflow. As an additional example, a user can specify which plug-ins worked or did not work and/or rate the plug-ins based on a workflow. As a further example, a user can specify suggested improvements to one or more plug-ins.
[0076] In further embodiments, the feedback can include communication between users of a plug-in. For example, a user can post or respond to questions related to how other users are using the plug-in and/or questions related to a specific problem associated with a plug-in. As an additional example, a user can provide feedback about his/her experience with the plug-in and/or any problems with the plug-in. As a further example, a user (or an administrator) can provide documentation related to the plug-in.
[0077] In 630, the computing device can associate the feedback, the user usage data, and an indicator of the user's profile with the plug-in. In some embodiments, users and/or administers can view feedback and user usage data when viewing the plug-ins via, for example, an HTML webpage.
[0078] In 640, the computing device can receive a request for a report for one or more plug- ins. In some embodiments, the computing device can receive a request for a report from an administrator (e.g., administrator 140 in FIG. 1). For example, an administrator can request a report on which plug-ins are used the most based on a specified geographic location or a specified time period. As an additional example, an administrator can request a report on the user feedback for a plug-in.
[0079] In 650, the computing device can generate the report. In some embodiments, the computing device can use received feedback, usage data, and/or indicators of user profiles for multiple users of one or more plug-ins to generate the report.
[0080] In 660, the computing device can transmit the generated report to the administrator. For example, the generated report can be transmitted to administrator 140 in FIG. 1.
[0081] While the operations depicted in FIG. 6 have been described as performed in a particular order, the order described is merely exemplary, and various different sequences of operations can be performed, consistent with certain disclosed embodiments. Additionally, the operations are described as discrete steps merely for the purpose of explanation, and, in some embodiments, multiple operations may be performed simultaneously and/or as part of a single computation. Further, the operations described are not intended to be exhaustive or absolute, and various operations can be inserted or removed.
[0082] FIG. 7 is a flow diagram illustrating an example of pushing plug-ins to a user group, consistent with certain disclosed embodiments. The method can be performed on a computing device, such as, for example, plug-in server 110 in FIG. 1.
[0083] The example of a method shown can begin in 700, when the computing device retrieves a list of users. In some embodiments, each user can be associated with a user profile that includes, for example, one or more software systems that the user has used and/or has installed, plug-ins the user has used or has requested, a geographic location of the user, an expertise of the user, a level of professional experience of the user, an industrial field of the user, an educational background of the user, etc.
[0084] In 710, the computing device can group the users based on, for example, user profile information. In various embodiments, users can be grouped based on one or more of software systems installed, plug-ins used, geographic location, expertise, industrial field, etc.
[0085] In 720, the computing device can assign one or more plug-ins to a group. In some embodiments, the plug-ins can be automatically assigned to a group. For example, plug-ins associated with a specific industrial field can be automatically assigned to a group based on the industrial field. In other embodiments, an administrator can assign the plug-ins to groups.
[0086] In 730, the plug-ins can be pushed to each device associated with a user in the assigned user group (e.g., user 120 and user 130 in FIG. 1). Subsequently, in some embodiments, when a user starts the software system, the plug-in will automatically install on the user's device.
[0087] While the operations depicted in FIG. 7 have been described as performed in a particular order, the order described is merely exemplary, and various different sequences of operations can be performed, consistent with certain disclosed embodiments. Additionally, the operations are described as discrete steps merely for the purpose of explanation, and, in some embodiments, multiple operations may be performed simultaneously and/or as part of a single computation. Further, the operations described are not intended to be exhaustive or absolute, and various operations can be inserted or removed.
[0088] FIG. 8 is a flow diagram illustrating an example of updating plug-ins, consistent with certain disclosed embodiments. The method can be performed on a computing device, such as, for example, plug-in server 1 10 in FIG. 1.
[0089] The example of a method shown can begin in 800, when the computing device retrieves a new plug-in update. In some embodiments, the computing device can run a plug-in crawler that detects new plug-ins updates from one or more remote sources. For example, the plug-in crawler can communicate with one or more websites, one or more remote folders, one or more cloud storage platforms, one or more servers, etc. to determine that the new plug-in update is available. In other embodiments, a user can instruct the computing device to retrieve the new plug-in update (e.g. via administrator 140 in FIG. 1).
[0090] In 810, the computing device can determine whether the new plug-in update was approved. In some embodiments, an administrator can install and run the plug-in update on his/her device and test the plug-in update for security, functionality, compatibility with the software system, compatibility with other plug-ins, etc. Based on the testing, the administrator can indicate whether the plug-in update is approved.
[0091] If, in 810, the plug-in update was not approved, the plug-in update can be, for example, deleted, added to an ignore list, stored with an indication that it is not approved, etc.
[0092] If, in 810, the plug-in update was approved, the computing device can proceed to 820, and the plug-in update can be assigned to a user and/or a user group.
[0093] In some embodiments, the plug-in update can be assigned to a user group that includes all users that have the plug-in, all users that have requested the update, all users in a group that is associated with industrial field associated with the plug-in, etc.
[0094] In 830, the update can be pushed to a device of the assigned user or to each device associated with a user in the user group (e.g., user 120 and user 130 in FIG. 1). Subsequently, in
some embodiments, when a user starts the software system, the plug-in update will automatically install on the user's device.
[0095] While the operations depicted in FIG. 8 have been described as performed in a particular order, the order described is merely exemplary, and various different sequences of operations can be performed, consistent with certain disclosed embodiments. Additionally, the operations are described as discrete steps merely for the purpose of explanation, and, in some embodiments, multiple operations may be performed simultaneously and/or as part of a single computation. Further, the operations described are not intended to be exhaustive or absolute, and various operations can be inserted or removed.
[0096] FIG. 9 is a flow diagram illustrating an example of indexing plug-ins and performing a search, consistent with certain disclosed embodiments. The method can be performed on a computing device, such as, for example, plug-in server 110 in FIG. 1.
[0097] The example of a method shown can begin in 900, when the computing device retrieves a plug-in for indexing. In some embodiments, the plug-in can be in a list of available plug-ins or approved plug-ins, as described above with regard to FIG. 5
[0098] In 910, the computing device can index metadata of the plug-in. For example, a name and/or each relevant word of a description of the plug-in can be indexed. In some embodiments, the computing device can additionally index feedback associated with the plug-in, user usage data associated with the plug-in, etc. In further embodiments, the computing device can additionally index variable information associated with the plug-in, such as, for example, whether the plug-in has a license available, whether the plug-in has been approved, etc.
[0099] In some embodiments, 900 and 910 can be performed for each available plug-in and/or each approved plug-in to allow for searching the plug-ins.
[0100] In 920, the computing device can receive a search query from a user. For example, the query can include a name, an industry, a field, a geographic area, etc. As an additional example, the query can include an indication of a specific problem associated with plug-ins or a background, expertise, and/or geographical location associated with users of a plug-in catalog. As a further example, the query can specify that only plug-ins with license(s) available should be included in the search and/or that only approved plug-ins should be included in the search.
[0101] In 930, the computing device can search the indexed data using the query. If, in 930, indexed metadata of a plug-in matches the query, the plug-in can be added to a results list in 940.
[0102] In 950, the results list can be transmitted to the user. For example, the results list can be transmitted to user 120 or user 130 in FIG. 1.
[0103] While the operations depicted in FIG. 9 have been described as performed in a particular order, the order described is merely exemplary, and various different sequences of operations can be performed, consistent with certain disclosed embodiments. Additionally, the operations are described as discrete steps merely for the purpose of explanation, and, in some embodiments, multiple operations may be performed simultaneously and/or as part of a single computation. Further, the operations described are not intended to be exhaustive or absolute, and various operations can be inserted or removed.
[0104] FIG. 10 is a diagram illustrating an example of a hardware system for providing a plug- in management system, consistent with certain disclosed embodiments. The example system 1000 includes example system components that may be used. The components and arrangement, however, may be varied.
[0105] A computer 1001 may include a processor 1010, a memory 1020, storage 1030, and input/output (I/O) devices (not pictured). The computer 1001 may be implemented in various ways and can be configured to perform any of the embodiments described above. For example, the computer 1001 may be a general purpose computer, a mainframe computer, a specialized plug-in management computer, any combination of these components, or any other appropriate computing device. The computer 1001 may be standalone, or may be part of a subsystem, which may, in turn, be part of a larger system.
[0106] In some embodiments, the computer 1001 can implement, for example, plug-in server 110, as shown in FIG. 1.
[0107] The processor 1010 may include one or more processing devices, such as, for example, a microprocessor from the Intel Core™ family manufactured by Intel™, the Phenom™ family manufactured by AMD™, or the like. Memory 1020 may include one or more non-transitory storage devices configured to store information and/or instructions used by processor 1010 to perform certain functions and operations related to the disclosed embodiments, such as the methods of FIGs. 2-4 and 6-9. Storage 1030 may include a volatile, non- volatile, non-transitory, magnetic, semiconductor, tape, optical, removable, non-removable, or other type of computer- readable medium used as a storage device. In some embodiments, storage 1030 can store plug- ins, plug-in metadata, user profiles, user feedback, user usage data, etc.
[0108] In one embodiment, memory 1020 may include one or more programs or subprograms including instructions that may be loaded from storage 1030 or elsewhere that, when executed by computer 1001, perform various procedures, operations, or processes consistent with disclosed embodiments. For example, memory 1020 may include a plug-in management program 1025 for adding new plug-ins, providing for user collaboration, pushing plug-ins to user group, updating plug-ins, and/or indexing plug-ins and performing searches, according to various disclosed embodiments. Memory 1020 may also include other programs that perform other functions, operations, and processes, such as programs that provide communication support, Internet access, etc. The plug-in management program 1025 may be embodied as a single program, or alternatively, may include multiple sub-programs that, when executed, operate together to perform the functions and operations of the plug-in management program 1025 according to disclosed embodiments. In some embodiments, plug-in management program can perform the process and operations of FIGs. 2-4 and 6-9 described above.
[0109] The computer 1001 may communicate over a link with a network 1040. For example, the link may be a direct communication link, a local area network (LAN), a wide area network (WAN), or other suitable connection. The network 1040 may include the Internet, as well as other networks, which may be connected to various systems and devices.
[0110] The computer 1001 may include one or more input/output (I/O) devices (not pictured) that allow data to be received and/or transmitted by the computer 1001. I/O devices may also include one or more digital and/or analog communication I/O devices that allow the computer 1001 to communicate with other machines and devices. I/O devices may also include input devices such as a keyboard or a mouse, and may include output devices such as a display or a printer. The computer 1001 may receive data from external machines and devices and output data to external machines and devices via I/O devices. The configuration and number of input and/or output devices incorporated in I/O devices may vary as appropriate for various embodiments.
[0111] Example uses of the system 1000 can be described by way of example with reference to the example embodiments described above.
[0112] While the teachings has been described with reference to the example embodiments, those skilled in the art will be able to make various modifications to the described embodiments without departing from the true spirit and scope. The terms and descriptions used herein are set
forth by way of illustration only and are not meant as limitations. In particular, although the method has been described by examples, the steps of the method may be performed in a different order than illustrated or simultaneously. Furthermore, to the extent that the terms "including", "includes", "having", "has", "with", or variants thereof are used in either the detailed description and the claims, such terms are intended to be inclusive in a manner similar to the term "comprising." As used herein, the term "one or more of with respect to a listing of items such as, for example, A and B, means A alone, B alone, or A and B. Those skilled in the art will recognize that these and other variations are possible within the spirit and scope as defined in the following claims and their equivalents.
Claims
1. A system comprising:
a processing system of a device comprising one or more processors; and
a memory system comprising one or more computer-readable media, wherein the one or more computer-readable media contain instructions that, when executed by the processing system, cause the processing system to perform operations comprising:
retrieving a plug-in for a software application;
adding the plug-in to a list of available plug-ins;
transmitting the list of available plug-ins to a first user device;
receiving a message from the user device comprising a vote for the plug-in;
adding the plug-in to a plug-in catalog based at least in part on the vote for the plug-in;
receiving a request for the plug-in from the first user device;
transmitting the plug-in to the first user device;
receiving feedback associated with the plug-in from the first user device; and storing the feedback associated with the plug-in in the plug-in catalog.
2. The system of claim 1 , wherein retrieving the plug-in comprises running a plug-in crawler that detects plug-ins from one or more remote sources.
3. The system of claim 1 , the operations further comprising generating a user profile corresponding to a second user device, wherein the user profile comprises metadata corresponding to a user of the second user device.
4. The system of claim 3, the operations further comprising:
adding the user profile to a user group based on the metadata corresponding to the user;
5. The system of claim 4, wherein a second plug-in comprises plug-in metadata, the operations further comprising:
associating the second plug-in with the user group based on the plug-in metadata; and transmitting the second plug-in to the second user device based on the user profile being in the user group.
6. The system of claim 1 , the operations further comprising incrementing a vote counter based on receiving the message.
7. The system of claim 1, wherein adding the plug-in to the plug-in catalog is additionally based on an indication that the plug-in was approved by an administrator.
8. The system of claim 1, the operations further comprising determining usage data of the first user device associated with the plug-in.
9. The system of claim 8, the operations further comprising:
receiving a request for a plug-in report from an administrator, wherein the request is associated with the plug-in;
generating the plug-in report using one or more of the usage data of the first user device and the feedback associated with the plug-in; and
transmitting the report to the administrator.
10. The system of claim 1, the operations further comprising:
retrieving an update for the plug-in; and
transmitting the update to the first user device;
11. The system of claim 1, wherein the plug-in comprises plug-in metadata, the operations further comprising:
indexing the plug-in metadata;
receiving a query from a second user device;
adding an indication of the plug-in to a results list based on determining at least part of the query matches at least part of the indexed metadata; and
transmitting the results list to the second user device.
12. A computer-implemented method, comprising:
retrieving, using one or more processors, a plug-in for a software application;
adding the plug-in to a list of available plug-ins;
transmitting the list of available plug-ins to a first user device;
receiving a message from the user device comprising a vote for the plug-in;
adding the plug-in to a plug-in catalog based at least in part on the vote for the plug-in; receiving a request for the plug-in from the first user device;
transmitting the plug-in to the first user device;
receiving feedback associated with the plug-in from the first user device; and
storing the feedback associated with the plug-in in the plug-in catalog.
13. The method of claim 12, wherein retrieving the plug-in comprises running a plug- in crawler that detects plug-ins from one or more remote sources.
14. The method of claim 12, further comprising:
generating a user profile corresponding to a second user device, wherein the user profile comprises metadata corresponding to a user of the second user device;
adding the user profile to a user group based on the metadata corresponding to the user; associating a second plug-in, comprising plug-in metadata, with the user group based on the plug-in metadata; and
transmitting the second plug-in to the second user device based on the user profile being in the user group
15. The method of claim 12, further comprising incrementing a vote counter based on receiving the message.
16. The method of claim 12, further comprising:
determining usage data of the first user device associated with the plug-in;
receiving a request for a plug-in report from an administrator, wherein the request is associated with the plug-in;
generating the plug-in report using one or more of the usage data of the first user device and the feedback associated with the plug-in; and
transmitting the report to the administrator.
17. The method of claim 12, wherein the plug-in comprises plug-in metadata, the method further comprising:
indexing the plug-in metadata;
receiving a query from a second user device;
adding an indication of the plug-in to a results list based on determining at least part of the query matches at least part of the indexed metadata; and
transmitting the results list to the second user device.
18. A non-transitory computer readable storage medium comprising instructions for causing one or more processors to:
retrieve a plug-in for a software application;
add the plug-in to a list of available plug-ins;
transmit the list of available plug-ins to a first user device;
receive a message from the user device comprising a vote for the plug-in;
add the plug-in to a plug-in catalog based at least in part on the vote for the plug-in;
receive a request for the plug-in from the first user device;
transmit the plug-in to the first user device;
receive feedback associated with the plug-in from the first user device; and
store the feedback associated with the plug-in in the plug-in catalog.
19. The non-transitory computer readable storage medium of claim 18, the instructions further cause the one or more processors to:
generate a user profile corresponding to a second user device, wherein the user profile comprises metadata corresponding to a user of the second user device;
add the user profile to a user group based on the metadata corresponding to the user; associate a second plug-in, comprising plug-in metadata, with the user group based on the plug-in metadata; and
transmit the second plug-in to the second user device based on the user profile being in the user group.
20. The non-transitory computer readable storage medium of claim 18, wherein the plug-in comprises plug-in metadata, the instructions further cause the one or more processors to: index the plug-in metadata;
receive a query from a second user device;
add an indication of the plug-in to a results list based on determining at least part of the query matches at least part of the indexed metadata; and
transmit the results list to the second user device.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462040816P | 2014-08-22 | 2014-08-22 | |
US62/040,816 | 2014-08-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2016028973A1 true WO2016028973A1 (en) | 2016-02-25 |
Family
ID=55351245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2015/046034 WO2016028973A1 (en) | 2014-08-22 | 2015-08-20 | Plug-in manager and deployment system |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2016028973A1 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11841731B2 (en) * | 2021-09-24 | 2023-12-12 | Sap Se | Cloud plugin for legacy on-premise application |
US11922163B2 (en) | 2021-09-24 | 2024-03-05 | Sap Se | Cloud version management for legacy on-premise application |
US12026496B2 (en) | 2021-09-24 | 2024-07-02 | Sap Se | Cloud upgrade for legacy on-premise application |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030143991A1 (en) * | 2002-01-31 | 2003-07-31 | Brian Minear | System and method for updating dataset versions resident on a wireless device |
US20090225981A1 (en) * | 2004-08-02 | 2009-09-10 | Justsystems Corporation | Document processing and management approach to adding an exclusive plugin implementing a desired functionality |
US20100011352A1 (en) * | 2008-07-11 | 2010-01-14 | International Business Machines Corporation | Matching Plugins to Users |
US20100257539A1 (en) * | 2009-03-31 | 2010-10-07 | Krishnakumar Narayanan | System, method and apparatus for providing functions to applications on a digital electronic device |
US20140129682A1 (en) * | 2012-10-30 | 2014-05-08 | Tencent Technology (Shenzhen) Company Limited | Apparatuses and methods for plug-in management |
-
2015
- 2015-08-20 WO PCT/US2015/046034 patent/WO2016028973A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030143991A1 (en) * | 2002-01-31 | 2003-07-31 | Brian Minear | System and method for updating dataset versions resident on a wireless device |
US20090225981A1 (en) * | 2004-08-02 | 2009-09-10 | Justsystems Corporation | Document processing and management approach to adding an exclusive plugin implementing a desired functionality |
US20100011352A1 (en) * | 2008-07-11 | 2010-01-14 | International Business Machines Corporation | Matching Plugins to Users |
US20100257539A1 (en) * | 2009-03-31 | 2010-10-07 | Krishnakumar Narayanan | System, method and apparatus for providing functions to applications on a digital electronic device |
US20140129682A1 (en) * | 2012-10-30 | 2014-05-08 | Tencent Technology (Shenzhen) Company Limited | Apparatuses and methods for plug-in management |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11841731B2 (en) * | 2021-09-24 | 2023-12-12 | Sap Se | Cloud plugin for legacy on-premise application |
US11922163B2 (en) | 2021-09-24 | 2024-03-05 | Sap Se | Cloud version management for legacy on-premise application |
US12026496B2 (en) | 2021-09-24 | 2024-07-02 | Sap Se | Cloud upgrade for legacy on-premise application |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Milo et al. | Next-step suggestions for modern interactive data analysis platforms | |
US9262157B2 (en) | Source code violation matching and attribution | |
Rauber et al. | Identification of reproducible subsets for data citation, sharing and re-use | |
US11100469B2 (en) | Cross-domain collaborative data log | |
CN105068921B (en) | Android based on App comparative analyses applies the evaluation method of shop confidence level | |
US10025878B1 (en) | Data lineage analysis | |
US9495282B2 (en) | Method and systems for a dashboard testing framework in an online demand service environment | |
US10331441B2 (en) | Source code mapping through context specific key word indexes and fingerprinting | |
US9201964B2 (en) | Identifying related entities | |
CN106484606A (en) | Method and apparatus submitted to by a kind of code | |
CN113076104A (en) | Page generation method, device, equipment and storage medium | |
US10810009B2 (en) | Visualizations of software project and contributor activity | |
GB2503486A (en) | Managing changes to files | |
CN106663226B (en) | Item mapping for application store applications | |
US20200175174A1 (en) | Vulnerability Context Graph | |
CN109783543A (en) | Data query method, apparatus, equipment and storage medium | |
KR20170073693A (en) | Extracting similar group elements | |
US20140280352A1 (en) | Processing semi-structured data | |
CN111913954A (en) | Intelligent data standard catalog generation method and device | |
US20170004188A1 (en) | Apparatus and Method for Graphically Displaying Transaction Logs | |
CN110347573B (en) | Application program analysis method, device, electronic equipment and computer readable medium | |
WO2016028973A1 (en) | Plug-in manager and deployment system | |
US20180260820A1 (en) | System device and process for an educational regulatory electronic tool kit | |
US9256644B1 (en) | System for identifying and investigating shared and derived content | |
CN111966725A (en) | Data acquisition method and device applied between internal network and external network and electronic equipment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 15833969 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 15833969 Country of ref document: EP Kind code of ref document: A1 |