(.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))))