<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://ka2in.github.io/guides/open-web-digital-rights</id>
    <title>Farowave · Open Web &amp; Digital Rights</title>
    <updated>2026-05-22T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://ka2in.github.io/guides/open-web-digital-rights"/>
    <subtitle>Critical analysis of decentralized platforms, web3 protocols, and open infrastructure from a technical communication lens.</subtitle>
    <icon>https://ka2in.github.io/img/favicon.ico</icon>
    <rights>Copyright © 2026 Farowave</rights>
    <entry>
        <title type="html"><![CDATA[Sui Developer Documentation Review — Onboarding, Move, and the Architecture of Learning]]></title>
        <id>https://ka2in.github.io/guides/open-web-digital-rights/open-web-digital-rights/sui-developer-documentation-review</id>
        <link href="https://ka2in.github.io/guides/open-web-digital-rights/open-web-digital-rights/sui-developer-documentation-review"/>
        <updated>2026-05-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Scope of this review: The Getting Started section, the developer onboarding flow through "Hello, World!" and the Connect a Frontend guides, the conceptual introduction to Move and Sui's object model, and the overall information architecture of docs.sui.io. Documentation reviewed in May 2026 against the current published version.]]></summary>
        <content type="html"><![CDATA[<p><strong>Scope of this review:</strong> The Getting Started section, the developer onboarding flow through "Hello, World!" and the Connect a Frontend guides, the conceptual introduction to Move and Sui's object model, and the overall information architecture of <a href="https://docs.sui.io/" target="_blank" rel="noopener noreferrer" class="">docs.sui.io</a>. Documentation reviewed in May 2026 against the current published version.</p>
<p><strong>What this review is not:</strong> An evaluation of Sui as a technology, an investment opinion, or a comparison of protocol economics. The focus is how the documentation communicates — whether it teaches, whether it respects the reader's time, and whether it builds understanding before demanding technical work.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-suis-documentation-matters-more-than-most">Why Sui's Documentation Matters More Than Most<a href="https://ka2in.github.io/guides/open-web-digital-rights/open-web-digital-rights/sui-developer-documentation-review#why-suis-documentation-matters-more-than-most" class="hash-link" aria-label="Direct link to Why Sui's Documentation Matters More Than Most" title="Direct link to Why Sui's Documentation Matters More Than Most" translate="no">​</a></h2>
<p>Sui represents a genuine architectural departure from the dominant blockchain paradigm. It introduces a novel object-centric model, a programming language — Move — designed from the ground up for asset ownership, and a parallel transaction execution model that requires developers to unlearn assumptions about how blockchains handle state.</p>
<p>This is not a documentation challenge that comes from complexity alone. It's a challenge that comes from novelty. When developers arrive at docs.sui.io, they typically bring mental models from Ethereum, Solidity, or traditional web development. The documentation's job is not just to explain Sui — it's to replace an existing mental model with a better one, without losing the developer along the way.</p>
<p>That is a harder problem than most documentation teams acknowledge. Sui's team has tackled it with visible effort and partial success.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-developers-first-30-minutes">The Developer's First 30 Minutes<a href="https://ka2in.github.io/guides/open-web-digital-rights/open-web-digital-rights/sui-developer-documentation-review#the-developers-first-30-minutes" class="hash-link" aria-label="Direct link to The Developer's First 30 Minutes" title="Direct link to The Developer's First 30 Minutes" translate="no">​</a></h2>
<p>Opening docs.sui.io, the entry point is immediately clear. The Getting Started section is front and centre. A developer arriving with the intent to build will know where to go within seconds — this is not a given across the web3 documentation landscape, and Sui earns genuine credit for it.</p>
<p>The first substantive task — installing the Sui CLI and configuring a client — is where the first friction appears.
The documentation instructs the developer to run <code>sui client</code> and expect a setup prompt. For developers with a previous Sui installation, the command instead returns a help screen listing available subcommands.</p>
<p>The documentation does acknowledge this — an info callout explains that an existing <code>client.yaml</code> triggers the help output and offers a resolution — but the callout is supplementary rather than part of the main instruction flow. A developer reading linearly may not register it before hitting the discrepancy.</p>
<p>The conditional logic here — "if you have an existing config, you'll see this; if you don't, you'll see that" — belongs in the main instruction body, not in a secondary callout. First-time setup is not the right moment to bury a critical branching condition in supplementary text. A developer who sees the help screen instead of the expected prompt has already lost the thread before reaching the explanation that would have oriented them.</p>
<p>After the correct command, the experience improves significantly. The generated keypair, recovery phrase, and environment confirmation are presented cleanly. The <code>client.yaml</code> configuration file is referenced but its parameters are not explained inline — a developer who opens the file will find fields like alias, rpc, ws, basic_auth, and chain_id without definitions. The documentation points to the file without explaining what it contains, leaving developers to infer the meaning of each parameter from context or seek answers elsewhere.</p>
<p>Below is a description of the individual parameters listed under each network entry (for example, testnet) in the client.yaml configuration file for Sui:</p>
<table><thead><tr><th>Parameter</th><th>Meaning</th></tr></thead><tbody><tr><td><strong>alias</strong></td><td>A nickname for this environment (e.g., "testnet"). You use this when switching between networks with commands like <code>sui client switch --env testnet</code></td></tr><tr><td><strong>rpc</strong></td><td>The RPC (Remote Procedure Call) endpoint URL. This is the server you connect to when making requests to the Sui network. In this case, it's Sui's official testnet node</td></tr><tr><td><strong>ws</strong></td><td>WebSocket endpoint URL for real-time event subscriptions. The <code>~</code> means it's not configured/null (optional feature)</td></tr><tr><td><strong>basic_auth</strong></td><td>HTTP Basic Authentication credentials (username<!-- -->:password<!-- -->) if the RPC endpoint requires authentication. The <code>~</code> means none are configured</td></tr><tr><td><strong>chain_id</strong></td><td>A unique identifier for this specific blockchain network. <code>4c78adac</code> identifies the Sui testnet. Different networks (mainnet, devnet, testnet) have different chain IDs</td></tr></tbody></table>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-missing-audience-declaration">The Missing Audience Declaration<a href="https://ka2in.github.io/guides/open-web-digital-rights/open-web-digital-rights/sui-developer-documentation-review#the-missing-audience-declaration" class="hash-link" aria-label="Direct link to The Missing Audience Declaration" title="Direct link to The Missing Audience Declaration" translate="no">​</a></h2>
<p>The Getting Started section is visibly designed for developers. Every page assumes you're writing code, running CLI commands, and deploying to a network. Yet the section never says so.</p>
<p>This matters more than it might appear. Blockchain projects attract mixed audiences: developers, investors, researchers, and enthusiasts all arrive at the documentation from different contexts. Without an explicit statement — "This section guides developers building on Sui" — non-technical readers waste time trying to orient themselves in a space designed for someone else.</p>
<p>But the implicit audience is narrower still. Reading through the documentation, the assumed reader is not just a developer — they're a developer with existing blockchain context. Terms like on-chain, off-chain, gas, and consensus appear without definition. The hover tooltip system covers some terminology, but foundational concepts that a developer coming from web or mobile development would need to look up elsewhere are left unexplained.</p>
<p>This defines the documentation's real target audience by implication: someone who already understands how blockchains work and wants to learn Sui's specific approach. A web developer exploring blockchain for the first time, or an investor trying to understand what they're evaluating technically, will repeatedly hit terminology walls that send them outside the documentation to fill in context.</p>
<p>This is a deliberate or unconscious positioning choice, and it's worth naming clearly. The Sui documentation serves crypto-native developers well. It does not serve the curious newcomer, and it doesn't claim to — but it also doesn't say so. Adding an explicit audience statement, and either extending the tooltip coverage to foundational terms or linking to an external primer for blockchain basics, would close a gap that currently goes unacknowledged.</p>
<p>A single sentence at the top of the Getting Started landing page resolves the immediate confusion. It costs nothing and prevents a category of readers from spending time in a section that wasn't designed for them.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="move-the-conceptual-scaffolding-problem">Move: The Conceptual Scaffolding Problem<a href="https://ka2in.github.io/guides/open-web-digital-rights/open-web-digital-rights/sui-developer-documentation-review#move-the-conceptual-scaffolding-problem" class="hash-link" aria-label="Direct link to Move: The Conceptual Scaffolding Problem" title="Direct link to Move: The Conceptual Scaffolding Problem" translate="no">​</a></h2>
<p>Move is where Sui's documentation faces its hardest challenge, and where the gap between intention and execution is most visible.</p>
<p>The language is genuinely novel. Move was designed for asset ownership from the ground up. Its type system mathematically prevents reentrancy attacks — not by defensive coding patterns, but by making the unsafe operation structurally impossible. This is a meaningful claim, and the documentation does eventually explain it.</p>
<p>The problem is sequencing. A developer reading the Sui documentation for the first time encounters Move as a set of syntax rules before they've built an intuition for why it works differently. The conceptual scaffolding — the object-centric model, resource safety, the three-layer hierarchy of packages, modules, and objects — is present in the documentation, but it's distributed across multiple sections without a clear conceptual arc connecting them.</p>
<p>To understand why Move handles assets differently, you need to understand Sui's object model. To understand the object model, you need to understand why Sui treats blockchain state as owned objects rather than account balances. Each of these explanations exists in the documentation — but the reader must assemble them in the right order independently. The documentation doesn't make the sequence obvious.</p>
<p>Contrast this with the ideal approach: a short, dense conceptual page that explicitly states "Before you write your first Move module, here is the mental model you need to hold." Something that explains, in plain language, that Sui treats assets as independent objects rather than ledger entries, that Move's type system enforces ownership rules at compile time, and that resource safety means you cannot accidentally duplicate or lose data. Three paragraphs. Linked prominently before the first code example.</p>
<p>This page does not exist. Its absence is the documentation's most consequential gap for a developer coming from Ethereum or a general web development background.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-the-documentation-gets-genuinely-right">What the Documentation Gets Genuinely Right<a href="https://ka2in.github.io/guides/open-web-digital-rights/open-web-digital-rights/sui-developer-documentation-review#what-the-documentation-gets-genuinely-right" class="hash-link" aria-label="Direct link to What the Documentation Gets Genuinely Right" title="Direct link to What the Documentation Gets Genuinely Right" translate="no">​</a></h2>
<p><strong>The hover tooltips.</strong> Throughout the documentation, blockchain terminology is surfaced with hover explanations — epoch, checkpoint, and others. This is an elegant solution to the glossary problem. Rather than forcing developers to context-switch to a reference page, terminology explanation arrives inline, at the point of need. It respects the developer's reading flow while acknowledging that not every reader arrives with the same vocabulary. That said, the tooltip coverage is selective — foundational terms like on-chain and off-chain are used throughout the documentation without definition, implying familiarity the documentation cannot assume in every reader.</p>
<p><strong>The fee structure explanation.</strong> Sui's fee model differs from Ethereum's in a non-obvious way: transactions pay for both computation and storage, calculated separately. The documentation doesn't gloss over this. It provides the formula, explains why the distinction matters, and grounds it in a practical takeaway: one test SUI token is enough for extensive development work because both costs are low. This is the kind of honest, concrete explanation that builds developer trust.</p>
<p><strong>The code examples.</strong> The Getting Started code examples are accurate. Developers who follow the "Hello, World!" guide will find that the commands work, the output matches what's described, and the sequence is reproducible. In a documentation ecosystem where outdated or incorrect code examples are endemic, this is worth calling out explicitly.</p>
<p><strong>The Related Topics component.</strong> The automated related links system — a custom React component that extracts and ranks internal links from page content, validates them against quality criteria, and surfaces the top four — is sophisticated and thoughtfully implemented. It scales automatically with content growth and degrades gracefully when metadata is unavailable. Most documentation teams handle related content through manual curation that inevitably falls out of date. Sui's system is technically superior and practically more maintainable.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-slush-wallet-a-prerequisite-that-fails-its-reader">The Slush Wallet: A Prerequisite That Fails Its Reader<a href="https://ka2in.github.io/guides/open-web-digital-rights/open-web-digital-rights/sui-developer-documentation-review#the-slush-wallet-a-prerequisite-that-fails-its-reader" class="hash-link" aria-label="Direct link to The Slush Wallet: A Prerequisite That Fails Its Reader" title="Direct link to The Slush Wallet: A Prerequisite That Fails Its Reader" translate="no">​</a></h2>
<p>The Connect a Frontend guide introduces Slush — a browser-based wallet — as a prerequisite for connecting a React frontend to a published Move package. The prerequisite is listed. What's missing is context.</p>
<p>At this point in the documentation, the developer has a CLI wallet with a configured address and testnet tokens. They've published a Move package. They understand, at least functionally, how the CLI wallet works.</p>
<p>Slush is a different wallet, with a different address, on a different default network — mainnet rather than testnet. The documentation lists "Create a Slush wallet" as a prerequisite step without explaining any of these differences. Slush itself does surface the mismatch when a transaction is attempted — the warning reads: <strong>"This app is running on testnet, but your Slush network is set to mainnet. If you wish to proceed, this transaction will process on testnet."</strong> The message is clear and specific.</p>
<p>The documentation failure is not that the mismatch goes undetected. It's that the developer arrives at that warning without the context to understand it. They haven't been told that Slush defaults to mainnet, that it creates a new address separate from their CLI wallet, or that switching networks in the wallet settings is a required step before proceeding. The warning describes a situation the documentation never prepared them for.</p>
<p>A developer who understands the two-wallet, two-network setup will read the warning and know exactly what to do. A developer following the guide without that context will either dismiss the warning and proceed incorrectly, or stop and search for an explanation that the documentation should have provided before they ever reached this step.
Two mismatches operate simultaneously and silently:</p>
<p>Two mismatches operate simultaneously and silently:</p>
<ul>
<li class="">The Slush wallet has a new address, separate from the CLI wallet address the developer funded with testnet SUI</li>
<li class="">Slush defaults to mainnet, while the published Move package lives on testnet</li>
</ul>
<p>Neither mismatch is surfaced in the documentation until the developer discovers it through failed transactions.</p>
<p>The fix is three sentences:</p>
<blockquote>
<p>"Slush is a browser wallet separate from your CLI wallet. It creates a new address distinct from your CLI address. After installing Slush, switch it from mainnet to testnet in the wallet settings, then fund your new Slush address using the testnet faucet."</p>
</blockquote>
<p>Three sentences prevent the two most common failure modes in this guide. The absence of those sentences represents a documentation gap disproportionate to its cost.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="navigation-coherence-where-the-onboarding-flow-breaks-down">Navigation Coherence: Where the Onboarding Flow Breaks Down<a href="https://ka2in.github.io/guides/open-web-digital-rights/open-web-digital-rights/sui-developer-documentation-review#navigation-coherence-where-the-onboarding-flow-breaks-down" class="hash-link" aria-label="Direct link to Navigation Coherence: Where the Onboarding Flow Breaks Down" title="Direct link to Navigation Coherence: Where the Onboarding Flow Breaks Down" translate="no">​</a></h2>
<p>At the end of the Connect a Frontend guide, developers are directed to "Access Sui Data" in the Develop section. This navigation choice breaks the implicit contract of the Getting Started path.</p>
<p>The getting started section is a coherent onboarding journey with its own established rhythm: install tools, configure environment, deploy a package, connect a frontend. Developers following this path have a reasonable expectation that the "next step" at the end of any guide will continue within that journey — not teleport them to a conceptual development topic they haven't been prepared for.</p>
<p>A "Next Steps" page already exists within the Getting Started section specifically to bridge developers from the hello-world phase into more substantive development. The link at the end of Connect a Frontend should point there, not to a topic in the Develop section that assumes context the developer hasn't yet built.</p>
<p>This is a structural detail, but it matters. The onboarding flow is a communication product. When it breaks unexpectedly, it signals to the developer that the documentation team didn't walk the path end to end. That impression, once formed, is hard to undo.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-architecture-of-the-full-documentation-site">The Architecture of the Full Documentation Site<a href="https://ka2in.github.io/guides/open-web-digital-rights/open-web-digital-rights/sui-developer-documentation-review#the-architecture-of-the-full-documentation-site" class="hash-link" aria-label="Direct link to The Architecture of the Full Documentation Site" title="Direct link to The Architecture of the Full Documentation Site" translate="no">​</a></h2>
<p>Beyond the Getting Started section, the documentation's information architecture reveals a pattern that repeats across the site: the Develop section mixes conceptual content (Sui Architecture, Object Model, Consensus) with procedural guides (Writing Move Packages, Building Transactions, Testing &amp; Debugging) without clearly signalling which category a given page belongs to.</p>
<p>A developer looking for a conceptual explanation of the consensus model will navigate through the same section as a developer looking for step-by-step transaction building instructions. The documentation knows what each page is — the content is correctly written as either conceptual or procedural. The navigation doesn't communicate the distinction.</p>
<p>The practical consequence is that developers either consume content in the wrong order (reading procedural guides before they have the conceptual foundation) or spend time navigating to find what they need (because the category structure is invisible from the navigation).</p>
<p>The recommended restructuring is straightforward:</p>
<ul>
<li class="">Separate Develop into explicit subsections: Concepts, How-to Guides, and Design Patterns</li>
<li class="">Add content-type labels to pages or sections (Conceptual / Procedural / Reference)</li>
<li class="">Add a "Core Concepts for Developers" section between Getting Started and the full Develop section, bridging developers who have completed the hello-world tutorial but aren't ready for architectural deep-dives</li>
</ul>
<p>The Onchain Finance and Node Operators sections have a related problem: they don't indicate their prerequisites. A developer who wants to build a DeFi application on Sui doesn't know whether to start in Develop or jump directly to Onchain Finance, or whether there's a recommended reading order between them. Prerequisite tags and a "Build by Use Case" landing page would resolve this.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-already-published-error-an-undocumented-edge-case">The Already-Published Error: An Undocumented Edge Case<a href="https://ka2in.github.io/guides/open-web-digital-rights/open-web-digital-rights/sui-developer-documentation-review#the-already-published-error-an-undocumented-edge-case" class="hash-link" aria-label="Direct link to The Already-Published Error: An Undocumented Edge Case" title="Direct link to The Already-Published Error: An Undocumented Edge Case" translate="no">​</a></h2>
<p>One specific gap in the Getting Started procedural flow deserves mention. When a developer attempts to republish a Move package they've previously deployed, they encounter:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token plain">Failed to publish the Move module(s), reason: Your package is already published.</span><br></div><div class="token-line" style="color:#F8F8F2"><span class="token plain">You have to manually remove the publication entry to publish again.</span><br></div></code></pre></div></div>
<p>The error message references a "publication entry" without telling the developer where it lives, what it looks like, or how to remove it. The answer is straightforward: open <code>Published.toml</code>, delete the section for the relevant environment, and re-run the publish command. This is a common operation during iterative development — publish, test, modify, republish. Its absence from the documentation is a gap that most developers will hit within the first development session.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-transition-from-interaction-to-transaction-considerations">The Transition from Interaction to Transaction Considerations<a href="https://ka2in.github.io/guides/open-web-digital-rights/open-web-digital-rights/sui-developer-documentation-review#the-transition-from-interaction-to-transaction-considerations" class="hash-link" aria-label="Direct link to The Transition from Interaction to Transaction Considerations" title="Direct link to The Transition from Interaction to Transaction Considerations" translate="no">​</a></h2>
<p>The documentation moves from "Interact with the Move Package" to "Important Transaction Considerations" without explaining why the two topics are adjacent. The relationship is logical — any package interaction requires submitting an on-chain transaction, so understanding transaction constraints is a direct consequence of the interaction section — but the relationship is implicit.</p>
<p>A single transitional sentence would make the connection visible: something that explains that the interactions shown in the previous section execute as transactions, and that the following section covers the constraints and failure modes developers will encounter when those transactions execute. Without it, developers wonder why a discussion of object locking and transaction size limits has appeared in the middle of a getting-started guide.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="recommendations">Recommendations<a href="https://ka2in.github.io/guides/open-web-digital-rights/open-web-digital-rights/sui-developer-documentation-review#recommendations" class="hash-link" aria-label="Direct link to Recommendations" title="Direct link to Recommendations" translate="no">​</a></h2>
<p><strong>1. Fix the <code>sui client</code> CLI documentation immediately.</strong> The actual trigger for the setup prompt is <code>sui client balance</code>, not <code>sui client</code>. This is a first-impression failure that costs significant developer trust. It's a single-line documentation fix.</p>
<p><strong>2. Document the client.yaml parameters inline.</strong> After the CLI setup, developers are left with a configuration file whose fields (alias, rpc, ws, basic_auth, chain_id) are not explained in the documentation. A short parameter reference table — either inline in the configuration guide or linked from it — would close this gap without requiring structural changes.</p>
<p><strong>3. Add an audience declaration to the Getting Started landing page.</strong> One sentence explicitly stating that the section is designed for developers building on Sui. Routes non-developer audiences before they waste time.</p>
<p><strong>4. Create a standalone conceptual page: "The Mental Model You Need Before Writing Move."</strong> Three to four paragraphs explaining the object-centric model, resource safety, and why Move enforces ownership at compile time. Link it prominently before the first code example in the Getting Started flow. This is the highest-impact gap in the current documentation.</p>
<p><strong>5. Expand the Slush wallet prerequisite.</strong> Three sentences explaining the new address, the mainnet default, and the testnet switching and funding workflow. Prevents the two most common failure modes in the Connect a Frontend guide.</p>
<p><strong>6. Fix the "Next Steps" navigation at the end of Connect a Frontend.</strong> Point to the Getting Started "Next Steps" page, not to "Access Sui Data" in the Develop section. Maintains the coherence of the onboarding journey.</p>
<p><strong>7. Document the "Already Published" error resolution.</strong> Add an inline note to the Publishing a Move Package section explaining that <code>Published.toml</code> tracks deployments, and provide the exact steps to clear the entry for republishing.</p>
<p><strong>8. Add a transitional sentence between "Interact with the Move Package" and "Important Transaction Considerations."</strong> Makes the logical connection between the two sections visible rather than leaving the developer to infer it.</p>
<p><strong>9. Restructure the Develop section around explicit content-type categories.</strong> Separate Concepts, How-to Guides, and Design Patterns. Add prerequisite tags to domain-specific sections (Onchain Finance, Node Operators). Consider a "Build by Use Case" landing page that maps common developer goals to required reading paths.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="overall-assessment">Overall Assessment<a href="https://ka2in.github.io/guides/open-web-digital-rights/open-web-digital-rights/sui-developer-documentation-review#overall-assessment" class="hash-link" aria-label="Direct link to Overall Assessment" title="Direct link to Overall Assessment" translate="no">​</a></h2>
<p>The Sui developer documentation is the product of a team that clearly cares about developer experience. The Getting Started section has genuine strengths: clean entry points, accurate code examples, an elegant tooltip system for terminology, a technically sophisticated related links component, and honest, concrete explanations of the fee structure.</p>
<p>The gaps are real, but they are specific and fixable. The most consequential ones cluster around the same underlying problem: the documentation explains what to do without consistently building the conceptual foundation that makes the instructions meaningful. Developers who arrive with blockchain experience will navigate this successfully. Developers coming from web development or no prior blockchain background will hit walls — the CLI trigger mismatch, the Slush wallet context gap, the absence of a coherent Move mental model introduction — that feel larger than their technical complexity warrants.</p>
<p>The documentation's greatest strength — its breadth and comprehensiveness — becomes a weakness when the navigation doesn't help developers find the right content in the right order. A developer who reads all of the Sui documentation will understand Sui deeply. A developer who reads it in the wrong order, or gets stuck at a specific friction point and doesn't know why, may not make it far enough to discover what the documentation does well.</p>
<p>The gap between those two outcomes is not a technology problem. It's a communication architecture problem — and it's solvable.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="about-farowave">About Farowave<a href="https://ka2in.github.io/guides/open-web-digital-rights/open-web-digital-rights/sui-developer-documentation-review#about-farowave" class="hash-link" aria-label="Direct link to About Farowave" title="Direct link to About Farowave" translate="no">​</a></h2>
<p>At Farowave, we work with both Sphinx and Docusaurus across our documentation engagements — from enterprise API reference builds and docs-as-code retainers to localization governance and TMS workflow design. If you're evaluating documentation tooling for your organization, or need help structuring a documentation system that scales, <a href="https://farowave.com/" target="_blank" rel="noopener noreferrer" class="">get in touch</a>.</p>]]></content>
        <author>
            <name>Faycal Alami-Hassani</name>
            <uri>https://github.com/ka2in</uri>
        </author>
        <category label="open-web" term="open-web"/>
        <category label="web3" term="web3"/>
        <category label="documentation-review" term="documentation-review"/>
        <category label="sui" term="sui"/>
        <category label="move" term="move"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Modify The Welcome Text In GNU Social]]></title>
        <id>https://ka2in.github.io/guides/open-web-digital-rights/gnu-social-welcome</id>
        <link href="https://ka2in.github.io/guides/open-web-digital-rights/gnu-social-welcome"/>
        <updated>2026-03-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Besides having some external accounts on federated social networks such as Mastodon, I am also running my own instances on a VPS sever for my digital company.]]></summary>
        <content type="html"><![CDATA[<p>Besides having some external accounts on <a href="https://fediverse.party/en/fediverse/" target="_blank" rel="noopener noreferrer" class="">federated social networks</a> such as Mastodon, I am also running my own instances on a VPS sever for my digital company.</p>
<p>One of these instances is dedicated to GNU Social, a social communication software for public and private communications. GNU Social is an old, but robust platform that supports the protocols OStatus and ActivityPub.</p>
<p><img decoding="async" loading="lazy" alt="Fediverse - Federated Social Networks" src="https://ka2in.github.io/assets/images/fediverse-high-tech-64de1a713b68d9f38c0d73b69028f678.jpg" width="1920" height="1080" class="img_ev3q"><br>
Picture by Eukombos on <a href="https://commons.wikimedia.org/wiki/File:Fediverse-high_tech(denoised)(signed).jpg" target="_blank" rel="noopener noreferrer" class="">Wikimedia Commons</a> under <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en" target="_blank" rel="noopener noreferrer" class="">CC BY-SA 4.0</a> license</p>
<p>GNU Social comes with some default stable themes. However, the look and feel of those themes is very 90's to me. If you want to give your GNU Social instance a brand-new look, you can use something more exciting such as <a href="https://github.com/hannesmannerheim/qvitter" target="_blank" rel="noopener noreferrer" class="">Qvitter</a>.</p>
<p>I am very happy with Qvitter and its intuitive design. Nevertheless, I wanted to customize the initial welcome text that appears on the main page:</p>
<p><code>We are a federation of microbloggers who care about social justice and solidarity and want to quit the centralised capitalist services.</code></p>
<p><img decoding="async" loading="lazy" alt="Initial Welcome Text on GNU Social&amp;#39;s Main Page" src="https://ka2in.github.io/assets/images/original-message-eb3dce2880bff4625d353f906db46d38.png" width="1354" height="577" class="img_ev3q"></p>
<p>To modify the text indicated above, go to your site root directory, then navigate to the folder <code>locale</code> under the following path:</p>
<div class="language-console codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-console codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token plain">$ cd plugins/Qvitter/locale</span><br></div></code></pre></div></div>
<p>Once in the locale folder, open the file <code>en.json</code> with your preferred text editor. In this case, I am using nano:</p>
<div class="language-console codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-console codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#F8F8F2"><span class="token plain">$ sudo nano en.json</span><br></div></code></pre></div></div>
<p>Look for the line that starts with <code>welcomeText</code>, or use the shortcut <code>Ctrl-W</code> in your terminal to search for the text if you are using nano.</p>
<p>Replace with the text you would like to see on your welcome screen, then save and close your file. 😎 The result should look like this:</p>
<p><img decoding="async" loading="lazy" alt="New Welcome Text on GNU Social&amp;#39;s Main Page" src="https://ka2in.github.io/assets/images/new-message-8cc50cb187c6200595211db86e681d4a.png" width="1354" height="577" class="img_ev3q"></p>
<p>If you want to learn more about the fediverse, you can also read my other blog article on the topic: <a href="https://globaltech-translations.com/profil/blog/random-thoughts-about-the-federation-fediverse" target="_blank" rel="noopener noreferrer" class="">Random Thoughts About the Federation/Fediverse</a>.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="about-farowave">About Farowave<a href="https://ka2in.github.io/guides/open-web-digital-rights/gnu-social-welcome#about-farowave" class="hash-link" aria-label="Direct link to About Farowave" title="Direct link to About Farowave" translate="no">​</a></h2>
<p>At Farowave, we work with both Sphinx and Docusaurus across our documentation engagements — from enterprise API reference builds and docs-as-code retainers to localization governance and TMS workflow design. If you're evaluating documentation tooling for your organization, or need help structuring a documentation system that scales, <a href="https://farowave.com/" target="_blank" rel="noopener noreferrer" class="">get in touch</a>.</p>]]></content>
        <author>
            <name>Faycal Alami-Hassani</name>
            <uri>https://github.com/ka2in</uri>
        </author>
        <category label="gnusocial" term="gnusocial"/>
        <category label="fediverse" term="fediverse"/>
        <category label="decentralized networks" term="decentralized networks"/>
        <category label="federated networks" term="federated networks"/>
        <category label="free libre communities" term="free libre communities"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Decentralized Communication: Security, Freedom, and the Future of Social Platforms]]></title>
        <id>https://ka2in.github.io/guides/open-web-digital-rights/decentralized-social-platforms</id>
        <link href="https://ka2in.github.io/guides/open-web-digital-rights/decentralized-social-platforms"/>
        <updated>2025-08-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Across the modern internet, a handful of tech giants have become gatekeepers of digital life. They dictate how we connect, monetize our personal data, and lock us into walled gardens of proprietary services. But there’s a growing movement pushing back—one that’s building a freer, more secure internet from the ground up.]]></summary>
        <content type="html"><![CDATA[<p>Across the modern internet, a few giant corporations have gained outsized influence over how people connect, share, and discover information. These centralized services profit from harvesting personal data while keeping users locked inside controlled ecosystems. Decentralized platforms are the counterweight — systems designed to distribute power, enhance privacy, and put control back into the hands of their communities.</p>
<p><img decoding="async" loading="lazy" alt="My Neighbor Mastodon (and Fediverse)" src="https://ka2in.github.io/assets/images/my_neighbor_mastodon_and_fediverse-cfbad3828cff38f680550abfd7ea1d55.jpg" width="5800" height="3262" class="img_ev3q"><br>
<a href="https://commons.wikimedia.org/w/index.php?curid=152627114" target="_blank" rel="noopener noreferrer" class="">"My Neighbor Mastodon (and Fediverse)"</a> by David Revoy is licensed under <a href="https://creativecommons.org/licenses/by-sa/4.0/?ref=openverse" target="_blank" rel="noopener noreferrer" class="">CC BY-SA 4.0</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-decentralization-strengthens-security">Why Decentralization Strengthens Security<a href="https://ka2in.github.io/guides/open-web-digital-rights/decentralized-social-platforms#why-decentralization-strengthens-security" class="hash-link" aria-label="Direct link to Why Decentralization Strengthens Security" title="Direct link to Why Decentralization Strengthens Security" translate="no">​</a></h2>
<p>A decentralized network is made up of many independently managed servers (often called nodes or instances), linked by open protocols. This structure brings tangible security and privacy advantages:</p>
<ul>
<li class=""><strong>No Single Point of Failure</strong> — In a centralized model, one breach can expose millions. In a decentralized model, an attack on one server doesn’t endanger the whole network.</li>
<li class=""><strong>Ownership of Your Data</strong> — You decide where your information is stored, and who has access to it. This makes bulk surveillance and mass data mining far more difficult.</li>
<li class=""><strong>Resistance to Censorship</strong> — No one entity can shut down the entire system; communities remain online even if one provider disappears.</li>
<li class=""><strong>Custom Security Policies</strong> — Each instance can choose its own encryption methods, moderation standards, and backup strategies.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-the-fediverse">What Is the Fediverse?<a href="https://ka2in.github.io/guides/open-web-digital-rights/decentralized-social-platforms#what-is-the-fediverse" class="hash-link" aria-label="Direct link to What Is the Fediverse?" title="Direct link to What Is the Fediverse?" translate="no">​</a></h2>
<p>The <strong>Fediverse</strong> (federated universe) is a constellation of independently hosted platforms that communicate using open protocols like <strong>ActivityPub</strong>, <strong>OStatus</strong>, and <strong>Diaspora</strong>. It’s not a single app—it’s a network of apps that can talk to each other.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="fediverse-architecture">Fediverse Architecture<a href="https://ka2in.github.io/guides/open-web-digital-rights/decentralized-social-platforms#fediverse-architecture" class="hash-link" aria-label="Direct link to Fediverse Architecture" title="Direct link to Fediverse Architecture" translate="no">​</a></h3>
<ul>
<li class=""><strong>Network Layer</strong>: Protocols like ActivityPub enable semantic communication between servers.</li>
<li class=""><strong>Application Layer</strong>: Platforms like Mastodon, Friendica, and GNU Social provide user interfaces and features.</li>
<li class=""><strong>User Layer</strong>: People interact across apps without needing multiple accounts.</li>
</ul>
<p>Think of it like email: Gmail, Outlook, and Yahoo are different services, but they all speak the same language (SMTP). The Fediverse works similarly.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="three-practical-platforms-to-explore">Three Practical Platforms to Explore<a href="https://ka2in.github.io/guides/open-web-digital-rights/decentralized-social-platforms#three-practical-platforms-to-explore" class="hash-link" aria-label="Direct link to Three Practical Platforms to Explore" title="Direct link to Three Practical Platforms to Explore" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-friendica--the-decentralized-facebook-alternative">1. Friendica — <em>The Decentralized Facebook Alternative</em><a href="https://ka2in.github.io/guides/open-web-digital-rights/decentralized-social-platforms#1-friendica--the-decentralized-facebook-alternative" class="hash-link" aria-label="Direct link to 1-friendica--the-decentralized-facebook-alternative" title="Direct link to 1-friendica--the-decentralized-facebook-alternative" translate="no">​</a></h3>
<p><strong>What it is</strong>: A full-featured social network supporting long-form posts, groups, events, and media sharing.</p>
<p><strong>Security edge</strong>: Bridges multiple protocols (ActivityPub, OStatus, Diaspora), enabling redundant and diverse communication paths. Self-hosting gives you full control over your data.</p>
<p><strong>Best for</strong>: Users seeking a familiar Facebook-style experience without surveillance or ads.</p>
<p><strong>Installation Requirements</strong>:</p>
<ul>
<li class="">Web server: Apache or Nginx</li>
<li class="">PHP: 7.4–8.2 with required extensions</li>
<li class="">Database: MariaDB or MySQL</li>
<li class="">Mail setup: Required for notifications</li>
<li class="">Cron jobs: For background tasks</li>
<li class="">HTTPS: Strongly recommended</li>
</ul>
<p><strong>Setup Time</strong>: 2–4 hours for experienced users</p>
<p><strong>Install Methods</strong>: GitHub clone, Docker, or YunoHost</p>
<p><strong>Official site</strong>: <a href="https://friendi.ca/" target="_blank" rel="noopener noreferrer" class="">https://friendi.ca</a></p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-mastodon--the-decentralized-twitterx-alternative">2. Mastodon — <em>The Decentralized Twitter/X Alternative</em><a href="https://ka2in.github.io/guides/open-web-digital-rights/decentralized-social-platforms#2-mastodon--the-decentralized-twitterx-alternative" class="hash-link" aria-label="Direct link to 2-mastodon--the-decentralized-twitterx-alternative" title="Direct link to 2-mastodon--the-decentralized-twitterx-alternative" translate="no">​</a></h3>
<p><strong>What it is</strong>: A microblogging platform with timelines, hashtags, and boosts (retweets), built on federation.</p>
<p><strong>Security edge</strong>: No central database to target. Admins can enforce strong moderation and security policies.</p>
<p><strong>Best for</strong>: Users who enjoy open conversation streams and community-led moderation.</p>
<p><strong>Installation Requirements</strong>:</p>
<ul>
<li class="">OS: Ubuntu 20.04 or 22.04</li>
<li class="">Languages: Ruby, Node.js</li>
<li class="">Database: PostgreSQL</li>
<li class="">Other: Redis, Sidekiq, Certbot</li>
<li class="">SMTP: Required for email notifications</li>
</ul>
<p><strong>Setup Time</strong>: 3–6 hours depending on experience</p>
<p><strong>Install Methods</strong>: Manual setup or managed hosting (e.g., masto.host)</p>
<p><strong>Official site</strong>: <a href="https://joinmastodon.org/" target="_blank" rel="noopener noreferrer" class="">https://joinmastodon.org</a></p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-gnu-social--the-lightweight-tumblrold-twitter-alternative">3. GNU Social — <em>The Lightweight Tumblr/Old Twitter Alternative</em><a href="https://ka2in.github.io/guides/open-web-digital-rights/decentralized-social-platforms#3-gnu-social--the-lightweight-tumblrold-twitter-alternative" class="hash-link" aria-label="Direct link to 3-gnu-social--the-lightweight-tumblrold-twitter-alternative" title="Direct link to 3-gnu-social--the-lightweight-tumblrold-twitter-alternative" translate="no">​</a></h3>
<p><strong>What it is</strong>: A minimalist microblogging platform with federation support.</p>
<p><strong>Security edge</strong>: Simple codebase makes it easy to audit and harden. Ideal for small, privacy-conscious communities.</p>
<p><strong>Best for</strong>: Users who want low-maintenance tools and tight control.</p>
<p><strong>Installation Requirements</strong>:</p>
<ul>
<li class="">Web server: Apache, Nginx, or Lighttpd</li>
<li class="">PHP: 5.5+ with required extensions</li>
<li class="">Database: MariaDB or MySQL</li>
</ul>
<p><strong>Setup Time</strong>: 1–2 hours for basic setup</p>
<p><strong>Install Methods</strong>: Manual or FTP upload</p>
<p><strong>Official site</strong>: <a href="https://gnusocial.rocks/" target="_blank" rel="noopener noreferrer" class="">https://gnusocial.rocks/</a></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-these-platforms-put-you-in-control">How These Platforms Put You in Control<a href="https://ka2in.github.io/guides/open-web-digital-rights/decentralized-social-platforms#how-these-platforms-put-you-in-control" class="hash-link" aria-label="Direct link to How These Platforms Put You in Control" title="Direct link to How These Platforms Put You in Control" translate="no">​</a></h2>
<ul>
<li class=""><strong>Breaking Free from Monopolies</strong> — No need to accept the terms of a single company or adapt to sudden policy changes.</li>
<li class=""><strong>Privacy by Design</strong> — Choose an instance aligned with your values, or host your own for maximum control.</li>
<li class=""><strong>Interconnection Across Platforms</strong> — Open standards allow you to interact with people on other services without creating multiple accounts.</li>
<li class=""><strong>Community Governance</strong> — Local administrators and members decide the rules and priorities, not corporate boards.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="security-tips-for-using-decentralized-networks">Security Tips for Using Decentralized Networks<a href="https://ka2in.github.io/guides/open-web-digital-rights/decentralized-social-platforms#security-tips-for-using-decentralized-networks" class="hash-link" aria-label="Direct link to Security Tips for Using Decentralized Networks" title="Direct link to Security Tips for Using Decentralized Networks" translate="no">​</a></h2>
<p>Whether joining a public instance or creating your own, consider:</p>
<ul>
<li class="">Enable HTTPS to encrypt your data in transit.</li>
<li class="">Keep all software up to date to fix vulnerabilities promptly.</li>
<li class="">Store only the data you really need, to reduce potential exposure.</li>
<li class="">Make regular backups so your content is never at risk of permanent loss.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="mapping-the-fediverse-to-centralized-counterparts">Mapping the Fediverse to Centralized Counterparts<a href="https://ka2in.github.io/guides/open-web-digital-rights/decentralized-social-platforms#mapping-the-fediverse-to-centralized-counterparts" class="hash-link" aria-label="Direct link to Mapping the Fediverse to Centralized Counterparts" title="Direct link to Mapping the Fediverse to Centralized Counterparts" translate="no">​</a></h2>
<table><thead><tr><th>Fediverse Platform</th><th>Centralized Equivalent</th><th>Key Differences</th></tr></thead><tbody><tr><td>Friendica</td><td>Facebook</td><td>No ads, federated groups, full data control</td></tr><tr><td>Mastodon</td><td>Twitter/X</td><td>No algorithmic feed, community moderation</td></tr><tr><td>GNU Social</td><td>Tumblr / Old Twitter</td><td>Lightweight, minimalistic, open-source</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="security-feature-comparison">Security Feature Comparison<a href="https://ka2in.github.io/guides/open-web-digital-rights/decentralized-social-platforms#security-feature-comparison" class="hash-link" aria-label="Direct link to Security Feature Comparison" title="Direct link to Security Feature Comparison" translate="no">​</a></h2>
<table><thead><tr><th>Feature</th><th>Friendica</th><th>Mastodon</th><th>GNU Social</th></tr></thead><tbody><tr><td>Decentralized / Federated</td><td>ActivityPub, OStatus, Diaspora</td><td>ActivityPub</td><td>OStatus &amp; ActivityPub</td></tr><tr><td>Self-Hosting Possible</td><td>Yes</td><td>Yes</td><td>Yes</td></tr><tr><td>Encryption in Transit</td><td>HTTPS (admin setup)</td><td>HTTPS by default</td><td>HTTPS (admin setup)</td></tr><tr><td>Data Control</td><td>High — strict privacy policies</td><td>High — clear privacy commitments</td><td>High — tight control in small deployments</td></tr><tr><td>User Data Portability</td><td>Export/import supported</td><td>Export/import supported</td><td>Limited portability</td></tr><tr><td>Interoperability</td><td>Excellent — bridges multiple protocols</td><td>Strong — ActivityPub</td><td>Good — OStatus/ActivityPub</td></tr><tr><td>Moderation Flexibility</td><td>Per-instance rules</td><td>Robust block/mute features</td><td>Per-instance rules</td></tr><tr><td>Maturity &amp; Security</td><td>Stable, active dev community</td><td>Mature, large community</td><td>Long-standing, smaller dev base</td></tr><tr><td>Ease of Auditing Code</td><td>Open-source, actively maintained</td><td>Open-source, actively maintained</td><td>Open-source, simple codebase</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="looking-ahead">Looking Ahead<a href="https://ka2in.github.io/guides/open-web-digital-rights/decentralized-social-platforms#looking-ahead" class="hash-link" aria-label="Direct link to Looking Ahead" title="Direct link to Looking Ahead" translate="no">​</a></h2>
<p>Friendica, Mastodon, and GNU Social aren’t just alternatives—they’re blueprints for a freer internet. They foster resilience, encourage innovation, and make mass data exploitation far more difficult. The challenge ahead is scaling these platforms while preserving their core values: openness, autonomy, and community-driven governance.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="final-thought">Final Thought<a href="https://ka2in.github.io/guides/open-web-digital-rights/decentralized-social-platforms#final-thought" class="hash-link" aria-label="Direct link to Final Thought" title="Direct link to Final Thought" translate="no">​</a></h2>
<p>If privacy, control, and digital self-determination matter to you, joining the Fediverse is more than a tech choice—it’s a statement. It’s a step toward reshaping the internet into a space that serves people, not corporations.</p>
<p><strong>Ready to take control? The future is federated.</strong></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="about-farowave">About Farowave<a href="https://ka2in.github.io/guides/open-web-digital-rights/decentralized-social-platforms#about-farowave" class="hash-link" aria-label="Direct link to About Farowave" title="Direct link to About Farowave" translate="no">​</a></h2>
<p>At Farowave, we work with both Sphinx and Docusaurus across our documentation engagements — from enterprise API reference builds and docs-as-code retainers to localization governance and TMS workflow design. If you're evaluating documentation tooling for your organization, or need help structuring a documentation system that scales, <a href="https://farowave.com/" target="_blank" rel="noopener noreferrer" class="">get in touch</a>.</p>]]></content>
        <author>
            <name>Faycal Alami-Hassani</name>
            <uri>https://github.com/ka2in</uri>
        </author>
        <category label="fediverse" term="fediverse"/>
        <category label="decentralization" term="decentralization"/>
        <category label="privacy" term="privacy"/>
        <category label="security" term="security"/>
        <category label="friendica" term="friendica"/>
        <category label="mastodon" term="mastodon"/>
        <category label="gnu-social" term="gnu-social"/>
    </entry>
</feed>