Sign up to receive free email alerts when patent applications with chosen keywords are publishedSIGN UP

Abstract:

A "Bring Your Own License" (BYOL) service can convert users'
"off-the-shelf" (OTS) software licenses for use in public clouds
according to rules provided by independent software vendors (ISVs). The
BYOL service can offer additional license terms to the users during
conversion of the OTS software license on behalf of the ISVs. The
additional license terms can be an expansion of the use of the software,
an expansion of the technical support offer by the new cloud license, and
expansion of the duration of use.

Claims:

1. A method for extending use of off-the-shelf software in a cloud
computing environment, comprising: receiving, from a software vendor,
additional license terms to offer during conversion of a software license
associated with a software program to be used in a cloud; storing a
record of the additional license terms in a computer readable storage
medium; converting the software license to a cloud software license,
wherein the conversion is requested by an owner of the software license;
offering, to the owner of the software license, the additional license
terms for purchase; and modifying the cloud software license upon
purchase of at least one of the additional license terms.

2. The method of claim 1, the method further comprising: notifying the
software vendor of the purchase of at least one of the additional license
terms.

3. The method of claim 1, wherein the record comprises an identification
of the software vendor, the additional license terms, and a charge to
purchase the additional license terms.

4. The method of claim 1, the method further comprising: negotiating
payment of a charge to purchase at least one of the additional license
terms.

5. The method of claim 1, the method further comprising: providing an
interface to offer the additional license terms.

6. The method of claim 1, wherein the additional license terms comprise
at least one of an increased usage of the software program, an increased
duration of use of the software program, and technical support for the
software program.

7. The method of claim 1, the method further comprising: receiving a fee
from the software vendor for offering the additional license terms.

8. A computer readable storage medium comprising instructions for causing
a processing system to perform a method, comprising: receiving, from a
software vendor, additional license terms to offer during conversion of a
software license associated with a software program to be used in a
cloud; storing a record of the additional license terms in a computer
readable storage medium; converting the software license to a cloud
software license, wherein the conversion is requested by an owner of the
software license; offering, to the owner of the software license, the
additional license terms for purchase; and modifying the cloud software
license upon purchase of at least one of the additional license terms.

9. The computer readable storage medium of claim 8, the method further
comprising: notifying the software vendor of the purchase of at least one
of the additional license terms.

10. The computer readable storage medium of claim 8, wherein the record
comprises an identification of the software vendor, the additional
license terms, and a charge to purchase the additional license terms.

11. The computer readable storage medium of claim 8, the method further
comprising: negotiating payment of a charge to purchase at least one of
the additional license terms.

12. The computer readable storage medium of claim 8, the method further
comprising: providing an interface to offer the additional license terms.

13. The computer readable storage medium of claim 8, wherein the
additional license terms comprise at least one of an increased usage of
the software program, an increased duration of use of the software
program, and technical support for the software program.

14. The computer readable storage medium of claim 8, the method further
comprising: receiving a fee from the software vendor for offering the
additional license terms.

15. A system for extending use of off-the-shelf software in a cloud
computing environment, comprising: a network interface to a software
vendor and a user; a computer readable storage medium; and a processor
communicating with the network interface and executing a conversion
module, the conversion module being configured to- receive, from the
software vendor, additional license terms to offer during conversion of a
software license associated with a software program to be used in a
cloud; store a record of the additional license terms in the computer
readable storage medium; convert the software license to a cloud software
license, wherein the conversion is requested by the user; offer, to the
user, the additional license terms for purchase; and modify the cloud
software license upon purchase of at least one of the additional license
terms.

16. The system of claim 15, the conversion module being further
configured to- notify the software vendor of the purchase of at least one
of the additional license terms.

17. The system of claim 15, wherein the record comprises an
identification of the software vendor, the additional license terms, and
a charge to purchase the additional license terms.

18. The system of claim 15, the conversion module being further
configured to- negotiate payment of a charge to purchase at least one of
the additional license terms.

19. The system of claim 15, wherein the additional license terms comprise
at least one of an increased usage of the software program, an increased
duration of use of the software program, and technical support for the
software program.

20. The system of claim 15, the conversion module being further
configured to- receive a fee from the software vendor for offering the
additional license terms.

Description:

FIELD

[0001] This invention relates generally to products and services, more
particularly, to systems and methods for cloud computing related services
and products.

DESCRIPTION OF THE RELATED ART

[0002] The advent of cloud-based computing architectures has opened new
possibilities for the rapid and scalable deployment of virtual Web
stores, media outlets, and other on-line sites or services. In general, a
cloud-based architecture deploys a set of hosted resources such as
processors, operating systems, software and other components that can be
combined or strung together to form virtual machines. A user or customer
can request the instantiation of a virtual machine or set of machines
from those resources from a central server or management system to
perform intended tasks or applications. For example, a user may wish to
set up and instantiate a virtual server from the cloud to create a
storefront to market products or services on a temporary basis, for
instance, to sell tickets to an upcoming sports or musical performance.
The user can lease or subscribe to the set of resources needed to build
and run the set of instantiated virtual machines on a comparatively
short-term basis, such as hours or days, for their intended application.

[0003] Typically, to utilize the cloud, the user must rely on the software
provided by the cloud. This, however, can raise the cost for the user to
utilize the cloud. Because the user is relying on cloud to provide the
software, the cost of the software will be added to the fee paid by the
user to access the cloud. Additionally, this may waste resources already
held by the user. For example, the user may already own software licenses
for the same software being provided by the cloud.

BRIEF DESCRIPTION OF THE DRAWINGS

[0004] 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:

[0005]FIG. 1 illustrates an overall cloud system architecture in which
various embodiments of the present teachings can be practiced;

[0006]FIG. 2 illustrates an overall cloud system architecture in which
various embodiments of the present teachings can be practiced in another
regard including multiple cloud arrangements, according to various
embodiments;

[0007]FIG. 3 illustrates an overall system in which a service can provide
software license conversion for use in cloud computing environments,
according to various embodiments;

[0008]FIG. 4A illustrates an exemplary record for storing rules
associated with the software license conversion, according to various
embodiments;

[0009]FIG. 4B illustrates an exemplary record for storing additional
license terms associated with the software license conversion, according
to various embodiments;

[0010]FIG. 5 illustrates an exemplary hardware configuration for a
computing system supporting the service, according to various
embodiments; and

[0011]FIG. 6 illustrates a flowchart of an exemplary process for
converting software licenses, according to various embodiments.

DETAILED DESCRIPTION OF EMBODIMENTS

[0012] For simplicity and illustrative purposes, the principles of the
present teachings 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 systems, and that any
such variations do not depart from the true spirit and scope of the
present teachings. 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 teachings. The following detailed description
is, therefore, not to be taken in a limiting sense and the scope of the
present teachings is defined by the appended claims and their
equivalents.

[0013] Embodiments of the present teachings relate to systems and methods
for enabling users to utilize standard software licenses in public cloud
computing environments. More particularly, embodiments relate to
platforms and techniques in which a "Bring Your Own License" (BYOL)
service can convert users' "off-the-shelf" (OTS) software licenses for
use in public clouds according to rules provided by independent software
vendors (ISVs).

[0014] According to embodiments, a BYOL service can be configured to
provide software license conversion and license monitoring services to
software users and ISVs. In particular, the BYOL service can be
configured to register the ISVs with the BYOL service. The BYOL service
can be configured to receive, from the ISVs, rules by which to convert
terms of OTS software licenses, provided by the ISVs, to terms relevant
to public clouds. The rules provided by art ISV can convert the terms
associated with the ISV's OTS software licenses (e.g. number of
instances, number of users, duration, technical support provided) to
terms associated with public clouds (e.g. number of concurrent users,
number of virtual machines, number of different clouds, technical
support). Once received, the BYOL service can be configured to store the
rules for each ISV in ISV records.

[0015] According to embodiments, the BYOL service can be configured to
register users that wish to use OTS software programs with OTS software
licenses in public clouds. Once registered, the BYOL service can receive
requests for the users to convert OTS software licenses, held by the
user, to licenses for use in a public cloud. In particular, a particular
user can identify an OTS software license, held by the user, by providing
information such as software name, associated ISV, number of OTS software
licenses held, and terms of the OTS software license (if necessary). The
BYOL service can search the ISV records for the appropriate rules to
convert the terms of the OTS software license, held by the user, to a new
cloud software license for use in the public cloud. Once converted, the
BYOL service can notify the user and the appropriate ISV of the terms of
the new cloud software license. Additionally, the BYOL can be configured
to store the new cloud software license, including the converted terms,
in a record associated with the particular user and the ISV.

[0016] According to embodiments, the BYOL service can be configured to
offer additional license terms to the users during conversion of the OTS
software license on behalf of the ISVs. The BYOL service can be
configured to receive, from the ISVs, additional license terms that can
expand or modify the new cloud software license. Additionally, the BYOL
service can be configured to receive, from the ISVs, a charge associated
with the additional license terms. Once an OTS software license is
converted for a particular user, the BYOL service can be configured to
offer the additional license terms to the user at the charge specified by
the ISV. The additional license terms can be any type of terms that were
not contemplated by the OTS software license but relevant to the use of
the software in a public cloud. For example, the additional license terms
can be an expansion of the use of the software (e.g. additional
concurrent users, additional virtual machines, additional number of cloud
deployments beyond the converted license terms), an expansion of the
technical support offer by the new cloud license (e.g. technical support
for the cloud deployment), expansion of the duration, and the like.

[0017] According to embodiments, if the user accepts the additional
license terms, the BYOL service can be configured to notify the
appropriate ISV of the acceptance of the additional license terms.
Likewise, the BYOL service can be configured to negotiate payment of the
charge for the additional license terms with the user and forward the
payment to the appropriate ISV. Additionally, the BYOL service can be
configured to establish a communication channel between the user and the
appropriate ISV in the event the user and ISV desire to negotiate the
additional license terms and/or payment of the charge.

[0018] By providing license conversion, the BYOL service allows the user
to utilize already purchased software programs in public clouds.
Accordingly, the user can reduce the cost required to migrate computing
processes to the cloud. Additionally, the BYOL service allows ISVs to
extend their OTS software to the cloud computing environments. Also, by
offering additional license terms, the BYOL allows the ISVs to extend
their revenue stream associated with the OTS software.

[0019]FIG. 1 illustrates an overall cloud computing environment, in which
systems and methods for the management of subscriptions of cloud-based
virtual machines can operate, according to embodiments of the present
teachings. Embodiments described herein can be implemented in or
supported by a cloud network architecture. As used herein, a "cloud" can
comprise a collection of resources that can be invoked to instantiate a
virtual machine, process, or other resource for a limited or defined
duration. As shown for example in FIG. 1, the collection of resources
supporting a cloud 102 can comprise a set of resource servers 108
configured to deliver computing components needed to instantiate a
virtual machine, process, or other resource. For example, one group of
resource servers can host and serve an operating system or components
thereof to deliver to and instantiate a virtual machine. Another group of
resource servers can accept requests to host computing cycles or
processor time, to supply a defined level of processing power for a
virtual machine. A further group of resource servers can host and serve
applications to load on an instantiation of a virtual machine, such as an
email client, a browser application, a messaging application, or other
applications or software. Other types of resource servers are possible.

[0020] In embodiments, the entire set of resource servers 108 or other
hardware or software resources used to support the cloud 102 along with
its instantiated virtual machines can be managed by a cloud management
system 104. The cloud management system 104 can comprise a dedicated or
centralized server and/or other software, hardware, and network tools
that communicate via one or more networks 106 such as the Internet or
other public or private network with all sets of resource servers to
manage the cloud 102 and its operation. To instantiate a new set of
virtual machines, a user can transmit an instantiation request to the
cloud management system 104 for the particular type of virtual machine
they wish to invoke for their intended application. A user can for
instance make a request to instantiate a set of virtual machines
configured for email, messaging or other applications from the cloud 102.
The request can be received and processed by the cloud management system
104, which identifies the type of virtual machine, process, or other
resource being requested. The cloud management system 104 can then
identify the collection of resources necessary to instantiate that
machine or resource. In embodiments, the set of instantiated virtual
machines or other resources can for example comprise virtual transaction
servers used to support Web storefronts, or other transaction sites.

[0021] In embodiments, the user's instantiation request can specify a
variety of parameters defining the operation of the set of virtual
machines to be invoked. The instantiation request, for example, can
specify a defined period of time for which the instantiated machine or
process is needed. The period of time can be, for example, an hour, a
day, or other increment of time. In embodiments, the user's instantiation
request can specify the instantiation of a set of virtual machines or
processes on a task basis, rather than for a predetermined amount of
time. For instance, a user could request resources until a software
update is completed. The user's instantiation request can specify other
parameters that define the configuration and operation of the set of
virtual machines or other instantiated resources. For example, the
request can specify an amount of processing power or input/output (I/O)
throughput the user wishes to be available to each instance of the
virtual machine or other resource. In embodiments, the requesting user
can for instance specify a service level agreement (SLA) acceptable for
their application. Other parameters and settings can be used. One skilled
in the art will realize that the user's request can likewise include
combinations of the foregoing exemplary parameters, and others.

[0022] When the request to instantiate a set of virtual machines or other
resources has been received and the necessary resources to build that
machine or resource have been identified, the cloud management system 104
can communicate with one or more set of resource servers 108 to locate
resources to supply the required components. The cloud management system
104 can select providers from the diverse set of resource servers 108 to
assemble the various components needed to build the requested set of
virtual machines or other resources. It may be noted that in some
embodiments, permanent storage such as hard disk arrays may not be
included or located within the set of resource servers 108 available to
the cloud management system 104, because the set of instantiated virtual
machines or other resources may be intended to operate on a purely
transient or temporary basis. In embodiments, other hardware, software or
other resources not strictly located or hosted in the cloud can be
leveraged as needed. For example, other software services that are
provided outside of the cloud 102 and hosted by third parties can be
invoked by in-cloud virtual machines. For further example, other
non-cloud hardware and/or storage services can be utilized as an
extension to the cloud 102, either on an on-demand or subscribed or
decided basis.

[0023] With the resource requirements identified, the cloud management
system 104 can extract and build the set of virtual machines or other
resources on a dynamic or on-demand basis. For example, one set of
resource servers 108 can respond to an instantiation request for a given
quantity of processor cycles with an offer to deliver that computational
power immediately and guaranteed for the next hour. A further set of
resource servers 108 can offer to immediately supply communication
bandwidth, for example on a guaranteed minimum or best-efforts basis. In
other embodiments, the set of virtual machines or other resources can be
built on a batch basis or at a particular future time. For example, a set
of resource servers 108 can respond to a request for instantiation at a
programmed time with an offer to deliver the specified quantity of
processor cycles within a specific amount of time, such as the next 12
hours.

[0024] The cloud management system 104 can select a group of servers in
the set of resource servers 108 that match or best match the
instantiation request for each component needed to build the virtual
machine or other resource. The cloud management system 104 can then
coordinate the integration of the completed group of servers from the set
of resource servers 108, to build and launch the requested set of virtual
machines or other resources. The cloud management system 104 can track
the combined group of servers selected from the set of resource servers
108, or other distributed resources that are dynamically or temporarily
combined, to produce and manage the requested virtual machine population
or other resources.

[0025] In embodiments, the cloud management system 104 can generate a
resource aggregation table that identifies the various sets of resource
servers that will be used to supply the components of the virtual machine
or process. The sets of resource servers can be identified by unique
identifiers such as, for instance, Internet Protocol (IP) addresses or
other addresses. The cloud management system 104 can register the
finalized group of servers in the set resource servers 108 contributing
to an instantiated machine or process.

[0026] The cloud management system 104 can then set up and launch the
initiation process for the virtual machines, processes, or other
resources to be delivered from the cloud. The cloud management system 104
can for instance transmit an instantiation command or instruction to the
registered group of servers in set of resource servers 108. The cloud
management system 104 can receive a confirmation message back from each
participating server in a set of resource servers 108 indicating a status
regarding the provisioning of their respective resources. Various sets of
resource servers can confirm, for example, the availability of a
dedicated amount of processor cycles, amounts of electronic memory,
communications bandwidth, or applications or other software prepared to
be served.

[0027] As shown for example in FIG. 2, the cloud management system 104 can
then instantiate one or more than one set of virtual machines 116, or
other processes based on the resources supplied by the registered set of
resource servers 108. In embodiments, the cloud management system 104 can
instantiate a given number, for example, 10, 500, 1000, or other number
of virtual machines to be made available to users on a network 106, such
as the Internet or other public or private network. Each virtual machine
can be assigned an instantiated machine ID that can be stored in the
resource aggregation table, or other record or image of the instantiated
population. Additionally, the cloud management system 104 can store the
duration of each virtual machine and the collection of resources utilized
by the complete set of instantiated virtual machines 116.

[0028] In embodiments, the cloud management system 104 can further store,
track and manage a user's identity and associated set of rights or
entitlements to software, hardware, and other resources. Each user that
populates a set of virtual machines in the cloud can have specific rights
and resources assigned and made available to them. The cloud management
system 104 can track and configure specific actions that a user can
perform, such as provision a set of virtual machines with software
applications or other resources, configure a set of virtual machines to
desired specifications, submit jobs to the set of virtual machines or
other host, manage other users of the set of instantiated virtual
machines 116 or other resources, and other privileges or actions. The
cloud management system 104 can further generate records of the usage of
instantiated virtual machines to permit tracking, billing, and auditing
of the services consumed by the user. In embodiments, the cloud
management system 104 can for example meter the usage and/or duration of
the set of instantiated virtual machines 116, to generate subscription
billing records for a user that has launched those machines. Other
billing or value arrangements are possible.

[0029] The cloud management system 104 can configure each virtual machine
to be made available to users of the one or more networks 106 via a
browser interface, or other interface or mechanism. Each instantiated
virtual machine can communicate with the cloud management system 104 and
the underlying registered set of resource servers 108 via a standard Web
application programming interface (API), or via other calls or
interfaces. The set of instantiated virtual machines 116 can likewise
communicate with each other, as well as other sites, servers, locations,
and resources available via the Internet or other public or private
networks, whether within a given cloud 102 or between clouds.

[0030] It may be noted that while a browser interface or other front-end
can be used to view and operate the set of instantiated virtual machines
116 from a client or terminal, the processing, memory, communications,
storage, and other hardware as well as software resources required to be
combined to build the virtual machines or other resources are all hosted
remotely in the cloud 102. In embodiments, the set of virtual machines
116 or other resources may not depend on or require the user's own
on-premise hardware or other resources. In embodiments, a user can
therefore request and instantiate a set of virtual machines or other
resources on a purely off-premise basis, for instance to build and launch
a virtual storefront or other application.

[0031] Because the cloud management system 104 in one regard specifies,
builds, operates and manages the set of instantiated virtual machines 116
on a logical level, the user can request and receive different sets of
virtual machines and other resources on a real-time or near real-time
basis, without a need to specify or install any particular hardware. The
user's set of instantiated virtual machines 116, processes, or other
resources can be scaled up or down immediately or virtually immediately
on an on-demand basis, if desired. In embodiments, the various sets of
resource servers that are accessed by the cloud management system 104 to
support a set of instantiated virtual machines 116 or processes can
change or be substituted, over time. The type and operating
characteristics of the set of instantiated virtual machines 116 can
nevertheless remain constant or virtually constant, since instances are
assembled from abstracted resources that can be selected and maintained
from diverse sources based on uniform specifications.

[0032] In terms of network management of the set of instantiated virtual
machines 116 that have been successfully configured and instantiated, the
cloud management system 104 can perform various network management tasks
including security, maintenance, and metering for billing or subscription
purposes. The cloud management system 104 of a given cloud 102 can, for
example, install or terminate applications or appliances on individual
machines. The cloud management system 104 can monitor operating virtual
machines to detect any virus or other rogue process on individual
machines, and for instance terminate the infected application or virtual
machine. The cloud management system 104 can likewise manage an entire
set of instantiated virtual machines 116 or other resources on a
collective basis, for instance, to push or deliver a software upgrade to
all active virtual machines. Other management processes are possible.

[0033] In embodiments, more than one set of virtual machines can be
instantiated in a given cloud at the same, overlapping or successive
times. The cloud management system 104 can, in such implementations,
build, launch and manage multiple sets of virtual machines based on the
same or different underlying set of resource servers 108, with
populations of different sets of instantiated virtual machines 116 such
as may be requested by different users. The cloud management system 104
can institute and enforce security protocols in a cloud 102 hosting
multiple sets of virtual machines. Each of the individual sets of virtual
machines can be hosted in a respective partition or sub-cloud of the
resources of the cloud 102. The cloud management system 104 of a cloud
can for example deploy services specific to isolated or defined
sub-clouds, or isolate individual workloads/processes within the cloud to
a specific sub-cloud. The subdivision of the cloud 102 into distinct
transient sub-clouds or other sub-components which have assured security
and isolation features can assist in establishing a multiple user or
multi-tenant cloud arrangement. In a multiple user scenario, each of the
multiple users can use the cloud platform as a common utility while
retaining the assurance that their information is secure from other users
of the overall cloud system. In further embodiments, sub-clouds can
nevertheless be configured to share resources, if desired.

[0034] In embodiments, and as also shown in FIG. 2, the set of
instantiated virtual machines 116 generated in a first cloud 102 can also
interact with a set of instantiated virtual machines or processes
generated in a second, third or further cloud 102. The cloud management
system 104 of a first cloud 102 can interface with the cloud management
system 104 of a second cloud 102, to coordinate those domains and operate
the clouds and/or virtual machines or processes on a combined basis. The
cloud management system 104 of a given cloud 102 can track and manage
individual virtual machines or other resources instantiated in that
cloud, as well as the set of instantiated virtual machines or other
resources in other clouds.

[0035] In the foregoing and other embodiments, the user making an
instantiation request or otherwise accessing or utilizing the cloud
network can be a person, customer, subscriber, administrator,
corporation, organization, or other entity. In embodiments, the user can
be or include another virtual machine, application or process. In further
embodiments, multiple users or entities can share the use of a set of
virtual machines or other resources.

[0036]FIG. 3 illustrates aspects of a network environment 300 in which a
"Bring Your Own License" (BYOL) service 302 can communicate with one or
more independent software vendors (ISVs) 304 and one or more users 306,
308, and 310, via one or more networks 312, according to various
embodiments. In particular, the BYOL service 302 can be configured to
provide software license conversion and management services to the ISVs
304 and the users 306, 308, and 310. While FIG. 3 illustrates various
components of the network environment 300, one skilled in the art will
realize that components can be added or removed.

[0037] In embodiments, the one or more users 306, 308, and 310 can utilize
one or more of the clouds 314 to support computing processes of the users
306, 308, and 310. The computing processes can be any type of computing
processes, such as virtual machines, software appliances, software
programs (e.g. OS, applications and the like), etc. The users 306, 308,
and 310 can be any type of entity, such as individual users,
corporations, companies, universities, and the like, that utilizes the
clouds 314 to support computing processes. While FIG. 3 will be described
below, in examples, with specific reference to the user 310, one skilled
in the art will realize that the processes and methods can apply to any
of the users 306, 308, and 310 or any other users. Additionally, while
FIG. 3 illustrates users 306, 308, and 310, one skilled in the art will
realize that methods and processes can apply to any number of users.

[0038] In embodiments, the clouds 314 can be any type of cloud computing
environment, such as the cloud computing environments described above in
FIGS. 1 and 2. As described above, the clouds 314 can include any number
of computing systems to support the computing processes in the cloud. The
computing systems can be any type of computing systems capable of
supporting computing processes, such as servers, laptops, desktops, and
the like. The computing systems can include a number of hardware
resources, which are used to support the computing processes (e.g.
virtual machines, software appliances, processes, software programs, and
the like) in the clouds 314, such as processors, memory, network hardware
and bandwidth, storage devices, etc. Additionally, each of the clouds 314
can include a cloud management system as described above. The cloud
management systems can be supported by the computing resources of their
respective clouds 314 or supported by independent computing systems.

[0039] In embodiments, the clouds 314 can be operated and controlled by
any number of entities. For example, one or more of the clouds 314 can be
owned and/or operated by a public cloud vendor, such as Amazon®, Inc.,
in order to provide the services of the cloud to subscribers and
customers. Likewise, for example, one or more of the clouds 314 can be
owned and/or operated by one or more of the users 306, 308, and 310, and
the resources of the cloud can be used by the entity, internally, to
support various computing processes. In either case, the clouds 314 can
be configured to include hardware, described above, and software
resources to support computing processes. For example, if a particular
cloud 314 is operated by a public cloud vendor, the software resources
can include operating systems, such as a distribution of Linux provided
by Red Hat® Corporation, and various software programs requested or
typically desired by subscribers, such as middleware applications, web
hosting applications, electronic mail (email) applications, and the like.

[0040] In embodiments, the one or more networks 312 can be or include the
Internet, or other public or private networks. The one or more or more
networks 312 can be or include wired, wireless, optical, and other
network connections. One skilled in the art will realize that the one or
more networks 312 can be any type of network, utilizing any type of
communication protocol, to connect the computing systems.

[0041] As mentioned above, the clouds 314 can provide software resources
such as software programs to the users 306, 308, and 310. Typically, the
clouds 314 will offer access to these software resources for a fee. The
users 306, 308, and 310 can desire to utilize software programs, already
purchased and owned by the users, in the clouds 314. For example, the
user 310 can own an "off-the-shelf" (OTS) software program 316 provided
by one of the ISVs 304. In embodiments, the user 310 can desire to
utilize the OTS software program 316 in one or more of the clouds 314,
such as a public cloud. The OTS software program 316 can be covered by an
OTS software license 318. When the user 310 purchased the OTS software
program 316, the user 310 agreed to the terms of the OTS software license
318. The terms of the OTS software license 318 can be tailored to cover
the use of the OTS software program 316 on computing systems owned and
operated by the user 310. The terms of the OTS software license 318 can
include number of users allowed to utilize the OTS software program 316,
the number of instances of the OTS software program 316 allowed to
operate simultaneously, the duration of the OTS software license 318, and
technical support provided by the ISV 304. The terms of the OTS software
license 318, however, may not be applicable or translate to the use of
the OTS software program 316 in the clouds 314. In fact, the terms of the
OTS software license 318 may prohibit or restrict the use of the OTS
software program 316 in the clouds 314.

[0042] In embodiments, the BYOL service 302 can be configured to provide a
service to convert OTS software licenses offered by the ISVs 304 and
owned by the users 306, 308, and 310, into new cloud software licenses so
that the users 306, 308, and 310 can utilize OTS software programs in the
clouds 314. To convert the OTS software licenses, the BYOL service 302
can be configured to convert the OTS software licenses according to rules
provided by the ISVs 304. The BYOL service 302 can be operated by an
entity that provides the conversion services to the users 306, 308, and
310 and the ISVs 304. The conversion services can be provided to the
users 306, 308, and 310 and the ISVs 304 at a fee. The BYOL service 302
can be supported by one or more computing systems, such as servers,
laptops, desktops, and the like, which include conventional components of
a computing system, such as such as processors, memory, network
interfaces, computer readable storage media and devices, etc. Likewise,
the BYOL service 302 can be provided and supported by one or more of the
clouds 314.

[0043] In embodiments, the conversion processes of the BYOL service 302
can be performed by a conversion module 320. The conversion module 320
can be implemented as a software program that is configured to perform
the conversion services as described herein. Likewise, the conversion
module 320 can be implemented as a portion of other software programs. In
either case, the conversion module 320 can be configured to include the
necessary logic, commands, instructions, and protocols to perform the
processes described herein. In any implementation, the conversion module
320 can be written in any type of conventional programming language such
as C, C++, JAVA, Perl, and the like. Additionally, the conversion module
320 can be stored in computer readable storage devices or media (CD, DVD,
hard drive, portable storage memory, etc.) whether local to computing
systems supporting the BYOL service 302 or remotely located.

[0044] In embodiments, to provide the conversion services, the BYOL
service 302 can be configured to register the ISVs 304 with the BYOL
service 302. The BYOL service 302 can be configured to receive, from the
ISVs 304, rules by which to convert terms of OTS software licenses,
provided by the ISVs 304, to terms relevant to the clouds 314. To
register the ISVs 304, the BYOL service 302 can be configured to provide
an interface 322 to register the ISVs 304 and to receive the rules from
the ISVs 304. The interface 322 can be configured to provide the details
and terms of the conversion services (conversion services offered, fee,
etc.). Likewise, if an ISV 304 accepts the offer of conversion services,
the interface 322 can be configured to receive, from the ISV 304, the
rules for converting the OTS software licenses. To achieve this, the
conversion module 320 can be configured to include the necessary logic,
commands, instructions, and protocols to generate and provide the
interface 322, such as command line or graphical user interfaces (GUIs),
to receive the request for the conversion services.

[0045] The conversion module 320 can be configured to provide the
interface 322 to the ISVs 304 via the network 312 utilizing any type of
network protocol, such as Internet protocol (IP), user datagram protocol
(UDP), transmission control protocol (TCP), hypertext transfer protocol
(HTTP), file transfer protocol (FTP), electronic mail (email) protocols,
or any other type of known or proprietary network protocol. Likewise, the
conversion module 320 can be configured to allow software programs
executing on the computing systems of the ISVs 304 to provide the
request. The conversion module 320 can be configured to include an
application programming interface (API) to provide the interface 322 that
allows software programs of the ISVs 304 to call the conversion module
320 and provide the request.

[0046] In embodiments, the rules provided by an ISV 304 can convert the
terms associated with the ISV's OTS software licenses to terms associated
with the clouds 314. For example, the rules can define general rules for
converting general terms associated with any OTS software licenses (e.g.
number of instances, number of users, duration, technical support
provided) to general terms associated with the clouds 314 (e.g. number of
concurrent users, number of virtual machines, number of different clouds,
technical support). Likewise, the rules can define specific rules for
converting a particular OTS software license provided by a ISV 304 to a
new cloud software license.

[0047] In embodiments, once the rules are received, the BYOL service 302
can be configured to store the rules in a set 324 of ISV records 326. In
particular, the conversion module 320 can be configured to store the
rules for each ISV 304 in a ISV record 326 associated with an
identification of the ISV 304 (e.g. name). The conversion module 320 can
maintain the set 324 of ISV records 326 in a repository 328, such as a
database. The repository 328 can be stored in computer readable storage
devices or media (CD, DVD, hard drive, portable storage memory, etc.)
whether local to the computing systems supporting the BYOL service 302 or
remotely located.

[0048]FIG. 4A illustrates an exemplary ISV record 400 for a particular
ISV 304 "XYS Software Company", according to various embodiments. As
illustrated, the record 400 can include an entry 402 that identifies the
particular ISV 304 associated with the record 400. The record 400 also
include an entry 404 that defines the general rules for converting the
OTS software licenses. The entry 404 can include a table that maps the
terms of the OTS software license to terms associated with the clouds
314. As illustrated, the general rules, provided by the ISV 304, can
alter the terms of the original OTS software license, for example, no
technical support provided in the cloud. The record 400 can also include
an entry 406 that define the rules for specific OTS software programs. As
illustrated, for example, the ISV 304 can provide a rule that does not
permit conversion of OTS software licenses for the specific software
program "Word Processor version 1". While FIG. 4A illustrates several
rules for converting terms, one skilled in the art will realize that FIG.
4A is one example. The ISVs 304 can provide any rules for converting the
terms of an OTS software license to terms relevant to the cloud 314.

[0049] In embodiments, the BYOL service 302 can be configured to register
and to receive requests from the users 306, 308, and 310 that wish to use
OTS software programs in the clouds 314 and configured to convert the OTS
software licenses to new cloud software licenses. To register the users
306, 308, and 310, the BYOL service 302 can be configured to provide an
interface 330 to receive the request from the users 306, 308, and 310.
The interface 330 can be configured to provide the details and terms of
the conversion services (conversion services offered, fee, etc.).
Likewise, if one of the users 306, 308, and 310 accepts the offer of
conversion services, the interface 330 can be configured to receive, from
the users 306, 308, and 310, the details of the OTS software licenses to
be converted. To achieve this, the conversion module 320 can be
configured to include the necessary logic, commands, instructions, and
protocols to generate and provide the interface 330, such as command line
or graphical user interfaces (GUIs), to receive the request for the
conversion services.

[0050] The conversion module 320 can be configured to provide the
interface 330 to the users 306, 308, and 310 via the network 312
utilizing any type of network protocol, such as Internet protocol (IP),
user datagram protocol (UDP), transmission control protocol (TCP),
hypertext transfer protocol (HTTP), file transfer protocol (FTP),
electronic mail (email) protocols, or any other type of known or
proprietary network protocol. Likewise, the conversion module 320 can be
configured to allow software programs executing on the computing systems
of the users 306, 308, and 310 to provide the request. The conversion
module 320 can be configured to include an application programming
interface (API) to provide the interface 330 that allows software
programs of the users 306, 308, and 310 to call the conversion module 320
and provide the request.

[0051] In embodiments, the request provided by the users 306, 308, and 310
can identify the OTS software license held by the users 306, 308, and 310
by providing details such as software program name, identification of the
associated ISV, number of OTS software licenses held, and terms of the
OTS software license (if necessary). Once received, the conversion module
320 can be configured to search the set 324 of ISV records 326 to
identify the appropriate rules to convert the terms of the OTS software
license, held by the users 306, 308, and 310, to a new cloud software
license. Once identified, the conversion module 320 can be configured to
convert the requested OTS software license to the new cloud software
license. To achieve this, the conversion module 320 can be configured to
include the necessary logic, commands, instructions, and protocols to
search the set 324 of ISV records 326, to retrieve the appropriate rules,
and to convert the terms of the OTS software license according to the
retrieved rules.

[0052] For example, the user 310 can request to convert the OTS software
license 318 for the OTS software program 316. The user 310 can provide,
to the BYOL service 302, the details of the OTS software license such as
the OTS software program 316 name (e.g. "web server version 1"),
identification of the associated ISV 304 (e.g. "XYZ software company"),
number of OTS software licenses 318 held (e.g. "5"), and terms of the OTS
software license 318 (e.g. # of users: 5, # of instances: 3, duration: 1
year, technical support: limited 90 days). The BYOL service 302 can
retrieve the appropriate ISV record 326 (e.g. record 400) from the
repository 328 and can identify the rules for conversion. The BYOL
service 302 can then convert the terms of the OTS software license 318 to
terms for the cloud 314. For example, based on the rules in the example
record 400, each new cloud software license can include the terms--# of
concurrent users: 5, # of virtual machines: 3, duration in the cloud: 1
year, technical support: none.

[0053] In embodiments, once converted, the BYOL service 302 can be
configured to notify the appropriate users 306, 308, and 310 and the
appropriate ISVs 304 of the terms of the new cloud software license
converted for use in the clouds 314. The conversion module 320 can be
configured to notify the appropriate users 306, 308, and 310 and
appropriate ISVs 304 utilizing the interface 330 and 322, respectively.
Likewise, the BYOL service 302 can be configured to store the new cloud
license and the converted terms in a record 332 associated with the
appropriate users 306, 308, and 310 and the appropriate ISVs 304. The
conversion module 320 can be configured to maintain the record 332 in the
repository 328.

[0054] In embodiments, the BYOL service 302 can be configured to offer
additional license terms to the users 306, 308, and 310 during conversion
of the OTS software licenses on behalf of the ISVs 304. The additional
license terms can be any type of terms that were not contemplated by the
OTS software license but relevant to the use of the software in the
clouds 314. For example, the additional license terms can be an expansion
of the use of the OTS software programs (e.g. additional concurrent
users, additional virtual machines, additional number of cloud
deployments beyond the new cloud software license terms), an expansion of
the technical support offer by the new cloud license (e.g. technical
support for the cloud deployment), expansion of the duration, and the
like.

[0055] In embodiments, the BYOL service 302 can be configured to receive,
from the ISVs 304, the additional license terms that can expand or modify
the new cloud software license. Additionally, the BYOL service 302 can be
configured to receive, from the ISVs, a charge associated with the
additional license terms. In particular, the conversion module 320 can be
configured to receive the additional license terms in the interface 322.

[0056] In embodiments, once the additional license terms are received, the
BYOL service 302 can be configured to store the additional license terms
in a set 334 of ISV additional license terms (ALT) records 336. In
particular, the conversion module 320 can be configured to store the
additional license terms for each ISV 304 in a ALT record 336 associated
with an identification of the ISV 304 (e.g. name). The conversion module
320 can maintain the set 334 of ALT records 336 in a repository 328.

[0057]FIG. 4B illustrates an exemplary ALT record 450 for a particular
ISV 304 "XYS Software Company", according to various embodiments. As
illustrated, the record 450 can include an entry 452 that identifies the
particular ISV 304 associated with the record 450. The record 450 also
include an entry 454 that defines the additional license terms for
purchase and the cost of the additional license terms. The entry 454 can
include a table that maps the additional license terms to the cost
associated with the additional license terms. As illustrated, the general
rules, provided by the ISV 304, can alter the terms of the new cloud
software license, for example, by adding technical support provided in
the cloud. The record 450 can also include an entry 456 that define the
additional terms for purchase for specific OTS software programs. As
illustrated, for example, the ISV 304 can provide an option that allows
conversion of OTS software licenses for the specific software program
"Word Processor version 1". While FIG. 4B illustrates several additional
license terms, one skilled in the art will realize that FIG. 4B is one
example. The ISVs 304 can provide any additional terms that modify the
new cloud software license for a certain cost.

[0058] In embodiments, once an OTS software license is converted as
described above, the BYOL service 302 can be configured to offer the
additional license terms to the users 306, 308, and 310 requesting
conversion. In particular, the conversion module 320 can be configured to
search the set 334 of ALT records 336 to identify the additional license
terms and charge associated with the appropriate ISV 304. To achieve
this, the conversion module 320 can be configured to include the
necessary logic, commands, instructions, and protocols to search the set
334 of ALT records 336, and to retrieve the additional license terms.
Once identified, the conversion module 320 can be configured provide the
additional license terms and associated charge to the users 306, 308, and
310 via the interface 330. Likewise, the conversion module 320 can be
configured to receive the users 306, 308, and 310 acceptance of any
additional terms via the interface 330.

[0059] In embodiments, if any of the user 306, 308, and 310 accepts the
additional license terms, the BYOL service 302 can be configured to
notify the appropriate ISV 304 of the acceptance of the additional
license terms. In particular, the conversion module 320 can be configured
to notify the appropriate ISV 304 via the interface 322. Likewise, the
BYOL service 302 can be configured to negotiate payment of the charge for
the additional license terms with the users 306, 308, and 310 and forward
the payment to the appropriate ISV 304. In particular, the conversion
module 320 can be configured to negotiate payment of the charge for the
additional license terms with the users 306, 308, and 310 via the
interface 330 utilizing any type of known electronic payment procedure
and forward the payment to the appropriate ISV 304 utilizing the known
electronic payment procedures. If payments is accepted, the conversion
module 304 can be configured to modify the new cloud software license
according to the purchased additional license terms.

[0060] In embodiments, the BYOL service 302 can be configured to establish
a communication channel between the users 306, 308, and 310 and the
appropriate ISV 304 in the event the user 306, 308, and 310 and ISV 304
desire to negotiate the additional license terms and/or payment of the
charge.

[0061]FIG. 5 illustrates an exemplary diagram of hardware and other
resources that can be incorporated in a computing system 500 supporting
the BYOL service 302, which can implement the conversion module 320, and
configured to communicate with the one or more networks 312, according to
embodiments. In embodiments as shown, the computing system 500 can
comprise a processor 502 communicating with memory 504, such as
electronic random access memory, operating under control of or in
conjunction with operating system 506. Operating system 506 can be, for
example, a distribution of the Linux® operating system, such as
SELinux, the Unix® operating system, or other open-source or
proprietary operating system or platform. Processor 502 also communicates
with one or more computer readable storage media or devices 510, such as
hard drives, optical storage, and the like, which can store the
repository 330. Processor 502 further communicates with network interface
508, such as an Ethernet or wireless data connection, which in turn
communicates with one or more networks 312, such as the Internet or other
public or private networks.

[0062] Processor 502 also communicates with the conversion module 320 to
execute control logic and allow for software license conversion processes
as described above and below. Other configurations of the computing
system 500, associated network connections, and other hardware and
software resources are possible.

[0063] While FIG. 5 illustrates the computing system 500 as a standalone
system including a combination of hardware and software, the computing
system 500 can include multiple systems operating in cooperation. The
conversion module 320 can be implemented as a software application or
program capable of being executed by the computing system 500, as
illustrated, or other conventional computer platforms. Likewise, the
conversion module 320 can also be implemented as a software module or
program module capable of being incorporated in other software
applications and programs. In either case, the conversion module 320 can
be implemented in any type of conventional proprietary or open-source
computer language. When implemented as a software application or program
code, the conversion module can be stored in a computer readable storage
medium or device, such as storage 510 accessible by the computing system
500. Likewise, during execution, a copy of the conversion module 320 can
be stored in the memory 504.

[0064]FIG. 6 illustrates a flow diagram of an exemplary process for
providing a software license conversion service. In 602, processing can
begin. In 604, the BYOL service 302 can receive additional license terms
and associated charges from the ISVs 304 for offer during OTS license
conversion. For example, the additional license terms can be an expansion
of the use of the OTS software programs (e.g. additional concurrent
users, additional virtual machines, additional number of cloud
deployments beyond the new cloud software license terms), an expansion of
the technical support offer by the new cloud license (e.g. technical
support for the cloud deployment), expansion of the duration, and the
like.

[0065] In 606, the BYOL service 302 can store the rules in ALT records.
For example, the BYOL service 302 can store the additional license terms
in a set 334 of ISV additional license terms (ALT) records 336. In 608,
the BYOL service 302 can receive a request to convert an OTS software
license to a new cloud software license. For example, the request
provided by the users 306, 308, and 310 can identify the OTS software
license held by the users 306, 308, and 310 by providing details such as
software program name, identification of the associated ISV, number of
OTS software licenses held, and terms of the OTS software license (if
necessary).

[0066] In 610, the BYOL service 302 can convert the terms of the OTS
software license to the new cloud software license. For example, the BYOL
service 302 can search the set 324 of ISV records 326 to identify the
appropriate rules to convert the terms of the OTS software license, held
by the users 306, 308, and 310, to a new cloud software license. Once
identified, the BYOL service 302 can convert the requested OTS software
license to the new cloud software license.

[0067] In 612, the BYOL service 302 can offer the additional license terms
to the user requesting conversion. In 614, the BYOL service 302 can
modify the new cloud software license if the additional license terms are
accepted. For example, the BYOL service 302 can modify the terms of the
new cloud software license by the additional license terms that are
accepted and purchased.

[0068] In 616, the BYOL service 302 can notify the appropriate ISV 304 of
the accepted additional license terms. In 618, the process can end, but
the process can return to any point and repeat.

[0069] Certain embodiments may be performed as a computer application or
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 computer readable storage devices
and media, and signals, in compressed or uncompressed form. Exemplary
computer readable storage devices and media 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 teachings 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.

[0070] While the aspects have 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. 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.