<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Georgia;
        panose-1:2 4 5 2 5 4 5 2 3 3;}
@font-face
        {font-family:"Times New Roman \(Body CS\)";
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:12.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        font-size:12.0pt;
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:12.0pt;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:146826444;
        mso-list-type:hybrid;
        mso-list-template-ids:1977120846 -778005704 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;
        mso-fareast-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman \(Body CS\)";}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l1
        {mso-list-id:1385519982;
        mso-list-template-ids:-2016359462;}
@list l2
        {mso-list-id:1408378430;
        mso-list-template-ids:-1994086152;}
@list l2:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level2
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3
        {mso-list-id:1444614777;
        mso-list-type:hybrid;
        mso-list-template-ids:1007341618 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l3:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l3:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l3:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l4
        {mso-list-id:1523129580;
        mso-list-template-ids:1665585126;}
@list l4:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4:level2
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style></head><body lang=EN-US link="#0563C1" vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Georgia",serif'>Using our test site, I set up the Git It Write plugin and then created a public repository with a few Markdown versions of minutes and ballots, then “published” them by pulling them into the test server. Have a look at the below info and let’s discuss at this week’s meeting.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Georgia",serif'><o:p> </o:p></span></p><p class=MsoNormal><b><span style='font-size:11.0pt;font-family:"Georgia",serif'>TL;DR Version:</span></b><span style='font-size:11.0pt;font-family:"Georgia",serif'> It works! And it works pretty well, too—the resulting pages look just like the posts we normally create by hand. Here’s a couple samples:<o:p></o:p></span></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo3'><span style='font-size:11.0pt;font-family:"Georgia",serif'><a href="https://tj4.9bc.myftpupload.com/2021/11/30/20210916-2/">https://tj4.9bc.myftpupload.com/2021/11/30/20210916-2/</a> (SCWG Minutes from 2021-09-16)<o:p></o:p></span></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo3'><span style='font-size:11.0pt;font-family:"Georgia",serif'><a href="https://tj4.9bc.myftpupload.com/2021/11/30/sc48/">https://tj4.9bc.myftpupload.com/2021/11/30/sc48/</a> (Ballot SC48)<o:p></o:p></span></li></ul><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Georgia",serif'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Georgia",serif'>Here’s the source repository:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Georgia",serif'>            <a href="https://github.com/castillar/proceedings-md">https://github.com/castillar/proceedings-md</a><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Georgia",serif'><o:p> </o:p></span></p><p class=MsoNormal><b><span style='font-size:11.0pt;font-family:"Georgia",serif'>Longer Version:</span></b><span style='font-size:11.0pt;font-family:"Georgia",serif'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Georgia",serif'>The way GIW works is to pull Markdown files from a public Github repo and then convert them into static WordPress posts. You can either do the sync manually on demand or by using a webhook from Github that will poke the server when an update is pushed to the branch it’s watching. The advantage of this is that we get Git review/update/approve workflows for things like ballots and minutes that need a standard format and review process, without imposing that on the rest of the website.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Georgia",serif'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Georgia",serif'>Couple things I noticed:<o:p></o:p></span></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo3'><span style='font-size:11.0pt;font-family:"Georgia",serif'>GIW will watch specific branches, but it does need a public repository. This would mean some extra steps for minutes, which require private review prior to being made publicly viewable. I have some ideas for this below, or we might decide that minutes are less important for this process and just focus on this for ballots.<o:p></o:p></span></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo3'><span style='font-size:11.0pt;font-family:"Georgia",serif'>The Git flow is particularly useful for ballots, as we could make the Github repo the standard location for ballot proposals. Propose the ballot as a pull request, update the ballot pull request as it passes through discussion and voting, and then approve the pull request when voting is complete to automatically create a ballot record. In addition, we can code some Github workflows to accompany this, adding and modifying boilerplate on the ballot record to indicate IPR and link the final ballot to the updated document(s) through that process.<o:p></o:p></span></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo3'><span style='font-size:11.0pt;font-family:"Georgia",serif'>The information flow is one-way only: if you edit a post on WordPress after importing it, those changes are not propagated back to Github. In addition, those changes may be overwritten the next time you run an import, so anything we’re publishing through Github needs to be exclusively edited in Github.<o:p></o:p></span></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo3'><span style='font-size:11.0pt;font-family:"Georgia",serif'>GIW creates the post name from the filename, so if we have two files named the same thing, it’s going to create them as 20210916 and 20210916-2 in WordPress. Filenames therefore need to be globally unique, which would push for a more flat layout than I have (more like “ballots under this directory with unique names, minutes under this directory with unique names” rather than creating folders to organize content.<o:p></o:p></span></li></ul><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Georgia",serif'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Georgia",serif'>For the minutes process, I can see two potential workarounds for the public repo problem:<o:p></o:p></span></p><ol style='margin-top:0in' start=1 type=1><li class=MsoListParagraph style='margin-left:0in;mso-list:l3 level1 lfo7'><span style='font-size:11.0pt;font-family:"Georgia",serif'>Create a private repo for each working group (or one private repo for all, if we’re OK with that) and do the initial review of the minutes on that repo. This would require anyone wanting to view the minutes to have a Github account added to the repo, or we could probably configure it to publish a copy over email to the management list. Once the minutes are approved in the private repo, they’d be fast-tracked through the public repo into WordPress. That would obviate some of the advantage of the public repo, but we could still use it for ballots and as a standard publishing method (and to make sure the format is correct before publishing to the website).<o:p></o:p></span></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l3 level1 lfo7'><span style='font-size:11.0pt;font-family:"Georgia",serif'>Continue to do the private review of the minutes on the management mailer. When the minutes are approved by the relevant working group, they’d submit a pull request to the public repo, and the public repo owners would just make sure the formatting is correct and then approve it. This is the simpler option, although it does remove some of the git advantages.<o:p></o:p></span></li></ol><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Georgia",serif'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Georgia",serif'>In addition, there’s the question of publication dates and layout. The repo is laid out like this:<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;font-family:Consolas'>proceedings-md/<o:p></o:p></span></p><p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;font-family:Consolas'>minutes/<o:p></o:p></span></p><p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;font-family:Consolas'>forum/<o:p></o:p></span></p><p class=MsoNormal style='margin-left:2.0in'><span style='font-size:11.0pt;font-family:Consolas'>datestamp.md # e.g., 20210916.md<o:p></o:p></span></p><p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;font-family:Consolas'>scwg/<o:p></o:p></span></p><p class=MsoNormal style='margin-left:2.0in'><span style='font-size:11.0pt;font-family:Consolas'>datestamp.md<o:p></o:p></span></p><p class=MsoNormal style='margin-left:1.0in'><span style='font-size:11.0pt;font-family:Consolas'>ballots/<o:p></o:p></span></p><p class=MsoNormal style='margin-left:1.5in'><span style='font-size:11.0pt;font-family:Consolas'>tag-ballotnum.md # # e.g., sc48.md or forum-13.md<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Georgia",serif'>GIW then converts this into WordPress layout by creating a Post page for each MD file it finds in the repository. It first creates a post like this:<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-size:11.0pt;font-family:"Georgia",serif'><a href="https://tj4.9bc.myftpupload.com/2021/11/30/20210916/">https://tj4.9bc.myftpupload.com/2021/11/30/20210916/</a><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Georgia",serif'>The URL comes from the date of import (that is, the date GIW pulled the post into WordPress) plus the name of the file. Folders within the imported layout don’t seem to be mapped to slugs on WordPress, so we should probably just push for a flat repo layout as noted above.<o:p></o:p></span></p><p class=MsoNormal style='text-indent:.5in'><span style='font-size:11.0pt;font-family:"Georgia",serif'>The downside of this is that if we import all of this material into WordPress, it’s all going to appear as if everything was created on the same day. I haven’t played with it enough yet to know whether we can somehow set the creation date in the YAML front material on the post. I did check and we can manually edit the WordPress post to change the publication date, but the plugin will then create duplicate posts on the next import because it doesn’t see them as identical anymore, so that’s not going to be a good option. Going forward, things should be OK since the site will import new content close to the date of publication in Github, but for the initial import it might be problematic. One option would be to <i>not</i> import old content to Github, and simply start tracking new content from XX date forward, so that older content already on the website remains unchanged.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Georgia",serif'><o:p> </o:p></span></p><div><div><p class=MsoNormal><span style='font-size:9.0pt;font-family:Consolas;color:black'>-- <br>Jos Purvis (</span><a href="mailto:jopurvis@cisco.com" title="mailto:jopurvis@cisco.com"><span style='font-size:9.0pt;font-family:Consolas;color:#954F72'>jopurvis@cisco.com</span></a><span style='font-size:9.0pt;font-family:Consolas;color:black'>)<br>.:|:.:|:. cisco systems  | Cryptographic Services<br>PGP: 0xFD802FEE07D19105  | Controls & Trust Verification</span><span style='color:black'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt'><o:p> </o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p></div></body></html>