diff options
Diffstat (limited to 'licentia/source/program/licentia/license/extension.lux')
-rw-r--r-- | licentia/source/program/licentia/license/extension.lux | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/licentia/source/program/licentia/license/extension.lux b/licentia/source/program/licentia/license/extension.lux new file mode 100644 index 000000000..c6b368d33 --- /dev/null +++ b/licentia/source/program/licentia/license/extension.lux @@ -0,0 +1,166 @@ +(.module: + [lux #* + [data + ["." text + ["%" format (#+ format)]]]] + ["." // (#+ Extension) + ["_" term] + ["." grant] + [time (#+ Months Period)] + [// + ["$" document]]]) + +(def: #export sharing_requirement + (List Text) + (let [on_extension (let [constraint (let [because "In consideration of, and as an express condition to, " + source (format "the licenses granted to " _.recipient + " under " _.license)] + (format because " " source)) + duty (format _.recipient + " hereby agrees that any " _.extension + " that " _.recipient + " creates or to which " _.recipient + " contributes are governed by the terms of " _.license)] + (format constraint ", " duty)) + on_deployment (format _.recipient " may only " _.deploy + " an " _.extension + " that " _.recipient + " creates under the terms of " _.license) + on_sharing (format _.recipient + " hereby grant to " _.licensor + " and all third parties a " ($.and grant.grant_characteristics) + " license under those intellectual property rights " _.recipient + " owns or controls to " ($.or grant.copyright_grant_rights) + " " _.work + " in any form") + on_license_propagation (format _.recipient + " must include a copy of " _.license + " or directions on how to obtain a copy with every copy of an " _.extension + " " _.recipient " distributes") + on_license_protection (format _.recipient + " agrees not to offer or impose any terms on any " _.source_code_form + " or " _.object_form + " of the " _.work + ", or its " _.extension + " that alter or restrict the applicable version of " _.license + " or the recipients' rights hereunder")] + (list on_extension + on_deployment + on_sharing + on_license_propagation + on_license_protection))) + +(def: #export license_conflict_resolution + (List Text) + (let [on_other_licenses (let [circumstance (format "Where any portion of an " _.extension + " created by " _.recipient) + consequence "fall under the terms of another license" + duty "the terms of that license should be honored"] + (format circumstance " " consequence ", " duty)) + on_this_license (format "However " _.recipient + " must also make the " _.extension + " available under " _.license) + on_licensor_judgement (let [condition (format "the terms of " _.license " continue to conflict with the terms of the other license") + right (format _.recipient " may write " _.licensor " for permission to resolve the conflict") + characteristic (format "a fashion that remains consistent with the intent of " _.license)] + (format "If " condition ", " right " in " characteristic)) + on_licensor_discretion (format "Such permission will be granted at the sole discretion of " _.licensor)] + (list on_other_licenses + on_this_license + on_licensor_judgement + on_licensor_discretion))) + +(def: #export distinctness_requirement + ($.paragraph (list (format "Any " _.extension + " " _.recipient + " does make and " _.deploy + " must have a distinct title so as to readily tell any subsequent user or " _.contributor + " that the " _.extension + " is by " _.recipient)))) + +(def: news_sources + (List Text) + (list "news groups" + "mailing lists" + "weblogs" + "other sites")) + +(def: #export (notification_requirement [start end]) + (-> (Period Months) Text) + (let [on_availability (format _.recipient + " must notify the software community of the availability of the " _.source_code_form + " to any " _.extension + " created by " _.recipient + " within " (%.nat start) + " month(s) of the date " _.recipient + " initially does " _.deploy + ", and include in such notification a description of the " _.extension + ", and instructions on how to acquire the " _.source_code_form + " via an " _.electronic_distribution_mechanism) + on_duration (format "The " _.source_code_form + " must remain available via an " _.electronic_distribution_mechanism + " for no less than " (%.nat end) + " month(s) after the date " _.recipient + " ceases to " _.deploy) + on_responsibility (format _.recipient + " is responsible for ensuring that the " _.source_code_form + " to each " _.extension + " " _.recipient + " does " _.deploy + " remains available even if the " _.electronic_distribution_mechanism + " is maintained by a third party") + on_costs (format _.recipient + " may not charge a fee for any copy of the " _.source_code_form + " in excess of the actual cost of duplication and distribution of said copy that " _.recipient + " incurs") + on_changes (format "Should such instructions change, " _.recipient + " must notify the software community of revised instructions within " (%.nat start) + " month(s) of the date of change") + on_accesibility (format _.recipient + " must provide notification by posting to appropriate " ($.or news_sources) + " where a publicly accessible search engine would reasonably be expected to index a post in relationship to queries regarding " _.work + " and/or an " _.extension + " created by " _.recipient)] + ($.paragraph (list on_availability + on_duration + on_responsibility + on_costs + on_changes + on_accesibility)))) + +(def: #export description_requirement + Text + (let [on_duty (let [basic (format _.recipient + " must cause any " _.modification + " that " _.recipient + " creates, or to which " _.recipient + " contributes, to be documented in the " _.source_code_form) + modification_types (: (List Text) + (list "additions" + "changes" + "deletions")) + details (format "clearly describing the " ($.and modification_types) + " that " _.recipient " made")] + (format basic ", " details)) + on_notice_location (let [statement_locations (: (List Text) + (list (format "in the " _.source_code_form) + (format "in any notice displayed by " _.work + " " _.recipient + " distributes") + (format "in related documentation in which " _.recipient + " describes the origin or ownership of " _.work)))] + (format _.recipient + " must include a prominent statement that the " _.modification + " is derived, directly or indirectly, from " _.work + " and include the names of " _.licensor + " and any " _.contributor + " to " _.work + " " ($.and statement_locations))) + on_notice_preservation (format _.recipient + " may not modify or delete any pre-existing copyright notices, change notices or the text of " _.license + " in " _.work + " without written permission of " _.licensor + " or the respective " _.contributor)] + ($.paragraph (list on_duty + on_notice_location + on_notice_preservation)))) |