{"id":3790,"date":"2018-11-28T18:20:26","date_gmt":"2018-11-28T23:20:26","guid":{"rendered":"http:\/\/lisa.rushworth.us\/?p=3790"},"modified":"2021-04-19T23:07:11","modified_gmt":"2021-04-20T04:07:11","slug":"off-label-use-git","status":"publish","type":"post","link":"https:\/\/www.rushworth.us\/lisa\/?p=3790","title":{"rendered":"Off Label Use: Git"},"content":{"rendered":"\n<p>I store a lot of code in Git-based systems, and I read through parts of my state&#8217;s Revised Code on occasion. But it never occurred to me to\u00a0<em><a rel=\"noreferrer noopener\" aria-label=\"I store a lot of code in Git-based systems, and I read through parts of my state's Revised Code on occasion. But it never occurred to me to\u00a0store\u00a0the Revised Code\u00a0in\u00a0a Git-based system.\u00a0 (opens in a new tab)\" href=\"https:\/\/arstechnica.com\/tech-policy\/2018\/11\/how-i-changed-the-law-with-a-github-pull-request\/\" target=\"_blank\">store<\/a><\/em><a rel=\"noreferrer noopener\" aria-label=\"I store a lot of code in Git-based systems, and I read through parts of my state's Revised Code on occasion. But it never occurred to me to\u00a0store\u00a0the Revised Code\u00a0in\u00a0a Git-based system.\u00a0 (opens in a new tab)\" href=\"https:\/\/arstechnica.com\/tech-policy\/2018\/11\/how-i-changed-the-law-with-a-github-pull-request\/\" target=\"_blank\">\u00a0the Revised Code\u00a0<\/a><em><a rel=\"noreferrer noopener\" aria-label=\"I store a lot of code in Git-based systems, and I read through parts of my state's Revised Code on occasion. But it never occurred to me to\u00a0store\u00a0the Revised Code\u00a0in\u00a0a Git-based system.\u00a0 (opens in a new tab)\" href=\"https:\/\/arstechnica.com\/tech-policy\/2018\/11\/how-i-changed-the-law-with-a-github-pull-request\/\" target=\"_blank\">in<\/a><\/em><a rel=\"noreferrer noopener\" aria-label=\"I store a lot of code in Git-based systems, and I read through parts of my state's Revised Code on occasion. But it never occurred to me to\u00a0store\u00a0the Revised Code\u00a0in\u00a0a Git-based system.\u00a0 (opens in a new tab)\" href=\"https:\/\/arstechnica.com\/tech-policy\/2018\/11\/how-i-changed-the-law-with-a-github-pull-request\/\" target=\"_blank\">\u00a0a Git-based system<\/a>.\u00a0<a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/DCCouncil\/dc-law-xml\" target=\"_blank\">Washington, DC<\/a> has started doing exactly that. <\/p>\n\n\n\n<p>First, some basic terminology from GitHub &#8212; a &#8220;commit&#8221; is a change. In this case, a change to the revised code text. An &#8220;Issue&#8221; is where someone points out a problem with the existing code or proposes an enhancement &#8212; in this case, someone either pointing out a typo or suggesting a new law. And a &#8220;Pull Request&#8221; (aka a &#8220;PR&#8221;) is used to accept a commit into the code &#8212; in this case, applying the change to the revised code text. <\/p>\n\n\n\n<p>Imagine being able to comment on a pull request and have your commentary considered during the public hearings for the proposed change. Sure, there&#8217;s elitism to assuming everyone&#8217;s got a computer and time to peruse proposed changes. But not more than assuming everyone&#8217;s got an hour to head over to Town Hall and&nbsp;<em>attend<\/em>&nbsp;the public hearing.&nbsp;And resident-initiated changes could be proxied through a third party &#8212; city government staff, for instance. <\/p>\n\n\n\n<p>The process could increase transparency &#8212; GitHub users can subscribe to get notifications when issues and PRs are entered into the system. An issue could be created when discussion over a proposed change begins. Links to public meetings and even discussion about the proposed changes could be available online. A pull request created by government officials finalizes the changes and commits them into the online revised code.  <\/p>\n\n\n\n<p>The git storage system retains history &#8212; a resident who is convinced an auxiliary building was totally in compliance of zoning regs when it was built could run through the history and identify exactly when the setback requirements changed. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2021\/04\/dcRCHistory.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"516\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2021\/04\/dcRCHistory-1024x516.png\" alt=\"\" class=\"wp-image-7713\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2021\/04\/dcRCHistory-1024x516.png 1024w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2021\/04\/dcRCHistory-300x151.png 300w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2021\/04\/dcRCHistory-768x387.png 768w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2021\/04\/dcRCHistory-750x378.png 750w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2021\/04\/dcRCHistory.png 1273w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Clicking into a specific &#8220;commit&#8221; will show you what changed &#8212; the left-hand column is the old version and the right-hand column is the new version. Something that was removed is highlighted in red; something added is highlighted in green. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2021\/04\/dcRCCommit.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"284\" src=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2021\/04\/dcRCCommit-1024x284.png\" alt=\"\" class=\"wp-image-7714\" srcset=\"https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2021\/04\/dcRCCommit-1024x284.png 1024w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2021\/04\/dcRCCommit-300x83.png 300w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2021\/04\/dcRCCommit-768x213.png 768w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2021\/04\/dcRCCommit-1536x425.png 1536w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2021\/04\/dcRCCommit-750x208.png 750w, https:\/\/www.rushworth.us\/lisa\/wp-content\/uploads\/2021\/04\/dcRCCommit.png 1888w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>From a procedural standpoint, there are some challenges. Their code is now maintained in XML, which isn&#8217;t necessarily something that will edit well in your favorite word processing program (Word, as an example, has some limitations when it comes to editing XML and, in my experience, generates really sloppy code &#8212; multiple style elements that all cancel each other out). Build automation is now a requirement of legal documents &#8212; a process that ingests changes to the XML and spits out an HTML web site or a PDF file. These challenges require someone with technical knowledge to maintain the revised code.\u00a0<\/p>\n\n\n\n<p>Logistically, it might be challenging to convince residents &#8212; especially those who don&#8217;t work as software developers &#8212; to use what is a software development tool to interact with local government. Even without citizen interactions, I think having a change history is an incredible advantage to using GitHub to store the revised code. It would be interesting to chat with the people who implemented this in DC and determine if (1) they get a lot of malicious submissions and (2) actually see citizens propose changes through GitHub. <\/p>\n\n\n\n<p>Document retention implications would need to be considered as well &#8212; user comments, maliciously entered issues or PRs, etc may be undesired. It&#8217;s possible to restrict &#8220;interactions&#8221; (comments, issue creation, PR creation) to an approved list of individuals. But there&#8217;s an advantage to allowing residents to copy edit the code and to propose changes to code. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>I store a lot of code in Git-based systems, and I read through parts of my state&#8217;s Revised Code on occasion. But it never occurred to me to\u00a0store\u00a0the Revised Code\u00a0in\u00a0a Git-based system.\u00a0Washington, DC has started doing exactly that. First, some basic terminology from GitHub &#8212; a &#8220;commit&#8221; is a change. In this case, a change &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[40,29],"tags":[233,695,696,697],"class_list":["post-3790","post","type-post","status-publish","format-standard","hentry","category-politics-and-government","category-technology","tag-git","tag-government","tag-local-government","tag-revised-code"],"_links":{"self":[{"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/posts\/3790","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3790"}],"version-history":[{"count":4,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/posts\/3790\/revisions"}],"predecessor-version":[{"id":7719,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=\/wp\/v2\/posts\/3790\/revisions\/7719"}],"wp:attachment":[{"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3790"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3790"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rushworth.us\/lisa\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3790"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}