merge-requests/30/head
Bob Mottram 2023-01-20 16:59:32 +00:00
commit 2fd6c4857c
14 changed files with 359 additions and 281 deletions

View File

@ -1,8 +1,6 @@
<blockquote><b>Epicyon</b>, meaning <i>"more than a dog"</i>. Largest of the <i>Borophaginae</i> which lived in North America 20-5 million years ago.</blockquote>
<img src="https://libreserver.org/epicyon/img/screenshot_rc3.jpg" width="80%"/>
<img src="https://libreserver.org/epicyon/img/mobile.jpg" width="30%"/>
<img src="https://libreserver.org/epicyon/img/screenshot-timeline.webp" width="80%"/>
Epicyon is a [fediverse](https://en.wikipedia.org/wiki/Fediverse) server suitable for self-hosting a small number of accounts on low power systems.

File diff suppressed because one or more lines are too long

View File

@ -107,6 +107,16 @@ a:focus {
border: 2px solid var(--focus-color);
}
.emoji {
float: none;
width: 50px;
margin-left: 0px;
margin-right: 0px;
padding-right: 0px;
border-radius: 0px;
vertical-align: middle;
}
.transparent {
color: transparent;
background: transparent;

View File

@ -41,7 +41,7 @@ Emojis, hashtags, photos, video and audio attachments, instance and account leve
## Community not Audience
Corporate social media gives you an audience, with reach, celebrity, spectacle, lack of control, professional influencers, anxiety, alienation and competition. It's designed for fast growth regardless of social consequences. Epicyon is designed for community, in which you have voice, agency, discussions and comradery. The community approach is the better way to build a habitable internet for the long term.
Corporate social media gives you an audience, with reach, celebrity, spectacle, lack of control, professional influencers, anxiety, alienation and competition. It's designed for fast growth regardless of social consequences, often where the contents of your feed or timeline is rigged rather than having anything to do with what you are interested in. Epicyon is designed for community, in which you have more control over who you're associating with. The community approach is the better way to build a habitable internet for the long term.
=> https://libreserver.org/epicyon/epicyon.tar.gz Download
=> https://libreserver.org/epicyon/#install Install

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

View File

@ -1051,6 +1051,26 @@ alt="Inbox viewed within a shell browser" />
<figcaption aria-hidden="true">Inbox viewed within a shell
browser</figcaption>
</figure>
<h1 id="content-licenses">Content licenses</h1>
<p>ActivityPub posts are really just content on a website and so are
subject to copyright rules. Historically, the copyright status of posts
was always left as ambiguous but in Epicyon for the avoidance of
disputes it is made explicit. Setting the scope of a post, such as being
to followers only, is not sufficient to indicate how that post is
intended to be used.</p>
<p>Content licensing is at the instance level, and set by the
administrator. Log in as the administrator and then go to <em>instance
settings</em>. From there you can set the content license, which should
be the URL for the full license text.</p>
<p>When subsequently creating posts a small copyright icon will appear,
which then links back to the license.</p>
<p>The choice of content license is for the instance administrator to
decide, but it is recommended that <a
href="https://creativecommons.org/licenses/by-nc/4.0/legalcode">non-commercial
creative commons licenses</a> may be enough to deter some of the worst
abuses of <a
href="https://en.wikipedia.org/wiki/Personal_data">personally
identifiable information</a> by BigTech companies.</p>
<h1 id="building-fediverse-communities">Building fediverse
communities</h1>
<p>The great thing about running a small instance is that you can do

View File

@ -28,7 +28,7 @@
*The fediverse* is a set of federated servers, typically using a communication protocol called [ActivityPub](https://www.w3.org/TR/activitypub) which was devised by the [social working group](https://www.w3.org/wiki/Socialwg) within the World Wide Web Consortium (W3C). At present it is mostly used for [microblogging](https://en.wikipedia.org/wiki/Microblogging), although ActivityPub is sufficiently general that it can also be used for a variety of other purposes.
The word *fediverse* (federated universe) appears to have originated around 2012 as the first [identi.ca](https://en.wikipedia.org/wiki/Identi.ca) website was ending and the [pump.io](https://en.wikipedia.org/wiki/Pump.io) project was beginning. The ActivityPub protocol was initially called *ActivityPump*, due to the influence which pump.io had upon its creation. Fediverse servers are typically referred to as "instances", but they are really just websites which can speak with each other using the vocabulary of ActivityPub. Choosing an instance is the same as choosing a website that you trust to handle your data.
The word *fediverse* (federated universe) appears to have originated around 2012 as the first [identi.ca](https://en.wikipedia.org/wiki/Identi.ca) website was ending and the [pump.io](https://en.wikipedia.org/wiki/Pump.io) project was beginning. The ActivityPub protocol was initially called *ActivityPump*, due to the influence which pump.io had upon its creation. Fediverse servers are typically referred to as "instances", but they are really just websites which can speak with each other using the vocabulary of ActivityPub. Choosing an instance is the same as choosing a website that you trust to handle your data. This is *the social web*.
Servers such as [Mastodon](https://github.com/mastodon/mastodon) are well known, but these are aimed at large scale deployments on powerful hardware running within data centers, making use of content distribution networks (CDN) and due to their large number of dependencies requiring someone with a high level of systems administration skill to maintain. Epicyon is designed for the opposite situation where it is only intended to have a single user or a small number of users (less than ten) running from your home location or on a modest VPS and where maintenance is extremely trivial such that it's possible to keep an instance running for long durations with minimal intervention.
@ -749,6 +749,16 @@ Timelines will look something like the following.
![Inbox viewed within a shell browser](manual-lynx-inbox.png)
# Content licenses
ActivityPub posts are really just content on a website and so are subject to copyright rules. Historically, the copyright status of posts was always left as ambiguous but in Epicyon for the avoidance of disputes it is made explicit. Setting the scope of a post, such as being to followers only, is not sufficient to indicate how that post is intended to be used.
Content licensing is at the instance level, and set by the administrator. Log in as the administrator and then go to *instance settings*. From there you can set the content license, which should be the URL for the full license text.
When subsequently creating posts a small copyright icon will appear, which then links back to the license.
The choice of content license is for the instance administrator to decide, but it is recommended that [non-commercial creative commons licenses](https://creativecommons.org/licenses/by-nc/4.0/legalcode) may be enough to deter some of the worst abuses of [personally identifiable information](https://en.wikipedia.org/wiki/Personal_data) by BigTech companies.
# Building fediverse communities
The great thing about running a small instance is that you can do things in whatever manner you prefer. What follows is a few guidelines which may help.

View File

@ -530,11 +530,12 @@ def _get_posts(session, outbox_url: str, max_posts: int,
session, outbox_url, as_header,
project_version, http_prefix,
origin_domain, debug)
for item in user_feed:
result.append(item)
i += 1
if i == max_posts:
break
if user_feed:
for item in user_feed:
result.append(item)
i += 1
if i == max_posts:
break
pprint(result)
return None
@ -747,6 +748,9 @@ def get_post_domains(session, outbox_url: str, max_posts: int, debug: bool,
user_feed = parse_user_feed(signing_priv_key_pem,
session, outbox_url, as_header,
project_version, http_prefix, domain, debug)
if not user_feed:
return post_domains
for item in user_feed:
i += 1
if i > max_posts:
@ -810,6 +814,9 @@ def _get_posts_for_blocked_domains(base_dir: str,
user_feed = parse_user_feed(signing_priv_key_pem,
session, outbox_url, as_header,
project_version, http_prefix, domain, debug)
if not user_feed:
return blocked_posts
for item in user_feed:
i += 1
if i > max_posts:

View File

@ -784,8 +784,11 @@ def download_image_any_mime_type(session, url: str,
mime_type = None
content_type = None
result = None
image_mime_types = \
'image/x-icon, image/png, image/webp, image/jpeg, image/gif, ' + \
'image/avif, image/heic, image/jxl, image/svg+xml'
session_headers = {
'Accept': 'image/x-icon, image/png, image/webp, image/jpeg, image/gif'
'Accept': image_mime_types
}
try:
result = session.get(url, headers=session_headers,

View File

@ -1248,7 +1248,7 @@ Ever feel like corporate social media is deliberately pressing your buttons or g
<p class="siteheader">Community not Audience</p>
<p class="intro">
Corporate social media gives you an audience, with reach, celebrity, spectacle, lack of control, professional influencers, anxiety, alienation and competition. It's designed for fast growth regardless of social consequences. Epicyon is designed for community, in which you have voice, agency, discussions and comradery. The community approach is the better way to build a habitable internet for the long term.
Corporate social media gives you an audience, with reach, celebrity, spectacle, lack of control, professional influencers, anxiety, alienation and competition. It's designed for fast growth regardless of social consequences, often where the contents of your feed or timeline <a href="https://www.forbes.com/sites/emilybaker-white/2023/01/20/tiktoks-secret-heating-button-can-make-anyone-go-viral">is rigged</a> rather than having anything to do with what you are interested in. Epicyon is designed for community, in which you have more control over who you're associating with. The community approach is the better way to build a habitable internet for the long term.
</p>
<p class="siteheader">Message Scopes</p>

View File

@ -41,6 +41,8 @@
--font-size: 30px;
--text-entry-foreground: #ccc;
--text-entry-background: #111;
--quote-font-weight: normal;
--quote-font-size: 120%;
}
body, html {
@ -69,6 +71,17 @@
font-weight: bold;
}
blockquote {
border-left: 10px;
margin: 1.5em 10px;
padding: 0.5em 10px;
font-weight: var(--quote-font-weight);
font-style: italic;
font-size: var(--quote-font-size);
quotes: "\201C""\201D""\2018""\2019";
color: lightblue;
}
.cwButton {
border-radius: 4px;
background-color: #999;
@ -1189,35 +1202,46 @@
<p class="subheader">Feb 2023</p>
</center>
<p class="intro">The last year in the fediverse has been quite eventful, with a massive tidal wave of new users <a href="https://en.wikipedia.org/wiki/Acquisition_of_Twitter_by_Elon_Musk">fleeing the sinking ship of Twitter</a>. But so far as <a href="https://libreserver.org/epicyon">Epicyon</a> has been concerned it has been calm sailing. There have been no major features added over the last year, but as always there have been many small improvements and bug fixes. These include:</p>
<ul>
<li>Theme and theme designer improvements</li>
<li>A <i>buy button</i> for when you want to link to something that you're selling</li>
<li>General security improvements</li>
<li>Conversation view, avoiding direct links to the Mastodon user interface</li>
<li>Progressive Web App improvements</li>
<li>Quote Toot suppression</li>
<li>Copyright notices added to individual posts</li>
<li>Improved display of remote hashtags</li>
<li>Support for auto-linking scientific paper references</li>
<li>Edit button</li>
<li>Improved calendar events</li>
<li>Added a user manual</li>
<li>Hashtag maps for crowdsourced geolocations</li>
<li>Option to expire old posts</li>
<li>Better emoji support</li>
<li>Unicode fonts no longer bypass filters</li>
<li>vCard support</li>
<li>Improved podcast support</li>
<li>Additional language support: Korean, Turkish, Bengali, Dutch, Ukranian, Swahili, Persian and Greek</li>
<li><b>Bo</b>ld <b>Read</b>ing <b>accessi</b>bility <b>feat</b>ure</li>
<li>Improved compatibility with shell browsers</li>
<li>Additional format fupport: <a href="https://en.wikipedia.org/wiki/Opus_(audio_format)">opus</a></li>
<li>Improved account level control over display of images</li>
<li>Can set the language when creating a new post, for multilingual users</li>
<li>Improved support for Questions/Votes</li>
</ul>
<table>
<tr>
<td>
<ul>
<li>Theme and theme designer improvements</li>
<li>A <i>buy button</i> for when you want to link to something that you're selling</li>
<li>General security improvements</li>
<li>Conversation view, avoiding direct links to the Mastodon user interface</li>
<li>Progressive Web App improvements</li>
<li>Quote Toot suppression</li>
<li>Copyright notices added to individual posts</li>
<li>Improved display of remote hashtags</li>
<li>Support for auto-linking scientific paper references</li>
<li>Edit button</li>
<li>Improved calendar events</li>
<li>Added a <a href="https://gitlab.com/bashrc2/epicyon/-/blob/main/manual/manual.md">user manual</a></li>
<li>Hashtag maps for crowdsourced geolocations</li>
<li>Option to expire old posts</li>
<li>Better emoji support</li>
<li>Included an updated version of the <a href="https://gitlab.com/bashrc2/epicyon/-/blob/main/specification/activitypub.md">ActivityPub specification</a></li>
<li>Unicode fonts no longer bypass filters</li>
<li>vCard support</li>
<li>Improved podcast support</li>
<li>Additional language support: Korean, Turkish, Bengali, Dutch, Ukranian, Swahili, Persian and Greek</li>
<li><b>Bo</b>ld <b>Read</b>ing <b>accessi</b>bility <b>feat</b>ure</li>
<li>Improved compatibility with shell browsers</li>
<li>Additional format fupport: <a href="https://en.wikipedia.org/wiki/Opus_(audio_format)">opus</a></li>
<li>Improved account level control over display of images</li>
<li>Can set the language when creating a new post, for multilingual users</li>
<li>Improved support for Questions/Votes</li>
</ul>
</td>
<td>
<img src="v1_4_0.webp" alt="Epicyon logo of a running dog with paw prints in the background" />
</td>
</tr>
</table>
<p class="intro">The present time is an interesting juncture in the history of the web. Either the <a href="https://www.w3.org/TR/social-web-protocols">social web</a> approach succeeds and ActivityPub and related protocols become widely supported, or perhaps some trendy new centralized microblog emerges and the social web falls dormant for another decade. The former seems more likely, but the path of technology is notoriously hard to predict because it depends upon so many factors, and companies are always trying to enclose and extract value from the digital commons in a non-reciprocating way. Another possible danger is that the largest fediverse instances might commercialize and combine to create a new monopolistic silo system, and then abandon support for open protocols following the familiar <i>bait and switch</i> method.</p>
<p class="intro">So it's really down to us to keep things small and decentralized. To scale out rather than up.</p>
<blockquote>"many e-citizens woke up their consciousnesses, becoming aware of what a centralized system used for the most popular applications (generally social network platforms) entails...Probably, those e-citizens moved to the fediverse, becoming fedizens." -- <a href="https://www.assodpo.it/2022/07/21/The-Fediverse-what-is-it-and-how-does-it-work">LAssociazione data Protection Officer</a></blockquote>
<p class="intro">So it's really down to us to keep things small and decentralized. To be the "fedizens" orgainzing from below, and scaling out rather than up.</p>
<p class="intro">Epicyon can be downloaded as <a href="epicyon.tar.gz">a gzipped file</a>, or you can get the latest version from the <a href="https://gitlab.com/bashrc2/epicyon">git repo</a>. For installation instructions see <a href="index.html">the main page</a>. To upgrade an existing instance, make sure that you have the python3-cryptography package installed then do a git pull, chown and restart the daemon. <i>Upgrades to web systems do not need to be a huge drama</i>.</p>
</body>
<footer>

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB