aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/program/licentia/license/liability.lux
diff options
context:
space:
mode:
authorEduardo Julian2019-02-05 20:30:13 -0400
committerEduardo Julian2019-02-05 20:30:13 -0400
commit60430ee6dfffbeb220a3e8fee7336d54313467bc (patch)
treee00b48c2af5354392f514347547340f67f71e708 /stdlib/source/program/licentia/license/liability.lux
parentc542e618266c2f321704bef381b14213c30cc2e0 (diff)
Folded license-making program (legislator) into the Lux project proper (as licentia).
Diffstat (limited to '')
-rw-r--r--stdlib/source/program/licentia/license/liability.lux160
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))))