Index: blog.rkt
==================================================================
--- blog.rkt
+++ blog.rkt
@@ -1,27 +1,9 @@
 #lang pollen/mode racket/base
 
-;; Copyright (c) 2019 Joel Dueck.
-;;
-;; Licensed under the Apache License, Version 2.0 (the "License");
-;; you may not use this file except in compliance with the License.
-;; A copy of the License is included with this source code, in the
-;; file "LICENSE.txt".
-;; You may also obtain a copy of the License at
-;;
-;;       http://www.apache.org/licenses/LICENSE-2.0
-;;
-;; Unless required by applicable law or agreed to in writing, software
-;; distributed under the License is distributed on an "AS IS" BASIS,
-;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;; See the License for the specific language governing permissions and
-;; limitations under the License.
-;;
-;; Author contact information:
-;;   joel@jdueck.net
-;;   https://joeldueck.com
-;; -------------------------------------------------------------------------
+; SPDX-License-Identifier: BlueOak-1.0.0
+; This file is licensed under the Blue Oak Model License 1.0.0.
 
 ;; Builds the paginated “blog” HTML files (blog-pg1.html ...) from the SQLite cache
 ;; The files will be written out every time this module is evaluated! (see end)
 
 (require "crystalize.rkt"

Index: code-docs/crystalize.scrbl
==================================================================
--- code-docs/crystalize.scrbl
+++ code-docs/crystalize.scrbl
@@ -1,13 +1,9 @@
 #lang scribble/manual
 
-@; Copyright (c) 2019 Joel Dueck
-@;
-@; Copying and distribution of this file, with or without modification,
-@; are permitted in any medium without royalty provided the copyright
-@; notice and this notice are preserved.  This file is offered as-is,
-@; without any warranty.
+@; SPDX-License-Identifier: BlueOak-1.0.0
+@; This file is licensed under the Blue Oak Model License 1.0.0.
 
 @(require "scribble-helpers.rkt")
 
 @(require (for-label "../pollen.rkt"
                      "../dust.rkt"

Index: code-docs/dust.scrbl
==================================================================
--- code-docs/dust.scrbl
+++ code-docs/dust.scrbl
@@ -1,13 +1,9 @@
 #lang scribble/manual
 
-@; Copyright (c) 2019 Joel Dueck
-@;
-@; Copying and distribution of this file, with or without modification,
-@; are permitted in any medium without royalty provided the copyright
-@; notice and this notice are preserved.  This file is offered as-is,
-@; without any warranty.
+@; SPDX-License-Identifier: BlueOak-1.0.0
+@; This file is licensed under the Blue Oak Model License 1.0.0.
 
 @(require "scribble-helpers.rkt"
           scribble/example)
 
 @(require (for-label "../pollen.rkt"

Index: code-docs/main.scrbl
==================================================================
--- code-docs/main.scrbl
+++ code-docs/main.scrbl
@@ -1,15 +1,9 @@
 #lang scribble/manual
 
-@; Copyright (c) 2019 Joel Dueck
-@;
-@; Copying and distribution of this file, with or without modification,
-@; are permitted in any medium without royalty provided the copyright
-@; notice and this notice are preserved.  This file is offered as-is,
-@; without any warranty.
-
-@; Scribble source for the main page of the code documents.
+@; SPDX-License-Identifier: BlueOak-1.0.0
+@; This file is licensed under the Blue Oak Model License 1.0.0.
 
 @(require "scribble-helpers.rkt")
 
 @title{Local Yarn: source code notes}
 

Index: code-docs/overview.scrbl
==================================================================
--- code-docs/overview.scrbl
+++ code-docs/overview.scrbl
@@ -1,13 +1,9 @@
 #lang scribble/manual
 
-@; Copyright (c) 2019 Joel Dueck
-@;
-@; Copying and distribution of this file, with or without modification,
-@; are permitted in any medium without royalty provided the copyright
-@; notice and this notice are preserved.  This file is offered as-is,
-@; without any warranty.
+@; SPDX-License-Identifier: BlueOak-1.0.0
+@; This file is licensed under the Blue Oak Model License 1.0.0.
 
 @(require "scribble-helpers.rkt"
           racket/runtime-path)
 
 @(require (for-label racket/base))

Index: code-docs/pollen.scrbl
==================================================================
--- code-docs/pollen.scrbl
+++ code-docs/pollen.scrbl
@@ -1,13 +1,9 @@
 #lang scribble/manual
 
-@; Copyright (c) 2019 Joel Dueck
-@;
-@; Copying and distribution of this file, with or without modification,
-@; are permitted in any medium without royalty provided the copyright
-@; notice and this notice are preserved.  This file is offered as-is,
-@; without any warranty.
+@; SPDX-License-Identifier: BlueOak-1.0.0
+@; This file is licensed under the Blue Oak Model License 1.0.0.
 
 @(require "scribble-helpers.rkt")
 @(require (for-label "../pollen.rkt"
                      "../dust.rkt"
                      "../crystalize.rkt"

Index: code-docs/scribble-helpers.rkt
==================================================================
--- code-docs/scribble-helpers.rkt
+++ code-docs/scribble-helpers.rkt
@@ -1,27 +1,9 @@
 #lang racket/base
 
-;; Copyright (c) 2018 Joel Dueck.
-;;
-;; Licensed under the Apache License, Version 2.0 (the "License");
-;; you may not use this file except in compliance with the License.
-;; A copy of the License is included with this source code, in the
-;; file "LICENSE.txt".
-;; You may also obtain a copy of the License at
-;;
-;;       http://www.apache.org/licenses/LICENSE-2.0
-;;
-;; Unless required by applicable law or agreed to in writing, software
-;; distributed under the License is distributed on an "AS IS" BASIS,
-;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;; See the License for the specific language governing permissions and
-;; limitations under the License.
-;;
-;; Author contact information:
-;;   joel@jdueck.net
-;;   https://joeldueck.com
-;; -------------------------------------------------------------------------
+; SPDX-License-Identifier: BlueOak-1.0.0
+; This file is licensed under the Blue Oak Model License 1.0.0.
 
 ;; Convenience/helper functions for this project’s Scribble documentation
 
 (require scribble/core
          scribble/manual/lang

Index: code-docs/scribble-iframe.html
==================================================================
--- code-docs/scribble-iframe.html
+++ code-docs/scribble-iframe.html
@@ -1,10 +1,13 @@
 <div class='fossil-doc' data-title='Code Documentation' >
+<!-- SPDX-License-Identifier: BlueOak-1.0.0
+     This file is licensed under the Blue Oak Model License 1.0.0.
+-->
     <div class='iframe-surround'>
         <iframe id='scribble' src="index.html" class="embedded-docs">
         </iframe>
     </div>
 </div>
 
     <script>
         document.getElementById('scribble').src = "index.html?n=" + new Date()/1;
     </script>

Index: code-docs/snippets-html.scrbl
==================================================================
--- code-docs/snippets-html.scrbl
+++ code-docs/snippets-html.scrbl
@@ -1,13 +1,9 @@
 #lang scribble/manual
 
-@; Copyright (c) 2019 Joel Dueck
-@;
-@; Copying and distribution of this file, with or without modification,
-@; are permitted in any medium without royalty provided the copyright
-@; notice and this notice are preserved.  This file is offered as-is,
-@; without any warranty.
+@; SPDX-License-Identifier: BlueOak-1.0.0
+@; This file is licensed under the Blue Oak Model License 1.0.0.
 
 @(require "scribble-helpers.rkt")
 
 @(require (for-label "../pollen.rkt"
                      "../dust.rkt"

Index: code-docs/sqlite-tools.scrbl
==================================================================
--- code-docs/sqlite-tools.scrbl
+++ code-docs/sqlite-tools.scrbl
@@ -1,13 +1,9 @@
 #lang scribble/manual
 
-@; Copyright (c) 2019 Joel Dueck
-@;
-@; Copying and distribution of this file, with or without modification,
-@; are permitted in any medium without royalty provided the copyright
-@; notice and this notice are preserved.  This file is offered as-is,
-@; without any warranty.
+@; SPDX-License-Identifier: BlueOak-1.0.0
+@; This file is licensed under the Blue Oak Model License 1.0.0.
 
 @(require "scribble-helpers.rkt"
           scribble/example)
 
 @(require (for-label "../pollen.rkt"

Index: crystalize.rkt
==================================================================
--- crystalize.rkt
+++ crystalize.rkt
@@ -1,27 +1,9 @@
 #lang racket/base
 
-;; Copyright (c) 2018 Joel Dueck.
-;;
-;; Licensed under the Apache License, Version 2.0 (the "License");
-;; you may not use this file except in compliance with the License.
-;; A copy of the License is included with this source code, in the
-;; file "LICENSE.txt".
-;; You may also obtain a copy of the License at
-;;
-;;       http://www.apache.org/licenses/LICENSE-2.0
-;;
-;; Unless required by applicable law or agreed to in writing, software
-;; distributed under the License is distributed on an "AS IS" BASIS,
-;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;; See the License for the specific language governing permissions and
-;; limitations under the License.
-;;
-;; Author contact information:
-;;   joel@jdueck.net
-;;   https://joeldueck.com
-;; -------------------------------------------------------------------------
+; SPDX-License-Identifier: BlueOak-1.0.0
+; This file is licensed under the Blue Oak Model License 1.0.0.
 
 ;; Provides functions for fast preserving and fetching of article/series data.
 ;;  → Docs and metas go in (saved to SQLite database)
 ;;    HTML comes out →
 ;; Calling sites have no notion of the database or schema.

Index: dust.rkt
==================================================================
--- dust.rkt
+++ dust.rkt
@@ -1,27 +1,9 @@
 #lang racket/base
 
-;; Copyright (c) 2018 Joel Dueck.
-;;
-;; Licensed under the Apache License, Version 2.0 (the "License");
-;; you may not use this file except in compliance with the License.
-;; A copy of the License is included with this source code, in the
-;; file "LICENSE.txt".
-;; You may also obtain a copy of the License at
-;;
-;;       http://www.apache.org/licenses/LICENSE-2.0
-;;
-;; Unless required by applicable law or agreed to in writing, software
-;; distributed under the License is distributed on an "AS IS" BASIS,
-;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;; See the License for the specific language governing permissions and
-;; limitations under the License.
-;;
-;; Author contact information:
-;;   joel@jdueck.net
-;;   https://joeldueck.com
-;; -------------------------------------------------------------------------
+; SPDX-License-Identifier: BlueOak-1.0.0
+; This file is licensed under the Blue Oak Model License 1.0.0.
 
 (require pollen/core
          pollen/pagetree
          pollen/setup
          pollen/file

Index: keyword-index.rkt
==================================================================
--- keyword-index.rkt
+++ keyword-index.rkt
@@ -1,27 +1,9 @@
 #lang pollen/mode racket/base
 
-;; Copyright (c) 2019 Joel Dueck.
-;;
-;; Licensed under the Apache License, Version 2.0 (the "License");
-;; you may not use this file except in compliance with the License.
-;; A copy of the License is included with this source code, in the
-;; file "LICENSE.txt".
-;; You may also obtain a copy of the License at
-;;
-;;       http://www.apache.org/licenses/LICENSE-2.0
-;;
-;; Unless required by applicable law or agreed to in writing, software
-;; distributed under the License is distributed on an "AS IS" BASIS,
-;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;; See the License for the specific language governing permissions and
-;; limitations under the License.
-;;
-;; Author contact information:
-;;   joel@jdueck.net
-;;   https://joeldueck.com
-;; -------------------------------------------------------------------------
+; SPDX-License-Identifier: BlueOak-1.0.0
+; This file is licensed under the Blue Oak Model License 1.0.0.
 
 ;; Builds an HTML page containing the keyword index for all ◊index entries in
 ;; the articles, by pulling them out of the SQLite cache DB.
 
 (require racket/match

Index: makefile
==================================================================
--- makefile
+++ makefile
@@ -1,8 +1,8 @@
-# Licensed under the terms of the Blue Oak Model License 1.0.0
-# https://blueoakcouncil.org/license/1.0.0
-# You may not use this file except in compliance with that license.
+# SPDX-License-Identifier: BlueOak-1.0.0
+# This file is licensed under the Blue Oak Model License 1.0.0.
+
 SHELL = /bin/bash
 
 # ~~~ Variables used by rules ~~~
 #
 

Index: pollen.rkt
==================================================================
--- pollen.rkt
+++ pollen.rkt
@@ -1,15 +1,9 @@
 #lang racket/base
 
-;; Licensed under the Local Yarn License 1.0.0. You may not use this 
-;; file except in compliance with that license. A copy of the license
-;; is included with this source code, in the file “LICENSE.md”.
-;;
-;; Maintainer contact information:
-;;   Joel Dueck (joel@jdueck.net)
-;;   https://joeldueck.com
-;; -------------------------------------------------------------------------
+; SPDX-License-Identifier: BlueOak-1.0.0
+; This file is licensed under the Blue Oak Model License 1.0.0.
 
 ;; Functions for tags and template content used in all Pollen source files and templates.
 
 (require (for-syntax racket/base
                      racket/syntax

Index: snippets-html.rkt
==================================================================
--- snippets-html.rkt
+++ snippets-html.rkt
@@ -1,27 +1,9 @@
 #lang pollen/mode racket/base
 
-;; Copyright (c) 2018 Joel Dueck.
-;;
-;; Licensed under the Apache License, Version 2.0 (the "License");
-;; you may not use this file except in compliance with the License.
-;; A copy of the License is included with this source code, in the
-;; file "LICENSE.txt".
-;; You may also obtain a copy of the License at
-;;
-;;       http://www.apache.org/licenses/LICENSE-2.0
-;;
-;; Unless required by applicable law or agreed to in writing, software
-;; distributed under the License is distributed on an "AS IS" BASIS,
-;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;; See the License for the specific language governing permissions and
-;; limitations under the License.
-;;
-;; Author contact information:
-;;   joel@jdueck.net
-;;   https://joeldueck.com
-;; -------------------------------------------------------------------------
+; SPDX-License-Identifier: BlueOak-1.0.0
+; This file is licensed under the Blue Oak Model License 1.0.0.
 
 ;; Provides functions for displaying content in HTML templates.
 (require pollen/core
          pollen/template
          pollen/decode

Index: sqlite-tools.rkt
==================================================================
--- sqlite-tools.rkt
+++ sqlite-tools.rkt
@@ -1,27 +1,9 @@
 #lang racket/base
 
-;; Copyright (c) 2018 Joel Dueck.
-;;
-;; Licensed under the Apache License, Version 2.0 (the "License");
-;; you may not use this file except in compliance with the License.
-;; A copy of the License is included with this source code, in the
-;; file "LICENSE.txt".
-;; You may also obtain a copy of the License at
-;;
-;;       http://www.apache.org/licenses/LICENSE-2.0
-;;
-;; Unless required by applicable law or agreed to in writing, software
-;; distributed under the License is distributed on an "AS IS" BASIS,
-;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;; See the License for the specific language governing permissions and
-;; limitations under the License.
-;;
-;; Author contact information:
-;;   joel@jdueck.net
-;;   https://joeldueck.com
-;; -------------------------------------------------------------------------
+; SPDX-License-Identifier: BlueOak-1.0.0
+; This file is licensed under the Blue Oak Model License 1.0.0.
 
 ;; Provides a very light set of utility functions for a SQLite database.
 ;; These functions are completely agnostic as to the database schema.
 ;; These functions are NOT SAFE for use with data provided by untrusted users!
 

Index: tags-html.rkt
==================================================================
--- tags-html.rkt
+++ tags-html.rkt
@@ -1,27 +1,9 @@
 #lang racket/base
 
-;; Copyright (c) 2018 Joel Dueck.
-;;
-;; Licensed under the Apache License, Version 2.0 (the "License");
-;; you may not use this file except in compliance with the License.
-;; A copy of the License is included with this source code, in the
-;; file "LICENSE.txt".
-;; You may also obtain a copy of the License at
-;;
-;;       http://www.apache.org/licenses/LICENSE-2.0
-;;
-;; Unless required by applicable law or agreed to in writing, software
-;; distributed under the License is distributed on an "AS IS" BASIS,
-;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;; See the License for the specific language governing permissions and
-;; limitations under the License.
-;;
-;; Author contact information:
-;;   joel@jdueck.net
-;;   https://joeldueck.com
-;; -------------------------------------------------------------------------
+; SPDX-License-Identifier: BlueOak-1.0.0
+; This file is licensed under the Blue Oak Model License 1.0.0.
 
 ;; Tag functions used by pollen.rkt when HTML is the output format.
 
 (require (for-syntax racket/base racket/syntax))
 (require racket/list

Index: template.html.p
==================================================================
--- template.html.p
+++ template.html.p
@@ -1,6 +1,8 @@
 <!DOCTYPE html>
+◊; SPDX-License-Identifier: BlueOak-1.0.0
+◊; This file is licensed under the Blue Oak Model License 1.0.0.
 <html lang="en">
 
 ◊(define article-html (crystalize-article! here doc))
 ◊(define page-title (article-plain-title here))
 ◊html$-page-head[page-title]

Index: util/newpost.rkt
==================================================================
--- util/newpost.rkt
+++ util/newpost.rkt
@@ -1,27 +1,11 @@
 #lang pollen/mode racket/base
 
-;; Copyright (c) 2018 Joel Dueck.
-;;
-;; Licensed under the Apache License, Version 2.0 (the "License");
-;; you may not use this file except in compliance with the License.
-;; A copy of the License is included with this source code, in the
-;; file "LICENSE.txt".
-;; You may also obtain a copy of the License at
-;;
-;;       http://www.apache.org/licenses/LICENSE-2.0
-;;
-;; Unless required by applicable law or agreed to in writing, software
-;; distributed under the License is distributed on an "AS IS" BASIS,
-;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-;; See the License for the specific language governing permissions and
-;; limitations under the License.
-;;
-;; Author contact information:
-;;   joel@jdueck.net
-;;   https://joeldueck.com
-;; -------------------------------------------------------------------------
+; SPDX-License-Identifier: BlueOak-1.0.0
+; This file is licensed under the Blue Oak Model License 1.0.0.
+
+;; Script/template for starting a new article
 
 (require racket/date
          racket/string
          racket/file
          racket/system

Index: util/relativize
==================================================================
--- util/relativize
+++ util/relativize
@@ -1,9 +1,9 @@
 #!/bin/bash
 
-# Licensed under the terms of the Blue Oak Model License 1.0.0
-# https://blueoakcouncil.org/license/1.0.0
+# SPDX-License-Identifier: BlueOak-1.0.0
+# This file is licensed under the Blue Oak Model License 1.0.0.
 
 # The HTML generated assumes the whole site lives in the domain root. This script converts all links
 # and image sources to relative URLs, so things don't break when accessed from within a subfolder of
 # a live web server. (See ‘publish’ target of makefile)
 

Index: web-extra/font.css
==================================================================
--- web-extra/font.css
+++ web-extra/font.css
@@ -1,5 +1,9 @@
+/* SPDX-License-Identifier: BlueOak-1.0.0
+   This file is licensed under the Blue Oak Model License 1.0.0.
+*/
+
 @font-face {
   font-family: 'Fabiol';
   src: url('LDFabiolPro-Regular.woff2') format('woff2'),
        url('LDFabiolPro-Regular.woff') format('woff');
   font-style:   normal;

Index: web-extra/martin.css.pp
==================================================================
--- web-extra/martin.css.pp
+++ web-extra/martin.css.pp
@@ -1,25 +1,9 @@
 #lang pollen/pre
 
-/* Copyright (c) 2018 Joel Dueck.
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**       http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-**
-** Author contact information:
-**   joel@jdueck.net
-**   https://joeldueck.com
-** -------------------------------------------------------------------------
+/* SPDX-License-Identifier: BlueOak-1.0.0
+** This file is licensed under the Blue Oak Model License 1.0.0. */
 
 /* Welcome to my CSS File!  
 ** I have named it `martin.css`, after Martin Pale. */
 
 ◊;{Here, broadly, is the approach we are taking here: