diff --git a/docs/quality-house.md b/docs/quality-house.md index 43a335a..6f21502 100644 --- a/docs/quality-house.md +++ b/docs/quality-house.md @@ -15,7 +15,7 @@ Out of scope here: §5 component mapping (would need a second house), §6 critical performance budget (already a curated rank), §7 tradeoffs (narrative), §8 inconsistencies (history). -The perception zone scores four products against the WHATs on a 0–5 scale. +The perception zone scores five products against the WHATs on a 0–5 scale. **These are educated guesses, not measurements** — see the [scoring rationale](#perception-scores-guessed) below for what each cell is based on. Useful for self-positioning ("where do we land vs the @@ -264,6 +264,7 @@ market"), not as a fair head-to-head buyer's guide. \definecolor{qfdcRem}{RGB}{213,94,0} \definecolor{qfdcFrw}{RGB}{0,158,115} \definecolor{qfdcPom}{RGB}{204,121,167} +\definecolor{qfdcFrwS}{RGB}{86,180,233} \tikzset{ qfdalt1mk/.style={circle, draw=qfdcOurs, fill=qfdcOurs!55!white, @@ -280,6 +281,10 @@ market"), not as a fair head-to-head buyer's guide. fill=qfdcPom!50!white, minimum size=7pt, inner sep=0pt, line width=1.0pt}, qfdalt4ln/.style={line width=0.8pt, dash dot, qfdcPom}, + qfdalt5mk/.style={star, star points=5, star point ratio=0.55, + draw=qfdcFrwS, fill=qfdcFrwS!55!white, + minimum size=7.5pt, inner sep=0pt, line width=0.9pt}, + qfdalt5ln/.style={line width=0.8pt, dash dot dot, qfdcFrwS}, } \begin{document} @@ -457,34 +462,37 @@ market"), not as a fair head-to-head buyer's guide. \node[anchor=east, font=\scriptsize\itshape] at ({-0.1}, {-\qfdNW - \k + 0.5}) {\lbl}; - % ---------- Perception zone: 4 products x 13 WHATs (0-5 scores) ---------- + % ---------- Perception zone: 5 products x 13 WHATs (0-5 scores) ---------- % Columns: \so=Ours target, \st=reMarkable 2 + Type Folio, - % \sf=Freewrite Traveler, \sg=Pomera DM250. + % \sf=Freewrite Traveler, \sg=Pomera DM250, + % \sh=Freewrite Smart Typewriter. % Pass 1: stash each score as a named coordinate so the profile lines % below can reuse it without recomputing. - \foreach \r/\so/\st/\sf/\sg in {% - 1/4/3/3/5, - 2/5/4/4/2, - 3/4/4/2/2, - 4/5/2/2/5, - 5/4/3/3/5, - 6/3/3/4/5, - 7/5/2/5/5, - 8/4/3/4/5, - 9/4/3/1/1, - 10/5/4/2/1, - 11/1/5/5/4, - 12/3/1/2/3, - 13/3/5/2/2% + \foreach \r/\so/\st/\sf/\sg/\sh in {% + 1/4/3/3/5/2, + 2/5/4/4/2/4, + 3/4/4/2/2/2, + 4/5/2/2/5/2, + 5/4/3/3/5/3, + 6/3/3/4/5/4, + 7/5/2/5/5/5, + 8/4/3/4/5/4, + 9/4/3/1/1/1, + 10/5/4/2/1/2, + 11/1/5/5/4/5, + 12/3/1/2/3/2, + 13/3/5/2/2/2% } { \pgfmathsetmacro{\xo}{\qfdNH + (\so + 0.5)*\qfdCmpW/6} \pgfmathsetmacro{\xt}{\qfdNH + (\st + 0.5)*\qfdCmpW/6} \pgfmathsetmacro{\xf}{\qfdNH + (\sf + 0.5)*\qfdCmpW/6} \pgfmathsetmacro{\xg}{\qfdNH + (\sg + 0.5)*\qfdCmpW/6} + \pgfmathsetmacro{\xs}{\qfdNH + (\sh + 0.5)*\qfdCmpW/6} \coordinate (po-\r) at (\xo, {-\r + 0.5}); \coordinate (pr-\r) at (\xt, {-\r + 0.5}); \coordinate (pf-\r) at (\xf, {-\r + 0.5}); \coordinate (pp-\r) at (\xg, {-\r + 0.5}); + \coordinate (ps-\r) at (\xs, {-\r + 0.5}); } % Pass 2: profile lines per alternative. Drawn before markers so the @@ -493,6 +501,7 @@ market"), not as a fair head-to-head buyer's guide. \draw[qfdalt2ln] (pr-1) \foreach \r in {2,...,\qfdNW} { -- (pr-\r) }; \draw[qfdalt3ln] (pf-1) \foreach \r in {2,...,\qfdNW} { -- (pf-\r) }; \draw[qfdalt4ln] (pp-1) \foreach \r in {2,...,\qfdNW} { -- (pp-\r) }; + \draw[qfdalt5ln] (ps-1) \foreach \r in {2,...,\qfdNW} { -- (ps-\r) }; % Pass 3: markers on top of the lines. \foreach \r in {1,...,\qfdNW} { @@ -500,13 +509,14 @@ market"), not as a fair head-to-head buyer's guide. \node[qfdalt2mk] at (pr-\r) {}; \node[qfdalt3mk] at (pf-\r) {}; \node[qfdalt4mk] at (pp-\r) {}; + \node[qfdalt5mk] at (ps-\r) {}; } - % ---------- Manual legend (4 alternatives, placed right of zones) ---------- + % ---------- Manual legend (5 alternatives, placed right of zones) ---------- \pgfmathsetmacro{\qfdLegX}{\qfdNH + \qfdCmpW + 0.7} \begin{scope}[shift={(\qfdLegX, \qfdHdrH - 0.4)}] \draw[qfdmed, rounded corners=2pt] - (-0.15, 0.4) rectangle (5.1, -7.05); + (-0.15, 0.4) rectangle (5.1, -7.50); % Relations \node[anchor=west, font=\footnotesize\bfseries] at (0, 0.1) {Relation}; @@ -539,10 +549,13 @@ market"), not as a fair head-to-head buyer's guide. \draw[qfdalt3ln] (0.05, -5.70) -- (0.45, -5.70); \node[qfdalt3mk] at (0.25, -5.70) {}; \node[anchor=west] at (0.55, -5.70) {Freewrite Traveler}; - \draw[qfdalt4ln] (0.05, -6.15) -- (0.45, -6.15); - \node[qfdalt4mk] at (0.25, -6.15) {}; - \node[anchor=west] at (0.55, -6.15) {Pomera DM250}; - \node[anchor=west, font=\scriptsize\itshape] at (0, -6.70) + \draw[qfdalt5ln] (0.05, -6.15) -- (0.45, -6.15); + \node[qfdalt5mk] at (0.25, -6.15) {}; + \node[anchor=west] at (0.55, -6.15) {Freewrite Smart Typewriter}; + \draw[qfdalt4ln] (0.05, -6.60) -- (0.45, -6.60); + \node[qfdalt4mk] at (0.25, -6.60) {}; + \node[anchor=west] at (0.55, -6.60) {Pomera DM250}; + \node[anchor=west, font=\scriptsize\itshape] at (0, -7.15) {0 = poor, 5 = excellent}; \end{scope} @@ -552,31 +565,33 @@ market"), not as a fair head-to-head buyer's guide. ## Perception scores (guessed) -Four products on the 0–5 scale, scored against each WHAT. Reference +Five products on the 0–5 scale, scored against each WHAT. Reference configurations: **reMarkable 2 + Type Folio**, **Freewrite Traveler**, -**Pomera DM250** (DM250 has a reflective monochrome LCD, not e-ink — flagged -in W1 / W8). "Ours" is the v0.1 target from `qfd.md` §2, not measured yet. +**Freewrite Smart Typewriter**, **Pomera DM250** (DM250 has a reflective +monochrome LCD, not e-ink — flagged in W1 / W8). "Ours" is the v0.1 +target from `qfd.md` §2, not measured yet. -| ID | WHAT (truncated) | Ours | reM. | Frw. | Pom. | Rationale (shortest defensible) | -| --- | ----------------------------------------------- | :--: | :--: | :--: | :--: | ---------------------------------------------------------------------------------------------------------------- | -| W1 | Sub-second response to typing | 4 | 3 | 3 | 5 | Ours targets ≤200 ms; reMarkable + Freewrite (e-ink) are visibly laggy; Pomera's reflective LCD is near-zero. | -| W2 | Publishing is one deliberate action away | 5 | 4 | 4 | 2 | Ctrl-G atomic; reMarkable + Freewrite cloud-sync is one-tap but not git; Pomera = USB/SD copy or QR transfer. | -| W3 | Pulling power never corrupts the file | 4 | 4 | 2 | 2 | Ours: atomic-rename + fsync. reMarkable journals. Freewrite + Pomera: forum reports of corruption on yank. | -| W4 | Provisioning never interrupts writing | 5 | 2 | 2 | 5 | Ours v0.1: build-time config (dev-only). reM/Frw need Wi-Fi + account. Pomera: literally none. | -| W5 | Quick boot to a writing cursor | 4 | 3 | 3 | 5 | Ours target ≤5 s. reMarkable cold-boots ~20 s (great from sleep). Pomera ~3 s. | -| W6 | Long sessions without crash / lag / drift | 3 | 3 | 4 | 5 | Ours unproven (1 h target). Freewrite famously stable. Pomera firmware is decades-mature. | -| W7 | Nothing on the device competes with prose | 5 | 2 | 5 | 5 | reMarkable has apps, menus, drawing, PDFs. Freewrite + Pomera are single-purpose; ours by design. | -| W8 | The UI never moves except when I move it | 4 | 3 | 4 | 5 | reMarkable animates more; ours uses dirty-rects; Freewrite minimal motion; Pomera near-static LCD. | -| W9 | Codebase absorbs the planned roadmap | 4 | 3 | 1 | 1 | Modular Rust ours; reMarkable is hackable Linux; Freewrite + Pomera are closed firmware. | -| W10 | I can repair or fork it with hobbyist tools | 5 | 4 | 2 | 1 | Ours: open BOM + ESP32. reMarkable: rooted Linux + community ROMs. Freewrite + Pomera: closed. | -| W11 | Multi-day battery life (v0.8 onward) | 1 | 5 | 5 | 4 | Ours v0.1 = wall-powered (battery deferred). reMarkable + Freewrite Traveler legendary. Pomera ~24 h. | -| W12 | Local-only files coexist with git scope | 3 | 1 | 2 | 3 | Ours v0.5+ design. reMarkable cloud-only. Freewrite has local + Postbox but no VCS. Pomera = pure local. | -| W13 | Typography sets a writing-tool tone | 3 | 5 | 2 | 2 | Ours v0.1: single mono (serif option in v1.0). reMarkable: rich type rendering. Freewrite + Pomera: utilitarian. | +| ID | WHAT (truncated) | Ours | reM. | Frw.T | Frw.S | Pom. | Rationale (shortest defensible) | +| --- | ----------------------------------------------- | :--: | :--: | :---: | :---: | :--: | ---------------------------------------------------------------------------------------------------------------------------- | +| W1 | Sub-second response to typing | 4 | 3 | 3 | 2 | 5 | Ours targets ≤200 ms; reMarkable + Frw.S (e-ink) visibly laggy, Smart's larger panel slower than Traveler; Pomera LCD ~zero. | +| W2 | Publishing is one deliberate action away | 5 | 4 | 4 | 4 | 2 | Ctrl-G atomic; reMarkable + Freewrite cloud-sync is one-tap but not git; Pomera = USB/SD copy or QR transfer. | +| W3 | Pulling power never corrupts the file | 4 | 4 | 2 | 2 | 2 | Ours: atomic-rename + fsync. reMarkable journals. Freewrite + Pomera: forum reports of corruption on yank. | +| W4 | Provisioning never interrupts writing | 5 | 2 | 2 | 2 | 5 | Ours v0.1: build-time config (dev-only). reM/Frw need Wi-Fi + account. Pomera: literally none. | +| W5 | Quick boot to a writing cursor | 4 | 3 | 3 | 3 | 5 | Ours target ≤5 s. reMarkable cold-boots ~20 s (great from sleep). Both Freewrites ~10–15 s e-ink wake. Pomera ~3 s. | +| W6 | Long sessions without crash / lag / drift | 3 | 3 | 4 | 4 | 5 | Ours unproven (1 h target). Freewrite famously stable (both variants). Pomera firmware is decades-mature. | +| W7 | Nothing on the device competes with prose | 5 | 2 | 5 | 5 | 5 | reMarkable has apps, menus, drawing, PDFs. Freewrite + Pomera are single-purpose; ours by design. | +| W8 | The UI never moves except when I move it | 4 | 3 | 4 | 4 | 5 | reMarkable animates more; ours uses dirty-rects; Freewrites minimal motion; Pomera near-static LCD. | +| W9 | Codebase absorbs the planned roadmap | 4 | 3 | 1 | 1 | 1 | Modular Rust ours; reMarkable is hackable Linux; Freewrite + Pomera are closed firmware. | +| W10 | I can repair or fork it with hobbyist tools | 5 | 4 | 2 | 2 | 1 | Ours: open BOM + ESP32. reMarkable: rooted Linux + community ROMs. Freewrite + Pomera: closed. | +| W11 | Multi-day battery life (v0.8 onward) | 1 | 5 | 5 | 5 | 4 | Ours v0.1 = wall-powered (battery deferred). reMarkable + both Freewrites legendary (~4 weeks). Pomera ~24 h. | +| W12 | Local-only files coexist with git scope | 3 | 1 | 2 | 2 | 3 | Ours v0.5+ design. reMarkable cloud-only. Freewrites have local + Postbox but no VCS. Pomera = pure local. | +| W13 | Typography sets a writing-tool tone | 3 | 5 | 2 | 2 | 2 | Ours v0.1: single mono (serif option in v1.0). reMarkable: rich type rendering. Freewrite + Pomera: utilitarian. | **Totals** (sum across 13 WHATs, no weighting): Ours 50, Pomera 45, -reMarkable 42, Freewrite 39. Pomera ranking second is the useful signal — -we're effectively building "Pomera + Wi-Fi + git + hackable BOM", which -re-confirms the differentiation thesis from `README.md`. +reMarkable 42, Freewrite Traveler 39, Freewrite Smart Typewriter 38. +Pomera ranking second is the useful signal — we're effectively building +"Pomera + Wi-Fi + git + hackable BOM", which re-confirms the +differentiation thesis from `README.md`. Weighted totals (Σ score × W weight) tell the same story with more contrast — left as exercise; the unweighted view is enough to read the @@ -587,9 +602,10 @@ picture. - **Single-rater bias.** All thirteen rows are scored from the project author's POV. A reMarkable buyer would weight W11 (battery) at 10 and W12 (git) at 1, flipping the totals. -- **Configuration matters.** Freewrite Smart Typewriter (e-ink) scores - differently from Traveler (LCD) on W1 / W5. The table picks Traveler - as the most direct competitor. +- **Configuration matters.** Freewrite Smart Typewriter and Traveler are + both tracked; they diverge most on W1 / W5 because of display tech + (Smart's larger panel is slower to refresh). Traveler is still the + more direct competitor on form factor. - **W3 / W6 Freewrite scores are anecdotal.** Forum reports, not bench data. Treat the 2 / 4 as "we'd need to test this" rather than fact. - **No price column.** Ours-as-BOM is materially cheaper than the