commit 0c260d4b079b49e78b113b20b3ad5913cacf7165
parent f4fcaa9bb3bed11a760e4b1f0223981a07085568
Author: finwo <finwo@pm.me>
Date: Mon, 12 Jan 2026 23:44:08 +0100
Add SD0004, FGPL license
Diffstat:
6 files changed, 117 insertions(+), 9 deletions(-)
diff --git a/README.md b/README.md
@@ -20,3 +20,4 @@ own requirements.
- [SD0001](docs/spec/0001.pdf) JavaScript Styling
- [SD0002](docs/spec/0002.pdf) Ratus Unilicense 1.0
- [SD0003](docs/spec/0003.pdf) Specification Style Guide
+- [SD0004](docs/spec/0004.pdf) Finwo General Purpose License
diff --git a/build.sh b/build.sh
@@ -8,7 +8,9 @@ SPECDIR=$(pwd)/docs/spec
cat src/html/index.html.head > docs/index.html
cat src/markdown/README.md.head > README.md
-find ${ORGDIR} -maxdepth 1 -type d -regextype posix-egrep -regex '.*[0-9]{4}' | sort | while read spec; do
+FIND=$(command -v gfind find | head -1)
+
+${FIND} ${ORGDIR} -maxdepth 1 -type d -regextype posix-egrep -regex '.*[0-9]{4}' | sort | while read spec; do
# Read specification document data
declare -A DATA
@@ -45,7 +47,7 @@ find ${ORGDIR} -maxdepth 1 -type d -regextype posix-egrep -regex '.*[0-9]{4}' |
;;
txt)
# Include render data
- tool/template.sh -c ${spec}/data.ini ${filename} > ${filename}.rendered
+ tool/template.sh -c ${spec}/data.ini -p src/partial ${filename} > ${filename}.rendered
# Font: Courier
# 10pt font
@@ -68,15 +70,35 @@ find ${ORGDIR} -maxdepth 1 -type d -regextype posix-egrep -regex '.*[0-9]{4}' |
rm ${filename}.rendered
;;
md)
- tool/template.sh -c ${spec}/data.ini ${filename} | smu > ${filename}.html
- htmldoc --webpage --textfont sans --size A4 -f ${SPECDIR}/${DATA[identifier]}.pdf ${filename}.html
- rm ${filename}.html
+ MD=$(command -v cmark smu | head -1)
+ MDFLAGS=
+ HDFLAGS=
+ if [ "cmark" = "$(basename ${MD})" ]; then MDFLAGS="${MDFLAGS} --unsafe"; fi
+ if [ "${DATA[identifier]}" -ge "1" ]; then HDFLAGS="${HDFLAGS} --left 1cm --top 1cm --right 1cm --bottom 1cm --links --firstpage p1"; fi
+ if [ -f "${spec}/abstract.md" ]; then
+ tool/template.sh -c ${spec}/data.ini -p src/partial ${spec}/abstract.md | ${MD} ${MDFLAGS} > ${spec}/abstract.html
+ HDFLAGS="${HDFLAGS} --titlefile ${spec}/abstract.html";
+ else
+ HDFLAGS="${HDFLAGS} --no-title";
+ fi
+ tool/template.sh -c ${spec}/data.ini -p src/partial ${filename} | ${MD} ${MDFLAGS} > ${filename}.html
+ htmldoc ${HDFLAGS} --charset utf-8 --textfont sans --size A4 -f ${SPECDIR}/${DATA[identifier]}.pdf ${filename}.html
+ rm -f "${spec}/abstract.html"
+ rm -f "${filename}.html"
;;
hbs)
- # Include render data
- tool/template.sh -c ${spec}/data.ini ${filename} > ${filename}.html
- htmldoc --webpage --textfont sans --size A4 -f ${SPECDIR}/${DATA[identifier]}.pdf ${filename}.html
- rm ${filename}.html
+ HDFLAGS=
+ if [ "${DATA[identifier]}" -ge "1" ]; then HDFLAGS="${HDFLAGS} --left 1cm --top 1cm --right 1cm --bottom 1cm --links --firstpage p1"; fi
+ if [ -f "${spec}/abstract.hbs" ]; then
+ tool/template.sh -c ${spec}/data.ini -p src/partial ${spec}/abstract.hbs | ${MD} ${MDFLAGS} > ${spec}/abstract.html
+ HDFLAGS="${HDFLAGS} --titlefile ${spec}/abstract.html";
+ else
+ HDFLAGS="${HDFLAGS} --no-title";
+ fi
+ tool/template.sh -c ${spec}/data.ini -p src/partial ${filename} > ${filename}.html
+ htmldoc ${HDFLAGS} --charset utf-8 --textfont sans --size A4 -f ${SPECDIR}/${DATA[identifier]}.pdf ${filename}.html
+ rm -f "${spec}/abstract.html"
+ rm -f "${filename}.html"
;;
rendered)
# Skip
diff --git a/docs/index.html b/docs/index.html
@@ -76,6 +76,13 @@
<td href='#q='></td>
<td href="license/CC-by-4.0.txt">CC-by-4.0</td>
</tr>
+ <tr href="spec/0004.pdf">
+ <td>0004</td>
+ <td>Finwo General Purpose License</td>
+ <td>tbd</td>
+ <td href='#q='></td>
+ <td href="license/CC-by-4.0.txt">CC-by-4.0</td>
+ </tr>
</tbody>
</table>
</main>
diff --git a/docs/spec/0004.pdf b/docs/spec/0004.pdf
Binary files differ.
diff --git a/src/spec/0004/data.ini b/src/spec/0004/data.ini
@@ -0,0 +1,7 @@
+identifier=0004
+license=CC-by-4.0
+obsoleted-by=
+obsoletes=
+publication-date=January 2026
+publication-date-short=January 2026
+title=Finwo General Purpose License
diff --git a/src/spec/0004/document.md b/src/spec/0004/document.md
@@ -0,0 +1,71 @@
+# Finwo General Purpose License v0.1
+
+## Abstract
+
+This document defines the Finwo General Purpose License (FGPL), intended for
+being applied as software license for libraries and complete projects.
+
+## Human-readable form
+
+### Summary
+
+This license is **source-available** but not open source under
+[the OSI definition](https://opensource.org/osd). It is designed to:
+
+- Allow free use, modification, and redistribution, including commercial use.
+- Require attribution, modification noticides, and anti-rebranding for
+ redistributions or public offerings.
+
+### What you can and cannot do
+
+Allowed:
+
+- Use in personal, educational or commercial projects
+- Include the Software as a component in a larger product or service
+- Modify the Software and redistribute with attribution and modification notices
+- Host the Software in a public or private service with proper attribution and
+ notices
+
+Not allowed:
+
+- Rebrand the the Software as an independent or proprietary product
+- Remove attribution or license notices when redistributing
+- Host or redistribute without disclosing modifications
+
+# The License
+
+Copyright (c) [YEAR] [COPYRIGHT HOLDER]
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to use,
+copy, modify, and distribute the Software, subject to the following conditions:
+
+1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions, and the following disclaimer.
+
+2. Redistributions in binary form, or any public offering of the Software
+ (including hosted or managed services), must reproduce the above copyright
+ notice, this list of conditions, and the following disclaimer in the
+ documentation and/or other materials provided.
+
+3. Any redistribution or public offering of the Software must clearly
+ attribute the Software to the original copyright holder, reference this
+ License, and include a link to the official project repository or website.
+
+4. The Software may not be renamed, rebranded, or marketed in a manner that
+ implies it is an independent or proprietary product. Derivative works
+ must clearly state that they are based on the Software.
+
+5. Modifications to copies of the Software must carry prominent notices
+ stating that changes were made, the nature of the modifications, and
+ the date of the modifications.
+
+Any violation of these conditions terminates the permissions granted herein.
+
+THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.