specifications

Specification and standard documents
git clone git://git.finwo.net/misc/specifications
Log | Files | Refs | README | LICENSE

commit 0c260d4b079b49e78b113b20b3ad5913cacf7165
parent f4fcaa9bb3bed11a760e4b1f0223981a07085568
Author: finwo <finwo@pm.me>
Date:   Mon, 12 Jan 2026 23:44:08 +0100

Add SD0004, FGPL license

Diffstat:
MREADME.md | 1+
Mbuild.sh | 40+++++++++++++++++++++++++++++++---------
Mdocs/index.html | 7+++++++
Adocs/spec/0004.pdf | 0
Asrc/spec/0004/data.ini | 7+++++++
Asrc/spec/0004/document.md | 71+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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.