aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/program/licentia/license/definition.lux
blob: 6739039dc648996ca5ab52855f9968f555bba0fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
(.module:
  [lux (#- Definition)
   [data
    ["." text
     ["%" format (#+ format)]]]]
  [///
   ["$" document]])

(type: #export Definition
  {#term Text
   #meaning Text})

(def: not-a-contribution-notice
  (format text.double-quote "Not a Contribution" text.double-quote))

(def: #export patent-rights
  (List Text)
  (list "make"
        "have made"
        "use"
        "offer to sell"
        "sell"
        "import"
        "transfer"))

(def: commercial-services
  (List Text)
  (let [services (: (-> Text Text)
                    (function (_ type)
                      (format type " services")))]
    (list (services "hosting")
          (services "consulting")
          (services "support"))))

(def: individual-capacities
  (List Text)
  (list "officer"
        "employee"
        "member"
        "independent contractor"
        "agent of a corporation, business or organization (commercial or non-commercial)"))

(def: covered-work-description
  "work of authorship")

(template [<name> <term> <meaning>]
  [(def: #export <name>
     Definition
     {#term <term>
      #meaning <meaning>})]

  [license "This License"
   ($.paragraph (list (format "the terms and conditions defined in this document")))]

  [licensable "Licensable"
   ($.paragraph (list (format "having the right to grant any and all of the rights conveyed by " (get@ #term license))))]

  [legal-entity "Legal Entity"
   (let [abilities (: (List Text)
                      (list "to enter into contracts"
                            "to sue"
                            "to be sued"))]
     ($.paragraph (list (format "any human or non-human entity that is recognized as having privileges and obligations, such as having the ability " ($.and abilities)))))]

  [recipient "Recipient"
   ($.paragraph (list (format "a " (get@ #term legal-entity) " exercising permissions by " (get@ #term license))))]

  [licensor "The Licensor"
   ($.paragraph (list (format "the copyright owner granting " (get@ #term license) ", or a " (get@ #term legal-entity) " authorized by the copyright owner")))]

  [source-code-form "Source Code Form"
   ($.paragraph (list (format "the preferred form of the " ..covered-work-description " in order to make modifications to it")))]

  [object-form "Object Form"
   ($.paragraph (list (format "any form produced by transforming a " (get@ #term source-code-form) ", including but not limited to compiled code and transpiled code")))]

  [work "The Work"
   ($.paragraph (list (format "the " ..covered-work-description
                              ", whether in a " (get@ #term source-code-form)
                              " or in an " (get@ #term object-form)
                              ", made available under " (get@ #term license)
                              ", as indicated by a copyright notice that is included in or attached to the " ..covered-work-description)))]

  [derivative-work "Derivative Work"
   ($.paragraph (list (format "any work, whether in a " (get@ #term source-code-form)
                              " or in an " (get@ #term object-form)
                              ", that is based on (or derived from) " (get@ #term work)
                              " and which represents an original " ..covered-work-description)))]

  [submission "Submission"
   (let [forms-of-communication (: (List Text)
                                   (list "electronic"
                                         "verbal"
                                         "written"))]
     ($.paragraph (list (format "any form of " ($.or forms-of-communication) " communication sent to " (get@ #term licensor)
                                ", or its representatives, for the purpose of discussing and improving " (get@ #term work)
                                ", but excluding communication that is designated in writing by the copyright owner as " not-a-contribution-notice))))]

  [modification "Modification"
   (let [alteration "any addition to, or deletion from, the substance or structure of"
         object "file or other storage"
         targets (: (List Text)
                    (list (format "a " object " contained in " (get@ #term work))
                          (format "any new " object " that contains any part of " (get@ #term work))
                          (format "any " object " which replaces or otherwise alters the original functionality of "(get@ #term work) " at runtime")))]
     ($.paragraph (list (format alteration " " ($.or targets)))))]

  [required-component "Required Component"
   (let [possibilities (: (List Text)
                          (list "text"
                                "program"
                                "script"
                                "schema"
                                "interface definition"
                                "control file"
                                "other work"))]
     ($.paragraph (list (format "any " ($.or possibilities)
                                " created by " (get@ #term recipient)
                                " which is required by a third party to successfully install and run a " (get@ #term derivative-work)
                                " by " (get@ #term recipient)))))]

  [extension "Extension"
   (let [possibilities (: (List Text)
                          (list (get@ #term modification)
                                (get@ #term derivative-work)
                                (get@ #term required-component)))]
     ($.paragraph (list (format "any " ($.or possibilities)))))]

  [contribution "Contribution"
   ($.paragraph (list (format "any " covered-work-description ", including the original version of " (get@ #term work)
                              " and any " (get@ #term extension) " to " (get@ #term work)
                              ", that is intentionally communicated as a " (get@ #term submission)
                              " to " (get@ #term licensor)
                              " for inclusion in " (get@ #term work) " by the copyright owner"
                              ", or by a " (get@ #term legal-entity) " authorized to submit on behalf of the copyright owner")))]

  [contributor "Contributor"
   ($.paragraph (list (format (get@ #term licensor)
                              " or any " (get@ #term legal-entity)
                              " on behalf of whom a " (get@ #term contribution)
                              " has been received by " (get@ #term licensor)
                              ", and subsequently incorporated within " (get@ #term work))))]

  [patent-claim (format "Patent Claim Of A " (get@ #term contributor))
   (let [claim-types (: (List Text)
                        (list "method"
                              "process"
                              "apparatus"))]
     ($.paragraph (list (format "any patent claim(s), including without limitation " ($.and claim-types) " claims, in any patent "
                                (get@ #term licensable) " by such " (get@ #term contributor)
                                " that would be infringed, but for the grant of " (get@ #term license)
                                ", to " ($.or patent-rights) " its " (get@ #term contribution)))))]
  
  [secondary-license "Secondary License"
   ($.paragraph (list (format "any license for which compliance does not imply or require violating the terms of " (get@ #term license))))]

  [sell "Sell"
   ($.paragraph (list (format "practicing any or all of the rights granted to " (get@ #term recipient)
                              " under " (get@ #term license)
                              " to provide to third parties, for a fee or other consideration "
                              "(including without limitation fees for " ($.or commercial-services)
                              " related to "(get@ #term work) ")"
                              ", a product or service whose value derives, entirely or substantially, from the functionality of " (get@ #term work))))]

  [personal-use "Personal Use"
   (let [valid-purposes (: (List Text)
                           (list "personal"
                                 "private"
                                 "non-commercial"))]
     ($.paragraph (list (format "use of " (get@ #term work) " by an individual solely for his or her " ($.and valid-purposes) " purposes")
                        (format "An individual's use of " (get@ #term work) " in his or her capacity as an " ($.or individual-capacities) " does not qualify"))))]

  [serve "Serve"
   ($.paragraph (list (format "to deliver " (get@ #term work)
                              " and/or any " (get@ #term extension)
                              " by means of a computer network to one or more computers for purposes of execution of " (get@ #term work)
                              ", and/or the " (get@ #term extension))))]

  [research "Research"
   ($.paragraph (list (format "investigation or experimentation for the purpose of understanding the nature and limits of " (get@ #term work) " and its potential uses")))]

  [deploy "Deploy"
   (let [deployment-types (: (List Text)
                             (list "use"
                                   (get@ #term serve)
                                   "sublicense"
                                   "distribute"))
         sub-licensing (: (-> Text Text)
                          (function (_ type)
                            (format type " sublicensing")))
         third-party-interactions (: (List Text)
                                     (list (sub-licensing "direct")
                                           (sub-licensing "indirect")
                                           "distribution"))
         basic-definition (format "to " ($.or deployment-types)
                                  " " (get@ #term work)
                                  " other than for internal " (get@ #term research)
                                  " and/or " (get@ #term personal-use)
                                  " by " (get@ #term recipient))
         examples (format "any and all internal use or distribution of " (get@ #term work)
                          " within a business or organization in which " (get@ #term recipient)
                          " participates")
         exceptions (format "for " (get@ #term research) " and/or " (get@ #term personal-use))]
     ($.paragraph (list (format basic-definition
                                ", and includes without limitation, " examples
                                ", other than " exceptions
                                ", as well as " ($.or third-party-interactions)
                                " of " (get@ #term work)
                                " by " (get@ #term recipient)
                                " to any third party in any form or manner"))))]

  [electronic-distribution-mechanism "Electronic Distribution Mechanism"
   ($.paragraph (list "a mechanism generally accepted in the software development community for the electronic transfer of data, such as download from an FTP server or web site, where such mechanism is publicly accessible"))]
  )

(def: #export all
  (List Definition)
  (list license
        licensable
        legal-entity
        recipient
        licensor
        source-code-form
        object-form
        work
        derivative-work
        submission
        modification
        required-component
        extension
        contribution
        contributor
        patent-claim
        secondary-license
        sell
        personal-use
        serve
        research
        deploy
        electronic-distribution-mechanism))