Abstract:
An embodiment relates generally to a method of packaging an application. The method includes providing for a plurality of applications and receiving a selection of an application from the plurality of applications. The method also includes determining a set of binary files for a lightweight operating system configured to only support the selected application and packaging the set of binary files with the selected application as an installation package.

Description:
BACKGROUND OF THE INVENTION 
       [0001]    1. Field 
         [0002]    This invention relates generally to applications, more particularly, to systems and methods for packaging an application with a lightweight operating system. 
         [0003]    2. Description of the Related Art 
         [0004]    An operating system is the software that manages the sharing of the resource of a computer. The operating system processes raw system data and user input, and responds by allocating and managing tasks and internal system resources as a service to users and programs of the system. At the foundation of all system software, an operating system performs basic tasks such as controlling and allocating memory, prioritizing system requests, controlling input and output devices, facilitating networking and managing file systems. 
         [0005]    As operating systems continue to develop and progress, the file size of operating systems grow larger and larger as additional features and services are incorporated into the operating systems. This is a phenomena known as “feature creep” as the operating system tries to be all things for all users. As such, the operating systems can contain many files or programs that may not applicable to a certain class of user. For example, a server at a law firm may not have a need for the associated files for real time operation or network application development. The non-essential features of the operating system can take up storage resources and processing bandwidth. 
         [0006]    Accordingly, there is a need in the art for a mechanism to provide for a lightweight operating system specifically tailored for a selected application to reduce storage requirements and maximize computing resources. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0007]    Various features of the embodiments can be more fully appreciated, as the same become better understood with reference to the following detailed description of the embodiments when considered in connection with the accompanying figures, in which: 
           [0008]      FIG. 1  depicts an exemplary system in accordance with an embodiment; 
           [0009]      FIG. 2  illustrates an exemplary service portal of the system shown in  FIG. 1  in accordance with another embodiment; 
           [0010]      FIG. 3  depicts an exemplary block diagram of the application service shown in  FIG. 1  in accordance with yet another embodiment; 
           [0011]      FIG. 4  illustrates an exemplary flow diagram in accordance with yet another embodiment; and 
           [0012]      FIG. 5  depicts an exemplary computing platform in accordance with yet another embodiment. 
       
    
    
     DETAILED DESCRIPTION OF EMBODIMENTS 
       [0013]    For simplicity and illustrative purposes, the principles of the present invention are described by referring mainly to exemplary embodiments thereof. However, one of ordinary skill in the art would readily recognize that the same principles are equally applicable to, and can be implemented in, all types of information and service portals, and that any such variations do not depart from the true spirit and scope of the present invention. Moreover, in the following detailed description, references are made to the accompanying figures, which illustrate specific embodiments. Electrical, mechanical, logical and structural changes may be made to the embodiments without departing from the spirit and scope of the present invention. The following detailed description is, therefore, not to be taken in a limiting sense and the scope of the present invention is defined by the appended claims and their equivalents. 
         [0014]    Embodiments relate generally to systems and methods for a lightweight version of an operating system to package with virtual images of software applications. More particularly, an application service can be configured to receive a selected application from a user as well as configuration information regarding the computer system of the user. The application service can then determine a set of binary files that define a lightweight version of the operating system configured to only support the selected application. In some embodiments, the application service can check the dependencies of the selected application to determine the necessary files from a full version of the operating system as well as any utilities, prerequisite applications and/or libraries, i.e., dependent objects. 
         [0015]    The application service can then package the binary files, a virtual image of the application, and the configuration information as an installation package. The user can then install the installation package to implement the selected application. Accordingly, a computing device can be installed with the minimal amount of operating systems, prerequisite software, and/or utilities to implement a particular application. With the lightweight version of the operating system, there can be an increase in efficiency, a reduction in system administration tasks, and an increase in throughput. 
         [0016]      FIG. 1  illustrates an exemplary system  100  in accordance with an embodiment. It should be readily apparent to those of ordinary skill in the art that the system  100  depicted in  FIG. 1  represents a generalized schematic illustration and that other components may be added or existing components may be removed or modified. Moreover, the system  100  may be implemented using software components, hardware components, or combinations thereof. 
         [0017]    As shown in  FIG. 1 , the system  100  includes users  105 , a network  110  and a service portal  115 . The users  105  can be private individuals, employees of private business or public entities or other persons interested in accessing the service portal  115 . The users  105  can access the service portal  115  using personal computers, personal mobile devices, workstations or other networked computing platforms. 
         [0018]    The network  110  can be a combination of wide area and local area networks such as the Internet. The network  110  can be configured to provide a communication channel between the users  105  and the service portal  115 . The network  110  can implement a variety of network protocols to provide the communication channel such as Internet Protocol (“IP”) Vx, ATM, SONET, or other similar network protocols. 
         [0019]    The service portal  115  can be configured to provide products and services to the user  105  as well as provisioning, installation services, updates to software and hardware products and technical support. The service portal  115  can, among other functions, provide a list of products such as software applications and/or hardware devices as well as services such as installation, configuration, maintenance, etc., for users to purchase. As a non-limiting example, the service portal  115  can also provide information for users to research, compare and purchase software, hardware and consulting services in support of those software and/or hardware purchases. The service portal  115  can also be configured to provide support services by subscription to those same software, service, and/or hardware purchases. 
         [0020]    In accordance with various embodiments, the service portal  115  can be configured to provide an application service  120 , which can be configured to receive a selected application from a user as well as configuration information regarding the computer system of the user. The application service  120  can then determine a set of binary files that define a lightweight version of the operating system, or minimally optimized, configured to only support the selected application. 
         [0021]    The application service  120  can then check the dependencies of the selected application to determine the necessary files, utilities, applications, and/or libraries from a full version of the operating system as well as any utilities, prerequisite applications and/or libraries, i.e., dependent objects. 
         [0022]    Subsequently, the application service  120  can package the binary files, a virtual image of the application, and the configuration information as an installation package. The user can then install the installation package to implement the selected application. Accordingly, a computing device can be installed with the minimal version of the operating system, prerequisite software, and/or utilities to implement a particular application. With the lightweight version of the operating system, there can be an increase in efficiency, a reduction in system administration tasks, and an increase in throughput. 
         [0023]      FIG. 2  illustrates a more detailed block diagram of the service portal  115  in accordance with another embodiment. It should be readily apparent to those of ordinary skill in the art that the service portal  115  depicted in  FIG. 2  represents a generalized schematic illustration and that other components may be added or existing components may be removed or modified. 
         [0024]    As shown in  FIG. 2 , the service portal  115  can include a web store module  205  that a user can interface with the service portal. The web store module  205  can provide the graphical user interfaces (“GUIs”, e.g., a web page) and associated functions and/or services for the service portal  115 . As a non-limiting example, the web store module  205  can generate a log-in GUI for a user to authenticate and enter the service portal  115 . 
         [0025]    The web store module  205  can couple with an application program interface (“API”) module  210 . The API module  210  can be configured to provide an interface between the functions and/or services provided by the web store module  205  and to the appropriate module of the service portal  115 . More particularly, the API module  210  can call or direct a requested function or service from the user to the respective module that provides that requested function or service. For example, a user may request a price of a product, e.g., an electronic mail program, the API module  210  can direct the request to a get price function in a support tools module  215 . 
         [0026]    The API module  210  can also be configured to interface with the support tools module  215 . The support tools module  215  can be configured to provide the supporting software and hardware to implement the functionality of the service portal  115 . The support tools module  215  can contain and provide access to databases that contain information such as product lines, services providers, on-line self-help (e.g., knowledge library), etc. The support tools module  215  can also provide services like a chat service, a help desk, installation, provisioning, etc. 
         [0027]    The API module  210  can be further configured to couple with an identification (“ID”) module  220 . The ID module  220  can be configured to provide identification management services for the service portal  115 . The ID module  220  can also store information related to users such as purchase history, user profile, usage history of the user, and entitlement data. 
         [0028]    The API module  210  can be further configured to couple with a universal messaging module  225 . The universal messaging module  225  can be configured to provide a messaging application that unifies messages. More specifically, electronic mail (“email”), documents, and instant messaging can be linked in a single application. The universal messaging module  225  can also provide a mechanism for a user to view all the related documents for the user from email to Wiki pages. 
         [0029]    An installer tools  230  can be coupled to the API module  210 . One of the services provided by the service portal  115  can be the vending of software applications provided by independent software vendors (“ISVs”). As part of the delivery of the software applications, the ISV can be required to maintain and update the installation tools to install their respective software applications. Accordingly, the installer tools  230  can be a repository where independent software vendors can deposit their respective installation tools. 
         [0030]    The API module  210  can be further coupled to the communication layer  235  (labeled as COMM layer in  FIG. 2 ). The communication layer  235  can be configured to provide the underlying services for the modules of the service portal  115  to communicate. For example, the communication layer  235  can contain middleware for a product database to communicate with a graphical user interface, e.g., a web page, requesting product description. 
         [0031]    The API module  210  can be further coupled to an application management module  240  (labeled as APP MGMT in  FIG. 2 ). The application management module  240  can be configured to manage applications as requested by users. More specifically, a user may purchase a prepackaged software application pack (e.g., an operating system, electronic mail program and data mining program as a single package) from the service portal  115 , which is stored in an application stack module  245 . The application management module  240  can then deliver the purchased software application stack, install and configure the software application stack at a third party site such as a server farm  250  or store the software application stack in a storage farm  255  for the user to retrieve. 
         [0032]    The server farm  250  can be configured to provide computing platforms for users to lease. Accordingly, users can have a “hot” backup version of their systems, a testing platform to perform quality assurance tests on new applications, execute a program requiring excess MIPS, or any other similar computing task. 
         [0033]    The storage farm  255  can be configured to provide storage space for users to lease. Accordingly, users can lease disk storage space to back up data, provide a hot data swap, or other storage intensive tasks. 
         [0034]    In some embodiments, the application service  120  can be configured to be executed in the support tools module  215 . In other embodiments, the application service  120  can be a module of the web store module  205 . In yet other embodiments, the application service  120  can be executed as a standalone module. 
         [0035]      FIG. 3  depicts a more detailed block diagram of the application service  120  in accordance with another embodiment. It should be readily apparent to those of ordinary skill in the art that the application service  120  depicted in  FIG. 3  represents a generalized schematic illustration and that other components may be added or existing components may be removed or modified. 
         [0036]    As shown in  FIG. 3 , the application service  120  can comprise an application manager module  305 , a user interface module  310 , an installation database  315 , and an application database  320 . It should be readily obvious to one of ordinary skill in the art that the depicted modules  305 - 320  can be implemented as software applications (programmed in C, C++, JAVA, PHP, etc.), hardware components (EEPROM, application specific integrated circuit, microprocessor, etc.) or combinations thereof. 
         [0037]    The application manager module  305  can be configured to manage and to interface with the other modules  310 - 320  to provide the functionality of the application service  120  as described above and further described herein below. 
         [0038]    The user interface module  310  can be configured to generate and interface with graphical user interfaces (“GUIs”, e.g., web page) as required by the application manager module  305 . For example, the user interface module  310  can generate an application browse web page  325 . The application browse page  325  can display a list of applications that are supported by and can be purchased on the service portal  115 . The application browse page  325  can also provide selection widget to allow a user to select an application for purchase. When the application browse page  325  is submitted for purchase, the name of the selected application can be forwarded to the application manager module  305 . 
         [0039]    In some embodiments, the application browse page  325  can be linked to a user configuration data web page  330 . The user configuration data web page  330  can request the user to implement the configuration data related to the computer system where the selected application is to be installed. The configuration data or information can include processor type, file system, size of memory, Internet Protocol (“IP”) address, firewall configuration, number of users, security information, etc. The user configuration data web page  330  can then forward the user configuration data to the application manager module  305  when the user activates a submit widget on the user configuration data web page  330 . 
         [0040]    The web pages  325 ,  330  can be implemented with hypertext markup language (“HTML”), Extensible Markup Lange (“XML”), Cascading Style Sheets (“CSS”) or other semantic and non-semantic markup languages. It should be readily obvious to one of ordinary skill in the art that the web pages  325 ,  330  can be implemented in a variety of ways depending on the requirements of the users of the service portal  115 . 
         [0041]    In some embodiments, the user interface module  310  can be considered an application program interface module which provides the necessary tools and interfaces to communicate with other modules of the application service  120  and the other modules of the service portal  115  as previously described and described in greater detail herein below. 
         [0042]    The application manager module  120  can also be coupled with the installation database  315 . The installation database  315  can be configured to store recipes for the multiple applications. Each recipe can be associated with an application. The recipe can contain information such as any dependencies in the operating system, prerequisite applications, i.e., any application that needs to be installed so the selected application can operate correctly, utilities, libraries, miscellaneous files, etc., which can be defined as dependent objects. The recipes can be derived from existing dependency databases such as an RPM database, Windows Registry, etc. The installation database  315  can then return the name of each dependent object to the application manager module  305  as a dependent object list. 
         [0043]    Accordingly, the dependent object list can then specify a lightweight operating system and associated files, utilities, libraries, and/or prerequisite applications to execute the selected application. For example, if the selected program was an electronic mail server, the dependent object list would not include print drivers for the operating system since clients of the electronic mail server are expected to print at their remote locations. A law firm user can exclude the sections of the operating system that support real-time operations as another example. The application service  120  is configured to provide the minimal application stack, i.e., from the operating system to the selected application, that provides the maximum performance only for the selected application. 
         [0044]    The application manager module  305  can be further coupled to the application database  320 . The application database  320  can contain the binary files of the supported applications provided by the service portal  115 . The supported applications can range from operating systems (e.g., Linux, Windows™, Unix, etc.), software applications (e.g., electronic mail programs, spreadsheet programs, customer relationship management software, etc.), libraries, and/or utilities (e.g., FTP, drivers, etc.). The applications manager module  305  can be configured to retrieve each binary file listed on the dependent object list from the application database  320 . The application manager module  305  can then package the retrieved binary files, which contain a minimal application stack, along with an associated dependent objects as a virtual image for the installation package  335  with the configuration information. Accordingly, the user can install the installation package  335  at the site of the user. 
         [0045]    In some embodiments, the application database  320  can be part of the application stack  245 . As such, the application manager module  305  can then be configured with an interface to the application stack  245  to retrieve the binary files. 
         [0046]      FIG. 4  illustrates an exemplary flow diagram  400  in accordance with yet another embodiment. It should be readily apparent to those of ordinary skill in the art that the flow diagram  400  depicted in  FIG. 4  represents a generalized schematic illustration and that other steps may be added or existing steps may be removed or modified. 
         [0047]    As shown in  FIG. 4 , the application manager module  305  can be configured to receive a selection of a software application and user configuration information, in step  405 . More specifically, a user may have selected an application from the application browse page  325  and application manager module  305  can retrieve the user configuration information from the user configuration data web page  330 . The selected application and user configuration information can be temporarily buffered by the application manager module  305 . 
         [0048]    In step  410 , the application manager module  305  can be configured to query the installation database  315  for the dependencies of the selected software application. In step  415 , the installation database  315  can be configured to compile a dependent object list that contains the name of the required files (including those of the operating system), utilities, prerequisite software applications, and/or libraries. The installation database  315  can forward the dependent object list to the application manager module  305 . 
         [0049]    In step  420 , the application manager module  305  can be configured to retrieve an associated binary file(s) for each listed dependent object on the dependent object list from the application database  320 . The application manager module  305  can temporarily buffer each retrieved dependent object. 
         [0050]    In step  425 , the application manager module  305  can be configured to package the retrieved dependent object(s) as a virtual image and the user configuration information as an installation package for the requesting user to install. In step  430 , the application manager module  305  can notify the user when the installation package is completed. As an example, the application manager module  305  can transmit an electronic mail message containing a link to the installation package  335  for a user to retrieve at a later date. 
         [0051]      FIG. 5  illustrates an exemplary block diagram of a computing system  500  where an embodiment may be practiced. The functions of the application service  120  may be implemented in program code and executed by the computing platform  500 . The application service  120  may be implemented in computer languages such as PASCAL, C, C++, JAVA, etc. 
         [0052]    As shown in  FIG. 5 , the computer system  500  includes one or more processors, such as processor  502  that provide an execution platform for computer program embodiments of the application service  120 . Commands and data from the processor  502  are communicated over a communication bus  504 . The computer system  500  also includes a main memory  506 , such as a Random Access Memory (RAM), where the application service  120  may be executed during runtime, and a secondary memory  508 . The secondary memory  508  includes, for example, a hard disk drive  510  and/or a removable storage drive  512 , representing a floppy diskette drive, a magnetic tape drive, a compact disk drive, etc., where a copy of a computer program embodiment for the application service  120  may be stored. The removable storage drive  512  reads from and/or writes to a removable storage unit  514  in a well-known manner. A user interfaces with the application service  120  with a keyboard  516 , a mouse  518 , and a display  520 . The display adapter  522  interfaces with the communication bus  504  and the display  520 . A display adapter  522  also receives display data from the processor  502  and converts the display data into display commands for the display  520 . 
         [0053]    Certain embodiments may be performed as a computer program. The computer program may exist in a variety of forms both active and inactive. For example, the computer program can exist as software program(s) comprised of program instructions in source code, object code, executable code or other formats; firmware program(s); or hardware description language (HDL) files. Any of the above can be embodied on a computer readable medium, which include storage devices and signals, in compressed or uncompressed form. Exemplary computer readable storage devices include conventional computer system RAM (random access memory), ROM (read-only memory), EPROM (erasable, programmable ROM), EEPROM (electrically erasable, programmable ROM), and magnetic or optical disks or tapes. Exemplary computer readable signals, whether modulated using a carrier or not, are signals that a computer system hosting or running the present invention can be configured to access, including signals downloaded through the Internet or other networks. Concrete examples of the foregoing include distribution of executable software program(s) of the computer program on a CD-ROM or via Internet download. In a sense, the Internet itself, as an abstract entity, is a computer readable medium. The same is true of computer networks in general. 
         [0054]    While the invention has been described with reference to the exemplary embodiments thereof, 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. 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.