Introduction

Scroll is an internet protocol for file-transfer served over port 5699. It is heavily influenced by the Gemini, Gopher, and Gopher+ protocols.

Scroll builds on Gemini and Gopher by adding some helpful features:

  • Each response includes metadata: author, publish date, modification date.
  • Clients can request documents in their preferred language(s), with a fallback to the server’s default if the requested language(s) are unavailable.
  • Metadata requests provide extra details about documents, like summaries and abstracts.

Core Values

The core values of scroll diverge from both Gemini and Gopher in important ways:

  • Approachability
  • Expressiveness
  • Simplicity, not minimalism
  • Document-centric, not text-centric or page-centric
  • User Autonomy and user control over presentation
  • Stability
  • Privacy
  • Streamable document format(s)

Goals

The Scroll protocol is intended to cultivate a particular Scroll ecosystem, or scrollspace, that is aligned with the following goals:

  • No ads and tracking
  • No scripting on pages (No JS, WASM, Flash, or Java)
  • No insecure markup features like iframes, cookies, user-agents
  • Simplicity for writers and developers
  • User-focused content - the writer provides the content, the user determines most of the styling
  • Offer simpler alternatives to HTML Semantic Markup and Open Graph Tags with a Markdown and AsciiDoc inspired markup language
  • Multi-media that doesn’t interfere with your reading or browsing experience
  • Document-oriented rather than page-oriented
  • Searchable and Indexable

Comparisons to Other Smallnet Protocols

Comparison: gemini:// vs. spartan:// vs. scroll:// vs. nex://

                             gemini       spartan           scroll                nex
                             ------       -------           ------                ---
naming scheme                space        sparta/greece     scrolls & libraries   cityscape & highways
transport                    TCP + TLS    TCP               TCP + TLS             TCP
request structure            full URL     hostname & path   full URL              path
request encoding             utf-8        us-ascii          utf-8                 utf-8
status codes                 18           4                 18                    0
document type                text/gemini  text/gemini       text/scroll           text/plain
input prompt                 1x status    "=:" prompt line  1x status             none

data upload                  limited      yes               limited               no
mimetypes                    yes          yes               yes                   no
virtual hosting              yes          yes               yes                   no
same-site redirects          yes          yes               yes                   no
cross-site redirects         yes          no                yes                   no
proxy requests               yes          no                yes                   no
"lang" response parameter    yes          no                yes                   no
lang request parameter       no           no                yes                   no
response metadata            heuristic    heuristic         yes                   heuristic
abstract/metadata requests   no           no                yes                   no

link relationships           heuristic    heuristic         yes                   heuristic
list nesting                 no           no                yes                   heuristic