reiver-smallnet/index.xhtml

469 lines
22 KiB
HTML

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta charset="utf-8" />
<title>Small-Net</title>
</head>
<body>
<main>
<article>
<h1>Small-Net</h1>
<address class="h-card">
by
<a rel="author" class="u-url" href="http://changelog.ca/"><span class="p-given-name">Charles</span> <span class="p-additional-name">Iliya</span> <span class="p-family-name">Krempeaux</span></a>
</address>
<section>
<p>
<strong>Small-Net</strong> is a social-movement born in the late 2010s and early 2020s focused on using &amp; creating technology that serve and to put the needs of individuals first, before everything else
and in particular:
</p>
<ul>
<li>the needs of the individual with respect to his or her active relationship with his or her friends and family, and</li>
<li>the needs of the individual with respect to joining and actively participating in one or more (usually <em>smaller</em>) communities.</li>
</ul>
<p>
"<strong>Small-Net</strong>" is also sometimes written (without the hyphen) as "<strong>smallnet</strong>", and (with "small" written as "smol") as "<strong>smolnet</strong>".
</p>
<p>
Related to <strong>small-net</strong> is "<strong>small-web</strong>", which is also sometimes written (without the hyphen) as "<strong>smallweb</strong>", and (with "small" written as "smol") as "<strong>smolweb</strong>".
"<strong>Small-Web</strong>", in some contexts, can be be considered a sub-set of <strong>small-net</strong>; and in other contexts can be considered more or less synonymous with <strong>small-net</strong>.
</p>
</section>
<section>
<h2>Motivation</h2>
<p>
The <strong>small-net</strong> social-movement (as well as some other social-movements) was born out of a feeling that the modern (2010s and 2020s era) Internet, Web, and social-media are <em>broken</em>.
</p>
<p>
Reasons for feeling that the modern (2010s and 2020s era) Internet, Web, and social-media is broken include the ubiquity of individuals:
</p>
<ul>
<li>getting spied on,</li>
<li>getting tracked,</li>
<li>having their privacy taken away from them,</li>
<li>getting turned into a product, and sold,</li>
<li>getting their online identity taken away from them,</li>
<li>getting censored,</li>
<li>getting manipulated,</li>
<li>getting their source of income taken from them because it suits someone else's interests, and</li>
<li>getting controlled.</li>
</ul>
<p>
In addition to this, other reasons for feeling that the modern (2010s and 2020s era) Internet, Web, and social-media is broken include the ubiquity of and obtrusiveness of:
</p>
<ul>
<li>advertisements,</li>
<li>GDPR cookie consent pop-ups,</li>
<li>join-newsletter pop-ups, and</li>
<li>allow-notification pop-ups.</li>
</ul>
<p>
<strong>Small-Net</strong> is partially an attempt to fix these things by using and even creating alternatives to the modern (2010s and 2020s era) Internet, Web, and social-media.
</p>
</section>
<section>
<h2>Vintage Protocols</h2>
<p>
<strong>Small-Net</strong> enthusiasts are sometimes attracted to <em>vintage</em> computer networks protocols.
The <em>vintage</em> computer network protocols that tend to get a lot of attention from <strong>small-net</strong> enthusiasts include:
</p>
<ul>
<li>the <strong>finger</strong> protocol,</li>
<li>the <strong>gopher</strong> protocol, and</li>
<li>the <strong>telnet</strong> protocol.</li>
</ul>
<p>
With the <strong>gopher</strong> computer network protocol probably being the most popular of the three among <strong>small-net</strong> enthusiasts.
</p>
<p>
Some other <em>vintage</em> computer network protocols that also sometimes get attention from <strong>small-net</strong> enthusiasts include:
</p>
<ul>
<li>the <strong>active users protocol</strong> (IETF RFC-866),</li>
<li>the <strong>character generator protocol</strong> (<abbr title="character generator">CHARGEN</abbr>) (IETF RFC-864),</li>
<li>the <strong>daytime protocol</strong> (IETF RFC-867),</li>
<li>the <strong>discard protocol</strong> (IETF RFC-863),</li>
<li>the <strong>echo protocol</strong> (IETF RFC-862),</li>
<li>the <strong>network news transfer protocol</strong> (<abbr title="network news transfer protocol">NNTP</abbr>) (IETF RFC-977, RFC-1036, RFC-2980, RFC-3977, RFC-4642),</li>
<li>the <strong>post office protocol</strong> (<abbr title="post office protocol">POP</abbr>),</li>
<li>the <strong>quote of the day protocol</strong> (IETF RFC-865),</li>
<li>the <strong>simple mail transfer protocol</strong> (<abbr title="simple mail transfer protocol">SMTP</abbr>),</li>
<li>the <strong>time protocol</strong> (IETF RFC-868), and</li>
<li>the <strong>UUCP</strong> protocol.</li>
</ul>
</section>
<section>
<h2>Vintage Data Formats</h2>
<p>
Some <em>vintage</em> file data formats have also attracted the attention of <strong>small-net</strong> enthusiasts; namely:
</p>
<ul>
<li>the <strong>ANSI</strong> text format,</li>
<li>the <strong>ASCII</strong> text format,</li>
<li>the <strong>Code Page 437</strong> (<abbr title="code page 437">CP437</abbr>) text format,</li>
<li>the <strong>Mattel Aquarius</strong> text format,</li>
<li>the <strong>PETSCII</strong> text format,</li>
<li>the <strong>Teletext</strong> text format,</li>
<li>the <strong>TRS-80</strong> text format,</li>
<li>the <strong>Videotex</strong> text format,</li>
<li>the <strong>XSL</strong> style format,</li>
<li>the <strong>XSLT</strong> style format,</li>
<li>the <strong>XHTML</strong> document format,</li>
<li>the <strong>XML</strong> data format,</li>
<li>the <strong>ZX80</strong> text format, and</li>
<li>the <strong>ZX81</strong> text format.</li>
</ul>
</section>
<section>
<h2>"Modernization"</h2>
<p>
Although many <strong>small-net</strong> enthusiasts are attracted to <em>vintage</em> protocols, some have found those <em>vintage</em> protocols difficult to work with and lacking features they feel as important.
</p>
<p>
A reaction to this is that there have been attempts to create "modernized" versions of these <em>vintage</em> protocols, while trying to avoid the mistakes of the modern (2010s and 2020s era) Internet, Web, and social-media.
</p>
<p>
"Modernization" can include:
</p>
<ul>
<li>including support for Unicode <abbr title="Unicode Transformation Format — 8-bit">UTF-8</abbr>,</li>
<li>including support for <abbr title="Uniform Resource Locator">URL</abbr>s and <abbr title="Uniform Resource Identifier">URI</abbr>s,</li>
<li>including support for hypertext,</li>
<li>including support for rich-text, and</li>
<li>including support for media.</li>
</ul>
</section>
<section>
<h2>Retro Protocols</h2>
<p>
Some <em>retro</em> protocols — that are attempts to "modernize" specific <em>vintage</em> protocols — that have come out of the <strong>small-net</strong> communities include:
</p>
<ul>
<li>the <strong>gemini</strong> protocol,</li>
<li>the <strong>mercury</strong> protocol,</li>
<li>the <strong>nex</strong> protocol, and</li>
<li>the <strong>spartan</strong> protocol.</li>
</ul>
<p>
With —
</p>
<ul>
<li>the <strong>gemini</strong> protocol being an attempt to "moderize" the <strong>gopher</strong> protocol, while not enabling the same mistakes of the Web,</li>
<li>the <strong>mercury</strong> protocol more or less being the <strong>gemini</strong> protocol without TLS encryption,</li>
<li>the <strong>spartan</strong> protocol being an alternative to the <strong>gemini</strong> protocol that does less "modernizations", and</li>
<li>the <strong>nex</strong> protocol being an attempt to be even simpler than and even fixing some aspects of the <strong>gemini</strong> protocol.</li>
</ul>
</section>
<section>
<h2>Retro Data Formats</h2>
<p>
Some other <em>retro</em> file data formats — that are attempts to "modernize" specific <em>vintage</em> file data formats — that either have come out of the <strong>small-net</strong> communities or have drawn the attention of people in the <strong>small-net</strong> communities include:
</p>
<ul>
<li>the <strong>gemtext</strong> format,</li>
<li>the <strong>json feed</strong> format,</li>
<li>the <strong>markdown</strong> format,</li>
<li>the <strong>nex directory</strong> format, and</li>
<li>the <strong>twtxt</strong> format.</li>
</ul>
</section>
<section>
<h2>Other Protocols and Formats</h2>
<p>
Although <em>not</em> generally considered part of <strong>small-net</strong>, these protocols and file data formats are also often of interest to <strong>small-net</strong> enthusiasts:
</p>
<ul>
<li>acct-URI,</li>
<li>hash-URI,</li>
<li>magnet-URI,</li>
<li>the <strong>ActivityPub</strong> protocol,</li>
<li>the <strong>ActivityStream</strong> protocol,</li>
<li>the <strong>at-protocol</strong>,</li>
<li>the <strong>BitTorrent</strong> protocol,</li>
<li>the <strong>kademlia</strong> protocol,</li>
<li>the <strong>gnutella</strong> protocol,</li>
<li>the <strong>node to node copy</strong> protocol (NNCP),</li>
<li>the <strong>nostr</strong> protocol,</li>
<li>the <strong>secure scuttlebutt</strong> protocol, and</li>
<li>the <strong>WebFinger</strong> protocol.</li>
</ul>
</section>
<section>
<h2>Small-Net Goals</h2>
<p>
There are a loose collection of <em>goals</em> that seem to be commonly desired by <strong>small-net</strong> enthusiasts.
These goals in part explain why certain protocols and file data formats are of interest.
</p>
<p>
Not all <strong>small-net</strong> enthusiasts desire all of these <em>goals</em>.
And some of these <em>goals</em> are even in conflict with each other.
</p>
<p>
But one does not have to satisfy all of these <em>goals</em> in the same protocol.
</p>
<p>
And also, noting all these different <em>goals</em> is important to understanding the <strong>small-net</strong> social-movement, even if some are in conflict.
</p>
<p>
These <em>goals</em> seem to be (in alphabetical order based on category, and <em>not</em> in order of popularity):
</p>
<section>
<h3>Alternative</h3>
<ul>
<li>be an alterative platform for cross-platform application development,</li>
<li>be an alterative platform for static files (rather than applications),</li>
<li>be an alterative to BBS,</li>
<li>be an alterative to the e-mail protocols,</li>
<li>be an alterative to the finger protocol,</li>
<li>be an alterative to the gopher protocol,</li>
<li>be an alterative to big social-media,</li>
<li>be an alterative to the telnet protocol,</li>
<li>be an alterative to the modern Web,</li>
</ul>
</section>
<section>
<h3>Archivism</h3>
<ul>
<li>be accommodating to servers with intermittent up-time,</li>
<li>(also) be available via non-Internet means in a seamless way,</li>
<li>be aware of archives,</li>
<li>be aware of mirrors,</li>
<li>be easy to archive,</li>
<li>be easy to mirror,</li>
<li>be off-line first,</li>
<li>be resistant to censorship,</li>
<li>be resistant to Internet domain-name expiration,</li>
<li>be resistant to Internet domain-name seizure,</li>
<li>be resistant to link-rot,</li>
<li>be resistant to server seizure,</li>
<li>be resistant to server termination,</li>
<li>be resistant to software-rot,</li>
<li>be servable from the most common computers — mobile phones, tablets, and laptops,</li>
<li>encourage archiving,</li>
<li>encourage mirroring,</li>
<li>include support for a single complete download of "everything",</li>
<li>include support for downloading just the "latest" updates,</li>
<li>make archiving automatic,</li>
<li>make mirroring automatic,</li>
<li>make it so a 'response' can be a full resource for a single request (ex: don't have to go download extra images, pages, CSS, JS, etc),</li>
<li>support a single download of many files,</li>
<li>support a an archival download of many files,</li>
</ul>
</section>
<section>
<h3>Better</h3>
<ul>
<li>be faster,</li>
<li>be more private,</li>
<li>be more secure,</li>
<li>support 'directories' (of files),</li>
<li>support machine-legible semantics,</li>
<li>support 'partials',</li>
<li>support parameterized 'partials',</li>
<li>support 'slots',</li>
<li>support the separation of content from navigation/UI,</li>
</ul>
</section>
<section>
<h3>Fix</h3>
<ul>
<li>be a "fixed" version of the e-mail protocols,</li>
<li>be a "fixed" version of the gopher protocol,</li>
<li>be a "fixed" version of the gemini protocol,</li>
<li>fix identity,</li>
<li>be a "fixed" version of the NNTP protocol,</li>
<li>fix payments,</li>
<li>fix the Internet,</li>
<li>be a "fixed" version of social-media,</li>
<li>be a "fixed" version of the Web,</li>
<li>be a "fixed" version of Usenet,</li>
</ul>
</section>
<section>
<h3>Legibility</h3>
<ul>
<li>the protocol should be programmer-legible,</li>
<li>the protocol should be simple enough for a competent software developer of 3 to 10 years of experience to be able to create a (simple) working <em>client</em> as a weekend project,</li>
<li>the protocol should be simple enough for a competent software developer of 3 to 10 years of experience to be able to create a (simple) working <em>server</em> as a weekend project,</li>
<li>the protocol should be simple enough for a competent software developer of 3 to 10 years of experience to successively add advanced features to their <em>client</em> as a series a weekend projects,</li>
<li>the protocol should be simple enough for a competent software developer of 3 to 10 years of experience to successively add advanced features to their <em>server</em> as a series a weekend projects,</li>
<li>the default file data format to be easy enough to parse for a software developer of 3 to 10 years of experience,</li>
<li>the default file data format should be human-legible — i.e., legible by humans who aren't programmers,</li>
<li>the default file data format to be writable by the average computer-literate (non-programmer) person using just a text-editor (for some definition of "text),</li>
</ul>
</section>
<section>
<h3>Lifeboat</h3>
<ul>
<li>be a viable lifeboat for evacuees from big social-media,</li>
<li>be a viable lifeboat for evacuees from the Web,</li>
<li>be a viable lifeboat for micro-blogging,</li>
</ul>
</section>
<section>
<h3>Modernizations</h3>
<ul>
<li>be a "modernized" version of BBS protocol (for some definition of "modernized"),</li>
<li>be a "modernized" version of the finger protocol (for some definition of "modernized"),</li>
<li>be a "modernized" version of the gopher protocol (for some definition of "modernized"),</li>
<li>be a "modernized" version of the telnet protocol (for some definition of "modernized"),</li>
<li>include support for content-addressing,</li>
<li>include support for hypertext,</li>
<li>include support for media (audio, images, video, etc),</li>
<li>include support for rich-text,</li>
<li>include support for Unicode <abbr title="Unicode Transformation Format — 8-bit">UTF-8</abbr>,</li>
<li>include support for <abbr title="Uniform Resource Locator">URL</abbr>s and <abbr title="Uniform Resource Identifier">URI</abbr>s,</li>
</ul>
</section>
<section>
<h3>Nostalgia</h3>
<ul>
<li>be nostalgic to those who were on-line (on the Internet, BBS, or elsewhere) in the 2000s</li>
<li>be nostalgic to those who were on-line (on the Internet, BBS, or elsewhere) in the 1990s</li>
<li>be nostalgic to those who were on-line (on the Internet, BBS, or elsewhere) in the 1980s</li>
<li>be nostalgic to those who were on-line (on the Internet, BBS, or elsewhere) in the 1970s</li>
</ul>
</section>
<section>
<h3>Revive</h3>
<ul>
<li>revive ASCII-art,</li>
<li>revive ANSI-art,</li>
<li>revive blogging,</li>
<li>revive the blogosphere,</li>
<li>revive blogrolls,</li>
<li>revive link directories,</li>
<li>revive long-form writing,</li>
<li>revive personal home-pages,</li>
<li>revive personal wikis,</li>
<li>revive self-contained sites,</li>
<li>revive something like the (pre-JavaScript pre-CSS) Web of the 1990s,</li>
<li>revive 'surfing' — going from page to page or site to site via one page or site linking to another page or site,</li>
<li>revive vlogging,</li>
<li>revive web-rings,</li>
</ul>
</section>
<section>
<h3>Perma-Computing</h3>
<ul>
<li>be resistant to software-rot,</li>
<li>support programming,</li>
<li>support setting pixels,</li>
<li>support Unix/Linux style piping,</li>
</ul>
</section>
<section>
<h3>Privacy</h3>
<ul>
<li>support anonymous usage,</li>
<li>support pseudononymous usage,</li>
<li>make spying (that feels ubiquitous on the Web) difficult if not impossible,</li>
<li>make tracking (that feels ubiquitous on the Web) difficult if not impossible,</li>
<li>prevent spying on what 'pages' you view or read,</li>
<li>prevent spying on what 'sites' you access content from (ex: being able to tell what Internet domain-names you resolve),</li>
<li>prevent web-bugs,</li>
</ul>
</section>
<section>
<h3>Take-Over Resistance</h3>
<ul>
<li>be decentralized,</li>
<li>be difficult to embrace-extend-extinguish (<abbr title="embrace-extend-extinguish">EEE</abbr>),</li>
<li>be distributed,</li>
<li>don't make Internet domain-names mandatory,</li>
<li>encourage multiple client software implementations,</li>
<li>encourage multiple server software implementations,</li>
<li>encourage a large number of client software implementations,</li>
<li>encourage a large number of server software implementations,</li>
<li>make creating <em>client</em> software a good learning exercise for students,</li>
<li>make creating <em>server</em> software a good learning exercise for students,</li>
<li>make creating your own <em>client</em> software easy to do for a a competent software developer of 3 to 10 years of experience,</li>
<li>make creating your own <em>server</em> software easy to do for a a competent software developer of 3 to 10 years of experience,</li>
<li>try to make it so multiple client software exists and new client software keeps on getting created, so that a malicious party doesn't have a single point of attack (i.e., a single client) that if they compromise to compromise users' privacy,</li>
</ul>
</section>
<section>
<h3>Trust</h3>
<ul>
<li>avoid certificate authorities,</li>
<li>prevent or make 3rd-party content-modification detectable if not very difficult,</li>
<li>prevent or make man-in-the-middle (<abbr title="man-in-the-middle">MITM</abbr>) attacks very difficult,</li>
<li>prevent someone else from adding to your trusted keys,</li>
<li>prevent someone else deciding what your trusted keys are,</li>
<li>prevent someone else from replacing one or more of your trusted keys,</li>
</ul>
</section>
<section>
<h3>Unobtrusiveness</h3>
<ul>
<li>prevent or make unwelcomed advertisements very difficult,</li>
<li>prevent pop-ups,</li>
</ul>
</section>
<section>
<h3>User-Experience</h3>
<ul>
<li>get rid of the need for passwords,</li>
<li>be able to (also) be viewed from a computer-terminal-emulator,</li>
<li>be able to (also) be viewed and used without (necessarily) needing a mouse,</li>
<li>have the default file data format be easy enough that an average person could learn to write it using just a text-editor (for some definition of “text”).</li>
</ul>
</section>
</section>
<section>
<h2>Debates</h2>
<p>
There are several debates within the <strong>small-net</strong> communities:
</p>
<section>
<h3>Encryption</h3>
<ul>
<li>should encryption of communications be mandatory</li>
<li>should encryption of communications be optional</li>
<li>should encryption of communications be prohibited</li>
</ul>
</section>
<section>
<h3>Media</h3>
<ul>
<li>should it be text only (for some definition of "text")</li>
<li>should audio be supported</li>
<li>should embedded audio be supported</li>
<li>should images be supported</li>
<li>should embedded images be supported</li>
<li>should video be supported</li>
<li>should embedded videos be supported</li>
</ul>
</section>
<section>
<h3>Old Computers</h3>
<ul>
<li>should the default "text" format of a small-net protocol only support the features that the vintage VT05 computer-terminal had — i.e., no blinking, no bolding, no underlining, no reverse text, but also <strong>no lower-case letters</strong></li>
<li>should the default "text" format of a small-net protocol only support the features of the ASCII data format</li>
<li>should the default "text" format of a small-net protocol only support the features that are renderable on most of the popular modern computer-terminal-emulators</li>
<li>should we embrace the "best" of old computers without being restricted by (all) their limitations</li>
</ul>
</section>
<section>
<h3>Rich Formatting</h3>
<ul>
<li>is 'bolding' a type of punctuation or styling</li>
<li>is 'italicizing' a type of punctuation or styling</li>
<li>is 'underlining' a type of punctuation or styling</li>
</ul>
</section>
<section>
<h3>The Web</h3>
<ul>
<li>should a small-net protocol be intentionally incompatible with the Web — except maybe over bridge-proxies</li>
<li>should a small-net protocol be at least minimally compatible with the Web — to make it so people have a "gentle" path to using any small-net</li>
<li>should a small-net HTML make use of Web-components</li>
</ul>
</section>
</section>
</article>
</main>
</body>
</html>