Commercial software licensing A. Introduction: Software products are usually distributed with a License, which describes what can and cannot be done with the Software. Standard licenses (GPL,MIT etc.) are common in open-source and free SW, but most commercial SW vendors phrase their license independently, and not according to any known standards. Therefore licenses should be divided to models. The following document will cover the license models (section b), define what models will be taken into account in our project by minimizing the models (section c), and define the class hierarchy (section d). B. License models: following is a list of license models and their description , note that the models are analyzed mainly by their distribution and use, and that a "real" license might match to more than one model. Name Free distribution and use Description The most "free" license, place no restrictions on distribution and use. Usually permits redistribution as long as the original license is used (GPL), credit is given to the original SW programmer (BSD). Sometimes no restriction is placed (MIT). Project's handling No support. Due to its loose terms of use license management isn't needed. Capacity or performance – The usage is limited by capacity (e.g. SW that deals with large databases) of performance (e.g. SW that run on a specific server). Evaluation The usage is limited by time, usually a month, in which the user is allowed to evaluate the SW in order to determine if it fit it's needs. The usage is limited by time, usually a year. During that time the user (or users) is allowed to use the program as agreed. The usage is granted to all users in certain geographic location, mainly used by large customers. Partial support. Due to the lack of "client crawler" that supply information on the usage time\CPU there isn't any way to present data related to actual usage. Therefore the license will contain additional data regarding the usage limits (e.g. DB size in MB). Full support. The expiration date will be saved in the license object. Full support. The expiration date will be saved in the license object. Full support. Information about the user's working site will be retrieved from the Ldap server. Partial support. Time limited Site Concurrent the usage is granted to a number of users with concurrency restriction (e.g. if you have 9 computers that run WordPerfect Office, but never more than 4 at one time, then you only need 4 licenses). Pay per use The customer pays according to the usage (the usage can be measured by time\CPU etc.). Typical to Saas. OEM (original equipment manufacturer) A license that bind (usually by the hardware manufacturer) to a specific computer. Using the same license on other computer is strictly forbidden. Node locked The license is bind to one or more computer systems and can't be transferred. Named user The license is granted to one or more login ID's (user-names). Group The license is granted to all members of a certain group. End user license agreement The license is granted to an individual, usually to one computer (almost all retail SW is sold that way). Due to the dynamic change in usage and the lack of "server's crawler" that will supply data on usage the model can't be fully represented. The maximum number of concurrent users will be saved. Partial support. Due to the lack of "client crawler" that supply information on the usage time\CPU there isn't any way to present real data on such licenses. All eligible users will be saved. Full support. Hardware piece will be represented in the project using its company ID. The hardware object will hold all its licenses. Full support. Hardware piece will be represented in the project using its company ID. The hardware object will hold all its licenses. Full support. The user name will act as a key. Full support. Information about the user's group will be retrieved from the Ldap server. Partial support. Number of computers will be saved as additional data. C. Optimized model group: To reduce duplicates and due to the partial support given to some models, we opted to minimize the model list to 4 models. Each model represents certain license properties. Limit → License ↓ Hardware attached Group of users Time Num of users Hardware Other X√ X √ Tags – OEM. X√ √ X Usage X√ X√ X√ Tags Number of computers allowed for each user should be determined – default is 1. Tags Various options – data size, CPU, actual usage time. √ X Concurrent X√ D. Additional Definitions 1. User element – all users will be represented by the user element. 2. Machine element – all hardware parts that has one or more licenses from "Hardware attached" kind will be represented by this element. 3. License holders – a license holder is any element that can be a license owner. Therefore "user element" and "machine element" are license holders. 4. LDAPGroup – an entity representing a collection of license holders defined by the LDAP server, and is in itself a license holder. All holders in the group share possession of the license. 5. License tags – the licenses will have additional information that will be described with key-value properties object. See UML diagram on the next page bibliography: http://en.wikipedia.org/wiki/Proprietary_software http://www.aaxnet.com/topics/slicense.html http://www.iusmentis.com/computerprograms/licenses/choosing/ http://www.oilit.com/papers/licenstracker.pdf http://revgengroup.com/resources/25+Software+Licensing+Models.pdf