diff options
| author | Eduardo Julian | 2019-02-05 20:30:13 -0400 | 
|---|---|---|
| committer | Eduardo Julian | 2019-02-05 20:30:13 -0400 | 
| commit | 60430ee6dfffbeb220a3e8fee7336d54313467bc (patch) | |
| tree | e00b48c2af5354392f514347547340f67f71e708 /stdlib/source/program/licentia/license/liability.lux | |
| parent | c542e618266c2f321704bef381b14213c30cc2e0 (diff) | |
Folded license-making program (legislator) into the Lux project proper (as licentia).
Diffstat (limited to 'stdlib/source/program/licentia/license/liability.lux')
| -rw-r--r-- | stdlib/source/program/licentia/license/liability.lux | 160 | 
1 files changed, 160 insertions, 0 deletions
| diff --git a/stdlib/source/program/licentia/license/liability.lux b/stdlib/source/program/licentia/license/liability.lux new file mode 100644 index 000000000..598341449 --- /dev/null +++ b/stdlib/source/program/licentia/license/liability.lux @@ -0,0 +1,160 @@ +(.module: +  [lux #* +   [data +    ["." text +     format]]] +  [// +   ["_" term] +   [// +    ["$" document]]]) + +(def: warranty-communications +  (List Text) +  (list "expressed" +        "implied" +        "statutory")) + +(def: work-disclamers +  (List Text) +  (list "free of defects" +        "merchantable" +        "fit for a particular purpose" +        "non-infringing")) + +(def: fixes +  (List Text) +  (list "servicing" +        "repair" +        "correction")) + +(def: #export warranty +  (let [on-basics (let [applicability-escape "Unless required by applicable law or agreed to in writing" +                        work-provisioning (format _.licensor +                                                  " provides " _.work +                                                  ", and each " _.contributor +                                                  " provides its " ($.plural _.contribution))] +                    (format applicability-escape ", " +                            work-provisioning +                            " under " _.license +                            " on an " ($.quote "as is") +                            " basis, without warranty or condition of any kind, either " ($.or warranty-communications) +                            " including, without limitation, any warranties or conditions that " _.work +                            " is " ($.or work-disclamers))) +        on-distribution (format _.recipient +                                " is solely responsible for determining the appropriateness of using or redistributing " _.work) +        on-risk (format "The entire risk as to the quality and performance of " _.work +                        " is with " _.recipient) +        on-fixes (format "Should " _.work +                         " prove defective in any respect, " _.recipient +                         ", not any " _.contributor +                         ", assumes the cost of any necessary " ($.or fixes)) +        on-importance (format "This disclaimer of warranty constitutes an essential part of "_.license) +        on-authorization (format "No use of "_.work +                                 " is authorized under " _.license +                                 " except under this disclaimer")] +    ($.paragraph (list on-basics +                       on-distribution +                       on-risk +                       on-fixes +                       on-importance +                       on-authorization)))) + +(def: damage-types +  (List Text) +  (list "direct" +        "indirect" +        "special" +        "incidental" +        "consequential")) + +(def: damage-consequences +  (List Text) +  (list "lost profits" +        "loss of goodwill" +        "work stoppage" +        "computer failure or malfunction" +        "any and all other commercial damages or losses")) + +(def: #export limitation +  (let [on-limit (let [exclusion "Under no circumstances and under no legal theory" +                       examples "whether tort (including negligence), contract, or otherwise" +                       applicable-law-exception "unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing" +                       renunciation (format "shall any " _.contributor +                                            " be liable to " _.recipient) +                       damage-enumeration (format "for any " ($.or damage-types) " damages of any character" +                                                  " including without limitation damages for " ($.or damage-consequences)) +                       conscience "even if such party shall have been informed of the possibility of such damages"] +                   (format exclusion ", " examples ", " applicable-law-exception ", " renunciation " " damage-enumeration ", " conscience)) +        on-death-exception "This limitation of liability shall not apply to liability for death or personal injury resulting from such party’s negligence to the extent applicable law prohibits such limitation" +        on-jurisdictions (format "Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so this exclusion and limitation may not apply to " _.recipient)] +    ($.paragraph (list on-limit +                       on-death-exception +                       on-jurisdictions)))) + +(def: #export litigation +  (let [on-jurisdiction (format "Any litigation relating to " _.license " may be brought only in the courts of a jurisdiction where the defendant maintains its principal place of business") +        on-laws "Such litigation shall be governed by laws of that jurisdiction, without reference to its conflict-of-law provisions" +        on-claims "Nothing in this section shall prevent a party’s ability to bring cross-claims or counter-claims"] +    ($.paragraph (list on-jurisdiction +                       on-laws +                       on-claims)))) + +(def: liability-obligations +  (List Text) +  (list "support" +        "warranty" +        "indemnity" +        "other liability obligations" +        (format "rights consistent with " _.license))) + +(def: #export can-accept +  (let [on-acceptance-of-liability (let [condition (format "While redistributing " _.work " or " ($.plural _.extension) " thereof") +                                         right (format _.recipient " may choose to offer, and charge a fee for, acceptance of " ($.and/or ..liability-obligations))] +                                     (format condition ", " right)) +        on-responsibility (let [but "However, in accepting such obligations" +                                cannot-represent-a-contributor (format _.recipient " may not act on behalf of any other " _.contributor) +                                can-only-represent-oneself (format "only on behalf and on sole responsibility of " _.recipient) +                                each-contributor (: (-> Text Text) +                                                    (function (_ responsibility) +                                                      (format responsibility " each " _.contributor))) +                                responsibilities (: (List Text) +                                                    (list (each-contributor "indemnify") +                                                          (each-contributor "defend") +                                                          (format (each-contributor "hold") " harmless"))) +                                full-responsibility-condition (format "and only if " _.recipient +                                                                      " agrees to " ($.and responsibilities) +                                                                      " for any liability incurred by, or claims asserted against, such " _.contributor +                                                                      " by reason of acceptance of any such warranty or additional liability by " _.recipient)] +                            (format but ", " cannot-represent-a-contributor ", " can-only-represent-oneself ", " full-responsibility-condition))] +    ($.paragraph (list on-acceptance-of-liability +                       on-responsibility)))) + +(def: #export disclaim-high-risk +  (let [on-work (let [intentions (: (List Text) +                                    (list "designed" +                                          "manufactured" +                                          "intended for use or distribution")) +                      hazardous-environments (: (List Text) +                                                (list "nuclear facilities" +                                                      "aircraft navigation" +                                                      "communications systems" +                                                      "air traffic control" +                                                      "direct life support machines" +                                                      "weapons systems")) +                      consequences (: (List Text) +                                      (list "death" +                                            "personal injury" +                                            "severe physical damage" +                                            "environmental damage")) +                      disclaim (format _.work " is not fault tolerant" +                                       ", and is not " ($.or intentions) +                                       " as on-line control equipment in hazardous environments requiring fail-safe performance") +                      examples (format "such as in the operation of " ($.or hazardous-environments)) +                      further (format "in which the failure of " _.work " could lead directly to " ($.or consequences))] +                  (format disclaim ", " examples ", " further)) +        on-contributors (let [claim "any express or implied warranty of fitness for high risk activities"] +                          (format _.licensor +                                  " and every " _.contributor +                                  " specifically disclaim " claim))] +    ($.paragraph (list on-work +                       on-contributors)))) | 
