diff --git a/lib/l10n-en_GB.js b/lib/l10n-en_GB.js index 1b48a6087..26fb26d81 100644 --- a/lib/l10n-en_GB.js +++ b/lib/l10n-en_GB.js @@ -211,25 +211,14 @@ export const messages = { // sotd/pp 'sotd.pp.no-pp': 'Required patent policy paragraph not found. Expected text related to patent policy requirements:
${expected}
', - 'sotd.pp.no-pp-from-charter': - 'Cannot find the patent policy version from the groups charter. Please make sure the group has a current charter with a patent policy', - 'sotd.pp.undefined': - "Could not determine the patent policy the WG is operating under. Check the WG's charter.", - 'sotd.pp.no-pp2017': - 'The WG is operating under the patent policy 2017 but the document mentions a different one, please check the text as well as the link.', - 'sotd.pp.no-pp2020': - 'The WG is operating under the patent policy 2020 but the document mentions a different one, please check the text as well as the link.', + 'sotd.pp.no-link': 'Require link to the W3C Patent Policy not found', 'sotd.pp.no-disclosures': - 'No valid HTTPS link to public list of disclosures (https://www.w3.org/2004/01/pp-impl/NNNNN/status).', + 'No valid HTTPS link to public list of disclosures (https://www.w3.org/groups/XX/YYYYY/ipr/).', 'sotd.pp.no-claims': 'No valid HTTPS link to definition of essential claims (${link}).', 'sotd.pp.no-section6': 'No valid HTTPS link to the Disclosure section of the patent policy (${link}).', 'sotd.pp.joint-publication': 'Joint publication detected.', - 'sotd.pp.joint-different-pp': - 'This document is published by multiple groups operating under different versions of the Patent Policy. A document should be published under one and only one Patent Policy, to which all participants in contributing groups have agreed.', - 'sotd.pp.wrong-pp-from-charter': - 'The Working Group delivering the document operates under the patent policy "${pp_charter}", but the check is against "${pp_config}". Please select the right patent policy to match the charter\'s version.', // sotd/charter 'sotd.charter.no-group': 'Unable to find the group(s) ID(s) (in the data-deliverer attribute for Note-Track documents, and in the "Status of This Document" for REC-Track documents).', @@ -386,7 +375,6 @@ export const messages = { 'metadata.profile': false, 'metadata.title': false, 'metadata.errata': false, - 'metadata.patent-policy': false, 'metadata.charters': false, 'metadata.sotd': false, 'metadata.abstract': false, diff --git a/lib/profiles/metadata.js b/lib/profiles/metadata.js index c94477409..0e2d9254a 100644 --- a/lib/profiles/metadata.js +++ b/lib/profiles/metadata.js @@ -9,7 +9,6 @@ import * as editorIds from '../rules/metadata/editor-ids.js'; import * as editorNames from '../rules/metadata/editor-names.js'; import * as errata from '../rules/metadata/errata.js'; import * as informative from '../rules/metadata/informative.js'; -import * as patentPolicy from '../rules/metadata/patent-policy.js'; import * as process from '../rules/metadata/process.js'; import * as profile from '../rules/metadata/profile.js'; import * as title from '../rules/metadata/title.js'; @@ -22,7 +21,6 @@ export const rules = [ docDate, dl, deliverers, - patentPolicy, charters, editorIds, editorNames, diff --git a/lib/rules/metadata/patent-policy.js b/lib/rules/metadata/patent-policy.js deleted file mode 100644 index 88d98a6a7..000000000 --- a/lib/rules/metadata/patent-policy.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Pseudo-rule for metadata extraction: patent-policy. - */ - -// 'self.name' would be 'metadata.patent-policy' - -export const name = 'metadata.patent-policy'; - -/** - * @param sr - * @param done - */ -export async function check(sr, done) { - const patentPolicies = await sr.getPatentPolicies(); - return done({ patentPolicy: patentPolicies[0] }); -} diff --git a/lib/rules/sotd/pp.js b/lib/rules/sotd/pp.js index ee396c775..681476128 100644 --- a/lib/rules/sotd/pp.js +++ b/lib/rules/sotd/pp.js @@ -6,25 +6,21 @@ const self = { rule: 'patPolReq', }; -const ppLink = 'https://www.w3.org/Consortium/Patent-Policy/'; -const ppLinkNew = 'https://www.w3.org/policies/patent-policy/'; -const pp2020 = 'https://www.w3.org/Consortium/Patent-Policy-20200915/'; -const pp2020New = 'https://www.w3.org/policies/patent-policy/20200915/'; -const pp2017 = 'https://www.w3.org/Consortium/Patent-Policy-20170801/'; +const ppLink = 'https://www.w3.org/policies/patent-policy/'; +const ppLink2020 = 'https://www.w3.org/policies/patent-policy/20200915/'; +const ppLink2025 = 'https://www.w3.org/policies/patent-policy/20250515/'; /** * @param groups * @param sr * @param ppLink */ -function buildWanted(groups, sr, ppLink) { +function buildWanted(groups, sr) { const { config } = sr; let wanted; const result = {}; - const isPP2017 = ppLink === pp2017; const isRecTrack = config.track === 'Recommendation'; - - const ppText = isPP2017 ? ' 1 August 2017' : '( 15 September 2020)?'; + const ppText = '( 15 September 2020| 15 May 2025)?'; wanted = `This document was produced by ${ groups.length === 2 ? 'groups ' : 'a group ' @@ -69,12 +65,12 @@ function buildWanted(groups, sr, ppLink) { * @param sr * @param isIGDeliverable */ -function findPP(candidates, sr, ppLink) { +function findPP(candidates, sr) { let pp = null; const delivererGroups = sr.getDelivererNames(); if (delivererGroups.length > 1) sr.warning(self, 'joint-publication'); - const wanted = buildWanted(delivererGroups, sr, ppLink); + const wanted = buildWanted(delivererGroups, sr); const expected = wanted.text; Array.prototype.some.call(candidates, p => { const text = sr.norm(p.textContent); @@ -97,93 +93,35 @@ export async function check(sr, done) { // Check if the document is published by WGs only. If IG/AB/TAG(s) are involved, the document cannot be on REC-track and should have a sentence meaning 'pp does not apply'. const publishedByWgOnly = groups.every(group => group.groupType === 'wg'); - const patentPolicies = await sr.getPatentPolicies(); - - // If published by WG, the WGs should have living charter and operating under PP - if (publishedByWgOnly && !patentPolicies.length) { - sr.error(self, 'no-pp-from-charter'); - return done(); - } - - // If published by WG, make sure joint publication uses the same Patent Policy. - if (publishedByWgOnly && patentPolicies.length > 1) { - patentPolicies.forEach(patentPolicyLink => { - if (patentPolicyLink !== patentPolicies[0]) { - sr.error(self, 'joint-different-pp'); - return done(); - } - }); - } - const sotd = sr.getSotDSection(); const isRecTrack = sr.config.track === 'Recommendation'; - const isPP2017 = sr.config.patentPolicy === 'pp2004'; - const isPP2020 = sr.config.patentPolicy === 'pp2020'; - let possiblePP = []; - if (isPP2020) { - possiblePP = [ppLink, ppLinkNew, pp2020, pp2020New]; - } else if (isPP2017) { - possiblePP = [pp2017]; - } - // If is joint publication and no pp is set, use latest pp - if (!publishedByWgOnly && patentPolicies.every(pp => pp === undefined)) { - possiblePP = [ppLinkNew, ppLink, pp2020New, pp2020]; - } - // Make sure the pp version is consistent between the UI or the one defined in the charter. - if ( - publishedByWgOnly && - patentPolicies[0] && - !possiblePP.includes(patentPolicies[0]) - ) { - sr.error(self, 'wrong-pp-from-charter', { - pp_charter: patentPolicies[0], - pp_config: isPP2017 ? 'pp2017' : 'pp2020', - }); - return done(); - } - if (sotd) { - if (!Array.isArray(possiblePP) || !possiblePP.length) { - sr.error(self, 'undefined'); - return done(); - } - const { pp, expected } = findPP( filter(sotd, 'p').concat(...sotd.querySelectorAll('p')), - sr, - patentPolicies[0] + sr ); if (!pp) { sr.error(self, 'no-pp', { expected }); return done(); } - let found2017 = false; - let found2020 = false; + let foundLink = false; let foundPublicList = false; let foundEssentials = false; let foundSection6 = false; pp.querySelectorAll('a[href]').forEach(a => { const href = a.getAttribute('href'); const text = sr.norm(a.textContent); + const possiblePPLinks = [ppLink, ppLink2020, ppLink2025]; if ( - isPP2020 && - possiblePP.includes(href) && - /(15 September 2020 )?W3C Patent Policy/.test(text) + possiblePPLinks.includes(href) && + /(15 September 2020|15 May 2025)?W3C Patent Policy/.test(text) ) { - found2020 = true; + foundLink = true; return; } - if ( - isPP2017 && - possiblePP.includes(href) && - /1 August 2017 W3C Patent Policy/.test(text) - ) { - found2017 = true; - return; - } if ( /^https:\/\/www\.w3\.org\/(groups\/[^/]+\/[^/]+\/ipr\/?|2004\/01\/pp-impl\/\d+\/status)(#.*)?$/.test( href @@ -196,22 +134,23 @@ export async function check(sr, done) { } if ( - possiblePP.map(p => `${p}#def-essential`).includes(href) && + possiblePPLinks.map(p => `${p}#def-essential`).includes(href) && text === 'Essential Claim(s)' ) { foundEssentials = true; return; } if ( - possiblePP.map(p => `${p}#sec-Disclosure`).includes(href) && + possiblePPLinks + .map(p => `${p}#sec-Disclosure`) + .includes(href) && text === 'section 6 of the W3C Patent Policy' ) { foundSection6 = true; } }); - if (isPP2017 && !found2017) sr.error(self, 'no-pp2017'); - else if (!isPP2017 && !found2020) sr.error(self, 'no-pp2020'); + if (!foundLink) sr.error(self, 'no-link'); if (!foundPublicList && isRecTrack) sr.error(self, 'no-disclosures'); if ( (sr.config.track === 'Recommendation' || @@ -220,7 +159,7 @@ export async function check(sr, done) { !foundEssentials ) sr.error(self, 'no-claims', { - link: `${possiblePP[0]}#def-essential`, + link: `${ppLink}#def-essential`, }); if ( (sr.config.track === 'Recommendation' || @@ -229,7 +168,7 @@ export async function check(sr, done) { !foundSection6 ) sr.error(self, 'no-section6', { - link: `${possiblePP[0]}#sec-Disclosure`, + link: `${ppLink}#sec-Disclosure`, }); return done(); } diff --git a/lib/rules/sotd/stability.js b/lib/rules/sotd/stability.js index 7ea72a059..49d50f836 100644 --- a/lib/rules/sotd/stability.js +++ b/lib/rules/sotd/stability.js @@ -123,19 +123,17 @@ export async function check(sr, done) { const links = sotd.querySelectorAll('a'); const licensingText = 'royalty-free licensing'; const licensingLink = - 'https://www.w3.org/Consortium/Patent-Policy/#sec-Requirements'; - const licensingLinkNew = 'https://www.w3.org/policies/patent-policy/#sec-Requirements'; const licensingFound = Array.prototype.some.call( links, link => sr.norm(link.textContent) === licensingText && - [licensingLink, licensingLinkNew].includes(link.href) + link.href === licensingLink ); if (!licensingFound) sr.error(self, 'no-licensing-link', { licensingText, - licensingLinkNew, + licensingLink, }); } } diff --git a/lib/rules/sotd/submission.js b/lib/rules/sotd/submission.js index 0b6c96d90..c53c685b9 100644 --- a/lib/rules/sotd/submission.js +++ b/lib/rules/sotd/submission.js @@ -56,9 +56,7 @@ export function check(sr, done) { const w3cProcessNew = 'https://www.w3.org/policies/process/'; const w3cMembership = 'https://www.w3.org/Consortium/Prospectus/Joining'; - const w3cPPOld = - 'https://www.w3.org/Consortium/Patent-Policy/#sec-submissions'; - const w3cPPNew = + const w3cPP = 'https://www.w3.org/policies/patent-policy/#sec-submissions'; const w3cSubm = 'https://www.w3.org/submissions/'; let foundW3CProcess = false; @@ -82,7 +80,7 @@ export function check(sr, done) { return; } if ( - [w3cPPNew, w3cPPOld].includes(href) && + href === w3cPP && text === 'section 3.3 of the W3C Patent Policy' ) { foundPP = true; @@ -121,7 +119,7 @@ export function check(sr, done) { }); if (!foundPP) sr.error(self, 'link-text', { - href: w3cPPNew, + href: w3cPP, text: 'section 3.3 of the W3C Patent Policy', }); if (!foundSubm) diff --git a/lib/validator.js b/lib/validator.js index 68e4fa498..8fec0b9f1 100644 --- a/lib/validator.js +++ b/lib/validator.js @@ -42,7 +42,6 @@ Specberus.prototype.clearCache = function () { this.delivererIDs = undefined; this.delivererGroups = undefined; this.exceptions = new Exceptions(); - this.patentPolicies = undefined; this.chartersData = undefined; this.charters = undefined; this.headers = undefined; @@ -764,24 +763,6 @@ Specberus.prototype.getCharters = async function () { return charters; }; -Specberus.prototype.getPatentPolicies = async function () { - if (undefined !== this.patentPolicies) { - return this.patentPolicies; - } - const deliverers = await this.getDelivererIDs(); - // TAG and AB are operating under the latest version of the patent policy - if (deliverers.some(d => d === TAG.id || d === AB.id)) { - return ['https://www.w3.org/policies/patent-policy/20200915/']; - } - const chartersData = await this.getChartersData(); - const patentPolicies = []; - chartersData.forEach(charterData => - patentPolicies.push(charterData['patent-policy']) - ); - this.patentPolicies = patentPolicies; - return patentPolicies; -}; - // check if this document is a FP document. For shortname change document, data-previous-shortname="xxx" is needed. Specberus.prototype.isFP = async function () { if (undefined !== this.isFirstPublic) { diff --git a/package.json b/package.json index af8bbf1ec..ab9bdb49f 100644 --- a/package.json +++ b/package.json @@ -72,6 +72,6 @@ "mocha": { "colors": true, "reporter": "spec", - "timeout": 20000 + "timeout": 40000 } } diff --git a/public/js/specberus.js b/public/js/specberus.js index f7663059e..3f84ce14a 100644 --- a/public/js/specberus.js +++ b/public/js/specberus.js @@ -51,7 +51,6 @@ jQuery.extend({ const $validation = $('#validation'); const $informativeOnly = $('#informativeOnly'); const $echidnaReady = $('#echidnaReady'); - const $patentPolicy = $('#patentPolicy'); const $results = $('#results'); const $resultsBody = $results.find('.panel-body'); const $resultsList = $results.find('.list-group'); @@ -309,24 +308,6 @@ jQuery.extend({ $informativeOnly.prop('checked', data.metadata.informative); $validation.find('label').removeClass('active'); $validation.find('label#simple-validation').addClass('active'); - let patentPolicy; - if (data.metadata.patentPolicy) { - if ( - data.metadata.patentPolicy === - 'https://www.w3.org/Consortium/Patent-Policy-20170801/' - ) { - patentPolicy = 'pp2004'; - } else if ( - [ - 'https://www.w3.org/policies/patent-policy/20200915/', - 'https://www.w3.org/Consortium/Patent-Policy-20200915/', - ].includes(data.metadata.patentPolicy) - ) { - patentPolicy = 'pp2020'; - } - } - $patentPolicy.find('label').removeClass('active'); - $patentPolicy.find(`label#${patentPolicy}`).addClass('active'); const isPost = $form.attr('method') === 'post'; const options = { @@ -334,7 +315,6 @@ jQuery.extend({ validation: 'simple-validation', informativeOnly: data.metadata.informative || false, echidnaReady: false, - patentPolicy, }; if (isPost) { options.file = tempPostFile; @@ -394,7 +374,6 @@ jQuery.extend({ const validation = $validation.find('label.active').attr('id'); const informativeOnly = $informativeOnly.is(':checked') || false; const echidnaReady = $echidnaReady.is(':checked') || false; - const patentPolicy = $patentPolicy.find('label.active').attr('id'); profile = $profile.val(); if (!input.file && !input.url) addMessage(MSG_ERROR, { @@ -411,7 +390,6 @@ jQuery.extend({ validation, informativeOnly, echidnaReady, - patentPolicy, }; validate(options); if (!isPost) { @@ -470,14 +448,6 @@ jQuery.extend({ .removeClass('active'); } $informativeOnly.prop('checked', options.informativeOnly); - $patentPolicy.find('label').removeClass('active'); - if (options.patentPolicy) { - $patentPolicy - .find(`label#${options.patentPolicy}`) - .addClass('active'); - } else { - $patentPolicy.find(`label#pp2020`).addClass('active'); - } } window.addEventListener('popstate', event => { diff --git a/test/data/TR/TRBase.js b/test/data/TR/TRBase.js index 543d12365..1ad15122a 100644 --- a/test/data/TR/TRBase.js +++ b/test/data/TR/TRBase.js @@ -102,25 +102,6 @@ export const rules = { }, ], pp: [ - { - data: 'wrongPPFromCharter', - errors: ['sotd.pp.wrong-pp-from-charter'], - }, - { - data: 'noPPFromCharter', - errors: ['sotd.pp.no-pp-from-charter'], - }, - { - data: 'noPP2020', - config: { - patentPolicy: 'pp2020', - }, - errors: ['sotd.pp.no-pp2020'], - }, - { - data: 'jointDifferentPP', - errors: ['sotd.pp.joint-different-pp'], - }, { data: 'jointPublication', config: { diff --git a/test/doc-views/TR/TRBase.js b/test/doc-views/TR/TRBase.js index 55e7de338..a36968a96 100644 --- a/test/doc-views/TR/TRBase.js +++ b/test/doc-views/TR/TRBase.js @@ -172,28 +172,6 @@ export function buildCommonViewData(base) { }, }, pp: { - wrongPPFromCharter: { - ...base, - }, - jointDifferentPP: { - ...base, - config: { - ...base.config, - underPP: true, - }, - sotd: { - ...base.sotd, - showDifferentPP: true, - }, - }, - noPPFromCharter: { - ...base, - sotd: { - ...base.sotd, - iprLink: 'https://www.w3.org/groups/wg/fake/ipr', - WGLink: 'https://www.w3.org/groups/wg/fake', - }, - }, noPP: { ...base, sotd: { @@ -201,13 +179,6 @@ export function buildCommonViewData(base) { extra1: 'extra text', }, }, - noPP2020: { - ...base, - sotd: { - ...base.sotd, - ppLink: 'https://www.w3.org/policies/patent-policy/fake', - }, - }, noDisclosures: { ...base, sotd: { diff --git a/test/doc-views/partials/patent-policy.handlebars b/test/doc-views/partials/patent-policy.handlebars index de5a64544..f83390a2b 100644 --- a/test/doc-views/partials/patent-policy.handlebars +++ b/test/doc-views/partials/patent-policy.handlebars @@ -1,18 +1,7 @@ {{#config.underPP}} - {{#if sotd.showDifferentPP}} -

- This document was produced by groups operating under the W3C Patent Policy. - W3C maintains a public list of any patent disclosures (CSS) and a public list of any patent disclosures (Technical Architecture Group) made in connection with the deliverables of each group; - these pages also include instructions for disclosing a patent. - An individual who has actual knowledge of a patent - that the individual believes contains Essential Claim(s) must disclose the information - in accordance with section 6 of the W3C Patent Policy. -

- {{else}}

This document was produced by a group operating under the {{{sotd.ppHTML}}}{{! W3C Patent Policy }}. W3C maintains a {{sotd.iprText}}{{! public list of any patent disclosures }} made in connection with the deliverables of {{sotd.pageIncludeText}}{{! the group; that page also includes }} instructions for disclosing a patent. {{sotd.individualText}}{{! An individual who has }} actual knowledge of a patent that the individual believes contains {{sotd.essentialText}}{{! Essential Claim(s) }} must disclose the information in accordance with {{{sotd.disclosureHTML}}}.

- {{/if}} {{/config.underPP}} {{^config.underPP}} diff --git a/test/doc-views/specBase.js b/test/doc-views/specBase.js index b55f5555e..f004b2537 100644 --- a/test/doc-views/specBase.js +++ b/test/doc-views/specBase.js @@ -165,7 +165,7 @@ export const data = { ppLink: 'https://www.w3.org/policies/patent-policy/', ppHTML: 'W3C Patent Policy', noPPText: 'licensing requirements or commitments', - ppLink1: 'https://www.w3.org/policies/patent-policy/20200915/', + ppLink1: 'https://www.w3.org/policies/patent-policy/', ppDate: '15 September 2020', iprLink: 'https://www.w3.org/groups/wg/i18n-core/ipr', diff --git a/test/docs/2021-rec.html b/test/docs/2021-rec.html index 571c43524..e4f4923ea 100644 --- a/test/docs/2021-rec.html +++ b/test/docs/2021-rec.html @@ -122,7 +122,7 @@

Status of This Document

W3C recommends the wide deployment of this specification as a standard for the Web.

This document was produced by a group operating under the W3C Patent Policy. W3C maintains a W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes diff --git a/test/samples.js b/test/samples.js index c28cb47d2..ea9a9657f 100644 --- a/test/samples.js +++ b/test/samples.js @@ -9,7 +9,7 @@ export const samples = [ informative: false, process: 'https://www.w3.org/policies/process/20231103/', delivererIDs: [45211], - patentPolicy: 'https://www.w3.org/policies/patent-policy/20200915/', + patentPolicy: 'https://www.w3.org/policies/patent-policy/', charters: ['https://www.w3.org/2021/02/webperf.html'], thisVersion: 'https://www.w3.org/TR/2021/WD-hr-foo-time-2-20211104/', latestVersion: 'https://www.w3.org/TR/hr-foo-time-2/', @@ -35,7 +35,7 @@ export const samples = [ editorsDraft: 'https://w3c.github.io/hr-time/', updated: false, charters: ['https://www.w3.org/2021/02/webperf.html'], - patentPolicy: 'https://www.w3.org/policies/patent-policy/20200915/', + patentPolicy: 'https://www.w3.org/policies/patent-policy/', }, { file: '2021-wd-shortname-change', @@ -54,7 +54,7 @@ export const samples = [ editorsDraft: 'https://w3c.github.io/foo-time/', sameWorkAs: 'https://www.w3.org/TR/hr-time-3/', updated: false, - patentPolicy: 'https://www.w3.org/policies/patent-policy/20200915/', + patentPolicy: 'https://www.w3.org/policies/patent-policy/', charters: ['https://www.w3.org/2021/02/webperf.html'], }, { @@ -69,7 +69,7 @@ export const samples = [ informative: false, process: 'https://www.w3.org/policies/process/20231103/', delivererIDs: [45211], - patentPolicy: 'https://www.w3.org/policies/patent-policy/20200915/', + patentPolicy: 'https://www.w3.org/policies/patent-policy/', charters: ['https://www.w3.org/2021/02/webperf.html'], thisVersion: 'https://www.w3.org/TR/2021/CR-hr-time-2-20211104/', latestVersion: 'https://www.w3.org/TR/hr-time-2/', @@ -90,7 +90,7 @@ export const samples = [ process: 'https://www.w3.org/policies/process/20231103/', delivererIDs: [45211], charters: ['https://www.w3.org/2021/02/webperf.html'], - patentPolicy: 'https://www.w3.org/policies/patent-policy/20200915/', + patentPolicy: 'https://www.w3.org/policies/patent-policy/', thisVersion: 'https://www.w3.org/TR/2021/CRD-hr-time-2-20211104/', latestVersion: 'https://www.w3.org/TR/hr-time-2/', history: 'https://www.w3.org/standards/history/hr-time-2', @@ -111,7 +111,7 @@ export const samples = [ process: 'https://www.w3.org/policies/process/20231103/', delivererIDs: [45211], charters: ['https://www.w3.org/2021/02/webperf.html'], - patentPolicy: 'https://www.w3.org/policies/patent-policy/20200915/', + patentPolicy: 'https://www.w3.org/policies/patent-policy/', thisVersion: 'https://www.w3.org/TR/2021/PR-hr-time-2-20211104/', latestVersion: 'https://www.w3.org/TR/hr-time-2/', history: 'https://www.w3.org/standards/history/hr-time-2', @@ -134,7 +134,7 @@ export const samples = [ process: 'https://www.w3.org/policies/process/20231103/', delivererIDs: [32061], charters: ['https://www.w3.org/2020/12/css-wg-charter.html'], - patentPolicy: 'https://www.w3.org/policies/patent-policy/20200915/', + patentPolicy: 'https://www.w3.org/policies/patent-policy/', thisVersion: 'https://www.w3.org/TR/2022/REC-css-color-3-20220118/', latestVersion: 'https://www.w3.org/TR/css-color-3/', history: 'https://www.w3.org/standards/history/css-color-3', diff --git a/views/index.handlebars b/views/index.handlebars index 7834950f6..64b08176f 100644 --- a/views/index.handlebars +++ b/views/index.handlebars @@ -46,17 +46,6 @@

- -
- - -