diff --git a/Readme.adoc b/Readme.adoc new file mode 100644 index 0000000..55aa62f --- /dev/null +++ b/Readme.adoc @@ -0,0 +1,234 @@ += 📖 Steadfast Self-Hosting + +This is an awesome book about self hosting with code to help you get started. + +== Directory structure + +|=== +|path |description + +|`book/` |sources for the book +|`mario/` |sources for mario provisioning tool +|`pelican/` |sources for https://selfhostbook.com/ +|=== + +== Book formats + +<>, or https://github.com/meonkeys/shb-review/releases/[Download PDF, HTML, and EPUB versions here]. + +|=== +|version |device |quality + +|EPUB |calibre e-book viewer |good +|EPUB |Kobo e-reader |ok +|EPUB |FBReader |bad +|HTML |Firefox web browser |good +|screen PDF |Firefox web browser |good +|screen PDF |evince PDF viewer |good +|print PDF |evince PDF viewer |good +|print PDF |Firefox web browser |good +|print PDF |ink & paper |TBD +|=== + +== Feedback + +Please send me feedback! + +* What are your first impressions? Cover, table of contents, font, style, page size, book length, etc. +* Any/all factual, spelling, grammatical, and structural errors. +* Overall manuscript critique, comprehensive or line edits, copy-editing, proofreading. +* Does it make sense what I'm trying to convey and how? +* Consistency of voice, level of detail, narrative flow. +* Anywhere a diagram or photo would significantly help to illustrate a point. +* Any sections that should be rewritten, rethought, or removed. +* Is there a relevant and useful technology that isn't mentioned and should be? +* Test out mario on your own hardware/VM. Does it work for you as advertised? +* Is this book, this code, these ideas something you actually, personally want/read/use? +* Is this something you'd recommend to others? +* What would you expect to pay for a print copy? +* What would you expect to pay for a digital copy? +* Any feedback on the https://selfhostbook.com[book website]? + +== Issues + +Here's a quick summary of the stuff I'm aware of and working on. +IDs start with `am` to avoid conflicts with IDs that might be generated by some other issue tracker, should I choose one. + +|=== +|ID |Description |Status |Resolution Details + +|am37 |port website to static site generator |RESOLVED |I went with Pelican. +|am39 |test all links and references in all output formats |OPEN | +|am43 |port to future home (re-do this Readme) |OPEN | +|am44 |re-test mario start to finish |OPEN | +|am46 |make _Services_ map 1:1 with mario: add dyndns, mail, Traefik |OPEN | +|am48 |use service nicknames consistently: e.g. `media.example.com` |OPEN | +|am49 |improve FOSS “profit” argument |OPEN | +|am53 |spell check |RESOLVED | +|am54 |grammar check |RESOLVED | +|am55 |improve htmlproofer |OPEN | +|am57 |professional editing: focus on structure & style |IN PROGRESS |tech review! +|am58 |port `book/build.sh` to macOS |RESOLVED |Not as secure, but it works. +|am59 |port `book/build.sh` to Windows |OPEN | +|am60 |port `mario/ansible/provision.sh` to macOS |OPEN | +|am61 |port `mario/ansible/provision.sh` to Windows |OPEN | +|=== + +== How to build the book + +Run `./book/build.sh` to generate your own typeset outputs. + +This needs to be ported and tested to other operating systems besides Linux. +See am58 and am59, above. + +== Copyright and license + +This pre-publication secret manuscript of _Steadfast Self-Hosting: Rapid-Rise Personal Cloud_ is copyright (C)2024 Adam Monsen. +All rights reserved. +Creative Commons licensing does not (yet!) apply. + +== Editing stages reference + +(from https://www.ingramspark.com/how-to-self-publish-a-book) + +=== Manuscript Critique + +This is a high-level examination of your manuscript. +It looks at things like narrative voice, plot, and character development. +With this type of critique, editors give feedback on items that will help improve your overall story. + +=== Comprehensive Edit / Line Edit + +A comprehensive edit addresses structural issues (similar to a manuscript critique), but it also involves a line edit, which looks closely at writing style and language. +With a line edit, an editor focuses on the use of language to communicate your story to a reader. + +=== Copyedit + +A copyedit is often confused with a line edit, but they're very different steps in the editing process. A copyedit reviews technical flaws--issues with spelling, grammar, and punctuation--and looks for internal inconsistencies throughout the text. + +=== Proofread + +This is the final step in the editing process. A proofreader examines the final copy of the manuscript (usually after typesetting) for any awkward page breaks, and he or she might perform some light copyediting. + +== Style guide + +* pay attention to and follow the existing style +** standardize whenever possible and formalize conventions here +* images +** center most and constrain to 80% wide +* exclude optional slashes at ends of hyperlinks +* capitalize product/project names in prose as they appear in upstream's branding/docs +* capitalize only the first letter of the first word of sections/headers +** except: follow styling of proper nouns, acronyms, etc. +* define jargon and acronym twice: +** at first appearance, immediately following the term, in parentheses or locale-appropriate delimiters +** in the glossary +* footnotes +** don't use footnotes +* links +** include links next to or very near context, but try to avoid breaking the flow of text +** always include typed-out URL, never link text directly +*** this is to ensure consistent appearance across print and electronic versions +** exclude URL scheme from http(s) links +*** this is handled automatically by asciidoc option `hide-uri-scheme` +*** `https` is a safe guess/default (and hopefully people insist on `https` client-side!) +** if a link works without `www.` at the beginning of the domain name, omit it +*** this is bit of a risk: we're prioritizing shorter links in favor of more reliable links (some websites redirect, adding back `www.`) +** if a link works without a SEO slug, omit it +*** example w/slug: `+https://reddit.com/r/BorgBackup/comments/v3bwfg/why_should_i_switch_from_restic_to_borg/+` +*** example w/o slug: `+https://reddit.com/r/BorgBackup/comments/v3bwfg/+` +*** shorter is better, canonical/permalink is best (if you are forced to choose) +** use more readable version for cross references whenever possible +*** no: `+<<_more_about_foss>>+` +*** yes: `+<>+` +* use “command line” to refer to a Linux text-based interactive user interface +* use https://en.wikipedia.org/wiki/Serial_comma[Oxford commas] +* use https://asciidoctor.org/docs/asciidoc-recommended-practices/#one-sentence-per-line[one sentence] https://sive.rs/1s[per line] +* shell scripts +** prefer long form for command line flags, e.g. `--attribute` instead of `-a` +* release versioning +** use semver-like major, minor, patch version numbers +* source control +** commit early and often +** group logically related changes into single commits +*** consider future maintainers may wish to `git revert`: try to make that easy for them +** group a series of related changes in a branch +** squashing is OK +** before submitting patches: +*** ensure build passes +** commit log messages +*** the first line of a commit log message is very important: say precisely *what* change you made, save the *why* for the rest +*** use infinitive verb forms, e.g. “add -q quiet option” +*** don't wrap body text +*** see also: +**** https://mifosforge.jira.com/wiki/spaces/MIFOS/pages/4456742/Commit+Log+Guide +**** https://lore.kernel.org/git/7vr4waoics.fsf@alter.siamese.dyndns.org/ +**** https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html +** ChangeLog +*** one entry per release +*** summarize major changes since last release +*** use infinitve forms for “xyz happened” statements +* use `shb` namespace for document attributes +** short for “self-hosting book” +** example: `shb-printPDF`, used when generating a PDF for printing + +== am55: improve htmlproofer + +`book/.internal-build.sh` runs `htmlproofer`. +Currently I ignore erorrs with an `|| true` statement. +It would be better to ignore or fix the errors. +This is possible by instrumenting links in the text or adjusting the way htmlproofer is configured and run. + +Some recent output: + +.... +Running 3 checks (Images, Links, Scripts) in steadfast.html on *.html files ... + + +Checking 173 external links +Checking 94 internal links +Checking internal link hashes in 1 file +Ran on 1 file! + + +For the Links check, the following failures were found: + +* At steadfast.html:6581: + + http://catb.org/jargon/html/G/Good-Thing.html is not an HTTPS link + +For the Links > External check, the following failures were found: + +* At steadfast.html:650: + + External link https://sunrisedata.io failed (status code 404) + +* At steadfast.html:5354: + + External link https://github.com/wallabag/docker#upgrading failed: https://github.com/wallabag/docker exists, but the hash 'upgrading' does not (status code 200) + +* At steadfast.html:5713: + + External link https://matrix.to/#/#selfhosted:matrix.org failed: https://matrix.to/ exists, but the hash '/#selfhosted:matrix.org' does not (status code 200) + +* At steadfast.html:5988: + + External link https://github.com/strukturag/nextcloud-spreed-signaling#running-with-docker failed: https://github.com/strukturag/nextcloud-spreed-signaling exists, but the hash 'running-with-docker' does not (status code 200) + + +HTML-Proofer found 5 failures! +.... + +== Patches welcome + +Your contributions are most welcome! +When submitting a patch, please: + +. Heed the <