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