Welcome to Friendica.Eskimo.Com
Home of Censorship Free Hosting

E-mail, Web Hosting, Linux Shell Accounts terminal or full remote desktops.
Sign Up For A Free Trial Here
Please tell your friends about federated social media site that speaks several fediverse protocols thus serving as a hub uniting them, hubzilla.eskimo.com, also check out friendica.eskimo.com, federated macroblogging social media site, mastodon.eskimo.com a federated microblogging site, and yacy.eskimo.com an uncensored federated search engine. All Free!
CrossTalk | Istanbul 2.0?
Vladimir Putin offers peace talks, Zelensky and his western backers want a truce. And Trump appears to want to wash his hands of the Ukraine project. Ukraine was offered a very generous deal back in 2...Odysee
California Coastal National Monument | Bureau of Land Management
Connecting the Pacific Ocean with the land, the California Coastal National Monument provides unique coastal habitat for marine-dependent wildlife and vegetation on more than 20,000 rocks, islands, exposed reefs and pinnacles along the California coa…Bureau of Land Management
Trump Triumphs in Doha: US Secures Largest Aerospace and Defense Investment in History
open.substack.com/pub/amuseonx…
Trump Triumphs in Doha: US Secures Largest Aerospace and Defense Investment in History
The critics said he was a showman.open.substack.com
Respected Comrade Kim Jong Un Inspects Combined Tactical Drill of Different Arms Conducted under Training Course of Conference of Training Officers of KPA - KFAUK.com
Pyongyang, May 14 (KCNA) — A combined tactical drill of special operations sub-units for surpassing the standards for an all-mission battalion and a match and joint fire strike drill demonstration of tankmen’s sub-units were held on May 13 as a demon…Dermot Hudson (KFAUK.com)
Je demande au Canard Enchaine de rectifier immédiatement ses publications m'accusant d'avoir pris part à une manif "pro-poutine".
Journaliste paresseux ou incompétent ? Journaliste voulant me nuire indiscutablement, sous couvert d'anonymat ou pas (n'est-ce pas Frédéric Haziza), vous auriez pu "enquêter" et vous auriez découvert que deux manifestations différentes, à des heures différentes, ont eu lieu le 8 mai.
#politique #merdias #désinformation #propagande
piaille.fr/@Dalipas/1145076628…
Dalipas 🏳️🌈🇬🇹 (@Dalipas@piaille.fr)
Attaché : 1 image 1/7 Sophia Chikirou écrit dur X : Je demande au Canard Enchaine de rectifier immédiatement ses publications m'accusant d'avoir pris part à une manif "pro-poutine".Piaille
Alex VI - 3.ð Borgia likes this.
Git Bug: Distributed, Offline-First Bug Tracker Embedded in Git, with Bridges
Link: github.com/git-bug/git-bug
Discussion: news.ycombinator.com/item?id=4…
GitHub - git-bug/git-bug: Distributed, offline-first bug tracker embedded in git
Distributed, offline-first bug tracker embedded in git - git-bug/git-bugGitHub
Emmanuel Todd - APOCALYPSE NOW : Des États-Unis à l'Europe
Lo likes this.
book summary
perplexity.ai/search/can-you-g…
"fraudulent and usurious"
usury, huh? like the shit jesus fought against and died for? remind me..who killed jesus?
mastodon.satoshishop.de/@mk/11…
"has allowed a small group of money-lenders[..]to accumulate immense power."
thomas warned us..
mastodon.satoshishop.de/@mk/11…
"manipulated governments, instigated wars[..]control over banking."
yes, buy bitcoin, because everything else is slavery
mastodon.satoshishop.de/@mk/11…
Mao Zedong: Our dictatorship is the people's democratic dictatorship led by the working class and based on the worker-peasant alliance. wordsmith.social/protestation/…
Icare4America reshared this.
Décarbonons la France : le programme d'action du Shift Project pour 2027 - Présentation
WATCH: President Trump's Motorcade Arrives At Lusail Palace - 5/14/25
President Trump's Motorcade Arrives at Lusail PalaceMay 14, 2025Join this channel to get access to perks:https://www.youtube.com/channel/UCHqC-yWZ1kri4YzwRSt...YouTube
Help the Marines, Not the Lawyers - Newt Gingrich
I truly hope that the Trump administration corrects the Biden administration’s mistakes, abandons the lawyer-dependent framework, and quickly gets these brave veterans the compensation they deeply deserve.Newt Gingrich (Gingrich 360)
Iran’s oil minister: Tehran-Baghdad energy cooperation to expand
Pars Today –Iran’s Minister of Oil, Mohsen Paknejad, in a meeting with Iraq’s Minister of Electricity, Ziyad Ali Fadel, emphasized strengthening strategic...Pars Today
Simple Bash Script To Always Disable Laptop Internal Monitor When Using AR Glasses
I created a simple Bash script that will always disable the default/internal monitor on your laptop when using AR glasses (or any other external monitor). I find this useful for when using AR glasses such as the XReal One which allows you to change the mode from regular mode to ultra-wide mode and when doing this, it will act as your unplugging the XReal ones and plugging in XReal one again in a new mode, causing the interal laptop display to become enabled.
To keep the laptop display always off, weather the laptop lid is either closed or open, this simple bash script will always disable the laptop screen every X seconds (You can change it by changing the wait
variable)
Simply copy this script and create a new bash script such as disable-display.sh
, make the script file executable and add it to your startup applications and it will run in the background. You will need to run xrandr
command with all of your displays enabled to get the names of the displays and change the variable names in the script accordingly.
NOTE: This script may not work with a full Wayland setup and may only work on X11.
Enjoy
\#!/bin/bash
\#RUN xrandr TO GET THE NAMES OF THE DISPLAYS AND SET THE VARIABLES TO THESE NAMES
readonly default_display="eDP"
readonly external_display="USB-C-0"
readonly wait=5
while true; do
#Check if there is an external display connected
if xrandr | grep -q "$external_display connected"; then
#Disable the internal display
xrandr --output $default_display --off
fi
sleep $wait
done
What company do you work for in XR?
I got the XReal One as a portable ergonomic monitor and I may use them as my main monitor going forward. I have a sit/stand desk with monitor arms which I can adjust the height and position for an ergonomic design to always look straight at the monitor and not looking down.
From my research currently the XReal Ones are the best AR/XR glasses on the market due to the chip built into them, not needing any other devices or software to run, just plug in play. The XReal One Pros which I think are coming out soon have some better specs but to me, not worth the extra money.
I been using them for regular desktop/laptop task and coding and I prefer to use the anchor mode when doing this. I sometimes also use the ultra-wide mode to simulate 2 monitors. I also been using them for gaming and I will either have it in follow or anchor mode but never use ultra-wide mode for gaming.
Mine, we're one in it, me ;)
Interesting, thanks for sharing the use cases and clarifying your choices.
I do also have a standing desk with a relatively large screen on a monitor arm. I also have a walking pad under the standing desk. The goal being to ergonomically have as much freedom as possible while still being efficient.
I did try the XReal months ago but I don't think I tried the Pro.
Otherwise I worked with pretty much everything (Google Glass, Vision Pro, Quest (all models), Monocle/Frames, my own DIY ones, etc) but my main focus is WebXR and 6DoF, so not really replacing a screen. I do understand it is useful, and sometimes as I travel I use the Quest 3 or Vision Pro to work in there but that's typically a temporary measure. My professional perspective is that 6DoF with hand tracking and accessories (6DoF pens, BT keyboard, etc) is the most novel way to interact with information hence why I build open-source WebXR prototypes on that topic.
youtu.be/Frou8YmucyE
Comedian Answers a Question About Trans People Seriously - Steve Hofstetter
This answer had to get serious because the question was serious. WATCH NEXT: https://www.youtube.com/watch?v=wY3bLzm6Q4A&list=PLxinf-OoR9oXer8mU6Yv1g2_u6muM6...YouTube
Germany Vows to Take Ukraine Military Support Out of Public Eye
Brian Berletic- Division of Labor + Contempt for Democracy: Germany Vows to Take Ukraine Military Support Out of Public Eyethealtworld (TheAltWorld’s Newsletter)
Le black-out en Espagne, bientôt en France?
A school director in Ukraine has been sacked for speaking Russian
In Kiev Region, a school director in one of the schools has been dismissed for using the Russian language in conversations with schoolchildren, parents and at public events.newsmaker newsmaker (English News front)
Our socials: fediverse.blog/~/ActaPopuli/fo…
Saree: We call on all the nations to stand up in honor, rej...
Alahednews - Fastnews - Saree: We call on all the nations to stand up in honor, rejecting the genocide against their brothers as well as starvation and siege.english.alahednews.news
EPA Chief Lee Zeldin this week announced his agency is getting rid of the ‘start/stop’ technology where your car dies at every red light.
thegatewaypundit.com/2025/05/e…
EPA Chief Lee Zeldin to Get Rid of Car Feature 'Everyone Hates' | The Gateway Pundit | by Cristina Laila
EPA Chief Lee Zeldin this week announced his agency is getting rid of the ‘start/stop’ technology where your car dies at every red light.Cristina Laila (Where Hope Finally Made a Comeback)
Rolling release Fedora based distro? Now that's something new.
Also Brave is good.
Does the rolling release model mean Nobara is based on Fedora Rawhide now?
Edit: I found the answer from the developer on Reddit.
the VERSION updates are rolling. (N41->N42->N43+)nothing is changing in the update process. we still do a monthly snapshot of fedora and provide that to users. we are -not- using rawhide.
the "rolling" simply means when its time to go 42->43 you'll receive those updates as standard package updates without needing to do any specific commands/changes.
Rosa Luxemburg: Bourgeois class domination is undoubtedly an historical necessity, but, so too, the rising of the working class against it. Capital is an historical necessity, but, so too, its grave digger, the socialist proletariat. wordsmith.social/protestation/…
The Cryptography Behind Passkeys
Link: blog.trailofbits.com/2025/05/1…
Discussion: news.ycombinator.com/item?id=4…
The cryptography behind passkeys
This post will examine the cryptography behind passkeys, the guarantees they do or do not give, and interesting cryptographic things you can do with them, such as generating cryptographic keys and storing certificates.The Trail of Bits Blog
Comrade Nepaldeb Bhattacharya
The Centre of Indian Trade Unions (CITU) is deeply grieved at the demise of Comrade Nepaldeb Bhattacharya, senior trade union leader, President of All India Road Transport Workers Federation and All India Working Committee member of CITU.Centre of Indian Trade Unions
Hubble Pinpoints Young Stars in Spiral Galaxy
This Hubble image peers into the spiral galaxy NGC 1317 in the constellation Fornax, located more than 50 million light-years from Earth.NASA Hubble Mission Team (NASA Science)
Dedicated to Greasy NewSCUM
Der Fuehrer's Face
youtube.com/watch?v=ZwGDs4gOfj…
Der Fuehrer's Face (1942)
From the 1942 Disney production of the same name.Words and music by Oliver Wallace.Lyrics1. Ven Der Fuehrer says, "Ve iss der Master Race"Ve Heil, Heil right...YouTube
Knives out for Fetterman: Maverick senator joins long line of Dems punished for breaking from left
Sen. John Fetterman, D-Pa., has bucked the Democratic Party on key issues since assuming office in 2022.Deirdre Heavey (Fox News)
Gaza Death Toll Surpasses 52,900 as Israeli Attacks Intensify - teleSUR English
The Palestinian Ministry of Health has reported that the death toll from Israel’s military offensive has risen to 52,908 since October 2023, with 119,721teleSURenglish
Trump Torches Neocons & Interventionists, Emphasizes 'Peace Through Strength' Deal-Making In Major Saudi Speech
ZeroHedge - On a long enough timeline, the survival rate for everyone drops to zeroTyler Durden (www.zerohedge.com)
Smartphones are listening to you, here is how to stop them « Euro Weekly News
euroweeklynews.com/2025/05/14/…
Smartphones are listening to you, here is how to stop them
Have you ever just had a family dinner conversation over a group holiday or spoken with friends about going to Ibiza to party, and minutes later…Olivier Acuña Barba (Euro Weekly News)
Israel-U.S. aid alternative is ‘cynical sideshow’ to make starvation a bargaining chip: U.N. official
United Nations relief chief Tom Fletcher said that an aid alternative proposed by Israel and backed by the United States is a ‘cynical sideshow’ aimed at turning starvation in the Gaza Strip into a bargaining chip.IRNA English
UK Lawyers Argue Israel Is Not Committing Genocide in Gaza in Arms Export Case
London (Quds News Network)- UK government lawyers have claimed that Israel is not committing genocide in Gaza or deliberately targeting women and children, as a high court case opened into the handlinEditing Team (Quds News Network)
You can follow us in other languages. Visit our website for more information wordsmith.social/protestation/…
U.S. Tests Sixth and Final Superconducting Magnet for ITER Tokamak Fusion Reactor
The manufacture and demanding testing of the sixth and final 110-ton superconducting magnet for the ITER tokamak fusion machine’s 60-foot-tall (18.Richard Freeman (EIR News)
Phillip Blond: The welfare state disempowered working class people people by taking away their ability to self-organise, by taking away their ability to work with each other. It atomised working class communities and also prevented innovation and aspiration for those at the bottom. wordsmith.social/protestation/…
Trump issues nuclear deal threat to Iran
The US president has warned of crippling sanctions on the Iran’s oil industry if a nuclear agreement is not reachedRT
Templates
Emissary’s templates determine much more than the way a particular site looks. Templates can define their own data schemas, workflow rules, and other site behaviors. Each one is a self-contained unit that can be loaded from your server’s filesystem or downloaded from a networked Git repository. This lets system administrators set the ground-rules for how their servers are to be used, while still giving website owners control over their individual domains.
The Emissary distribution includes a number of default templates to get started, although system administrators can use the Setup Console to remove these and add a set of custom templates instead.
Creating and Distributing Templates
Each Template is just a collection of files in a directory that Emissary knows to scan. This can be a directory in the local filesystem, or a remote Git repository that is registered in the server configuration. Emissary will recognize a directory as a template if it contains a template.json
(or template.hjson
) definition file (as opposed to a theme.json
file or a widget.json
file).
Template File Format
Property | Description |
---|---|
templateId | Unique name used to identify this template |
model | Name of one of the renderer models to use when rendering. Almost always “stream” |
extends | Array of Template IDs that this Template extends (see below) |
templateRole | The role that this template takes in the system. Used to determine where new streams can be placed in the hierarchy |
socialRole | ActivityPub object type to use when publishing streams to ActivityPub (e.g. Note, Article, Image, etc) |
containedBy | Array of zero or more template roles that can contain this template. |
label | Human-friendly label, displayed in template lists |
description | Human-friendly description, displayed in template lists |
icon | Icon name, displayed in template lists |
widgetLocations | Array of region names where widgets can be embedded. TOP, LEFT, BOTTOM, RIGHT are recommended. |
bundles | Describes resource bundles that are packaged with this Template |
schema | Describes the data schema of all custom data that this Template uses |
states | Defines the workflow states that this Template uses (see below) |
accessRoles | Defines the user roles that this Template uses (see below) |
actions | Defines the actions that can be performed on streams that use this Template (see below) |
Example JSON
Here is an example template.json
file that includes some of these options:
<span><span>{
</span></span><span><span> <span>"templateId"</span>: <span>"photo"</span>,
</span></span><span><span> <span>"socialRole"</span>:<span>"Image"</span>,
</span></span><span><span> <span>"model"</span>:<span>"stream"</span>,
</span></span><span><span> <span>"containedBy"</span>: [<span>"photo-album"</span>],
</span></span><span><span> <span>"label"</span>: <span>"Photograph"</span>,
</span></span><span><span> <span>"icon"</span>: <span>"picture"</span>,
</span></span><span><span> <span>"schema"</span>: {
</span></span><span><span> <span>"type"</span>: <span>"object"</span>,
</span></span><span><span> <span>"properties"</span>: {
</span></span><span><span> <span>"document"</span>: {<span>"type"</span>:<span>"object"</span>, <span>"properties"</span>: {
</span></span><span><span> <span>"label"</span>: {<span>"type"</span>: <span>"string"</span>},
</span></span><span><span> <span>"imageUrl"</span>: {<span>"type"</span>: <span>"string"</span>}
</span></span><span><span> }}
</span></span><span><span> }
</span></span><span><span> },
</span></span><span><span> <span>"states"</span>: {
</span></span><span><span> <span>"default"</span>: {
</span></span><span><span> <span>"label"</span>: <span>"Default State"</span>,
</span></span><span><span> <span>"description"</span>: <span>"Photos only have one state"</span>
</span></span><span><span> }
</span></span><span><span> },
</span></span><span><span> <span>"accessRoles"</span>: {
</span></span><span><span> <span>"editor"</span>: {
</span></span><span><span> <span>"label"</span>: <span>"Editor"</span>,
</span></span><span><span> <span>"description"</span>: <span>"Can make changes to this item."</span>
</span></span><span><span> },
</span></span><span><span> <span>"readonly"</span>: {
</span></span><span><span> <span>"label"</span>: <span>"Read Only Access"</span>,
</span></span><span><span> <span>"description"</span>: <span>"Can view this photo, but cannot make changes"</span>
</span></span><span><span> }
</span></span><span><span> },
</span></span><span><span> <span>"actions"</span>: {
</span></span><span><span> <span>"view"</span>: {
</span></span><span><span> <span>"step"</span>: <span>"view-html"</span>,
</span></span><span><span> },
</span></span><span><span> <span>"edit"</span>: {
</span></span><span><span> <span>"roles"</span>: [<span>"editor"</span>],
</span></span><span><span> <span>"steps"</span>:[{
</span></span><span><span> <span>"step"</span>:<span>"as-modal"</span>,
</span></span><span><span> <span>"steps"</span>: [{
</span></span><span><span> <span>"step"</span>:<span>"edit"</span>,
</span></span><span><span> <span>"form"</span>: {
</span></span><span><span> <span>"type"</span>:<span>"layout-vertical"</span>,
</span></span><span><span> <span>"label"</span>:<span>"Edit Folder"</span>,
</span></span><span><span> <span>"children"</span>: [
</span></span><span><span> {<span>"type"</span>:<span>"text"</span>, <span>"label"</span>:<span>"Label"</span>, <span>"path"</span>:<span>"document.label"</span>},
</span></span><span><span> {<span>"type"</span>:<span>"textarea"</span>, <span>"label"</span>:<span>"Summary"</span>, <span>"path"</span>:<span>"document.summary"</span>},
</span></span><span><span> {<span>"type"</span>:<span>"select"</span>, <span>"label"</span>:<span>"Format"</span>, <span>"path"</span>:<span>"data.format"</span>},
</span></span><span><span> {<span>"type"</span>:<span>"select"</span>, <span>"label"</span>:<span>"Show Images"</span>, <span>"path"</span>:<span>"data.showImages"</span>}
</span></span><span><span> ]
</span></span><span><span> }
</span></span><span><span> },
</span></span><span><span> {<span>"step"</span>:<span>"save"</span>, <span>"comment"</span>:<span>"Updated Folder"</span>}
</span></span><span><span> ]}]
</span></span><span><span> },
</span></span><span><span> <span>"delete"</span>: {
</span></span><span><span> <span>"roles"</span>: [<span>"author"</span>],
</span></span><span><span> <span>"steps"</span>: [
</span></span><span><span> {<span>"step"</span>:<span>"delete"</span>, <span>"title"</span>: <span>"Delete this Photograph?"</span>},
</span></span><span><span> {<span>"step"</span>: <span>"forward-to"</span>, <span>"url"</span>:<span>"/{{.ParentID}}"</span>}
</span></span><span><span> ]
</span></span><span><span> }
</span></span><span><span> }
</span></span><span><span>}
</span></span>
Actions and Steps
Every Template defines a series of actions that can be performed on the Streams that use that Template. These actions might be as simple as “Create”, “View”, “Update”, and “Delete” – or they might define a sophisticated publishing and approval workflow that spans a number of individual users and roles.
There are three actions defined in the example template.json
file above: “view”, “edit”, and “delete”. These actions can be as simple as setting some initial data, or loading an HTML template to display to the user, or they can define a complex behavior like the edit action.
Each action is composed from a library of interchangeable Steps that provide pre-built functionality to your template design. Steps each have their own rules and parameters. Some are very simple and only do one thing. Others can contain a large number of options – including other steps – to facilitate complex branching and workflow rules. All steps are pre-compiled when the template is loaded in order to maximize server performance.
HTML Content
In the action list above, the “view” action displays an actual web page. This HTML content is packaged into the template as a Standard Go Template. Like Themes and Widgets, These content templates are stored as separate files in the template directory, that must all be named with the *.html
suffix.
State Machines
Every stream in Emissary is also a mini state machine. Each template can define the various states that its streams support. For example, the built-in article templates include “published” and “unpublished” states, while the built-in comment templates use “visible”, “hidden”, and “awaiting-moderation”. Here’s an example snippet from the built-in Article template:
<span><span>{
</span></span><span><span> <span>"states"</span>:{
</span></span><span><span> <span>"unpublished"</span>: {
</span></span><span><span> <span>"label"</span>:<span>"Unpublished"</span>,
</span></span><span><span> <span>"description"</span>:<span>"Visible only to Authors and Owners"</span>
</span></span><span><span> },
</span></span><span><span> <span>"published"</span>: {
</span></span><span><span> <span>"label"</span>:<span>"Published"</span>,
</span></span><span><span> <span>"description"</span>:<span>"Visible to all people with permissions"</span>
</span></span><span><span> }
</span></span><span><span> } <span>...</span>
</span></span><span><span>}
</span></span>
States determine which Actions can be taken on a Stream at any given time. This can be further limited to specific users so that, for instance, an Administrator might be allowed to “edit” a Stream when it is marked as “published”, but the original commenter could not.
Extending / Inheriting Templates
Many templates share are so closely related, or share a lot of features in common. In this case, you can put common features in a base template that is “extended” by others.
As an example, the default package includes an “article” template that defines most of the workflow for creating and publishing articles. Two other templates – “article-editorjs” and “article-markdown” – extend this base template with specific functionality required for each of these different data types.
Here’s how extensions work: If a template defines an action itself, then that is the action that is used. Otherwise, Emissary searches through the list of extensions in the order in which they are defined to find that action name. To extend other templates, add an “extends” key into your template.json
file with an array of template names as its value.
For example: if a template declares this: "extends": ["A", "B", "C"]
then Emissary will first search template “A” for the required actions, then “B”, then “C”.
This inheritance structure can also cascade upwards, so that template “D” could extend “E”, which itself extends “F”.
This extension mechanism also makes it simple for Templates to inherit from multiple bases. In this case, if there multiple extensions, then the first template listed (and all of it’s ancestors in order) is searched first, then the second (with all of its ancestors), and so on.
template package - html/template - Go Packages
Package template (html/template) implements data-driven templates for generating HTML output safe against code injection.pkg.go.dev
My Dream Fediverse Platform
This article is a follow-up to an older post of mine, Towards a Greater Federated Architecture, and also a response from the wonderfully-thought out piece by Ben Werdmuller, If I Started Fresh. The goal here is to take the lessons learned from a variety of systems to propose the Fediverse platform I have always wanted to build: Postmodern.
No code has been written as of yet, but I am learning to program, from the bottom up, backend to frontend. I have some background in game design, Web development, and API clients, but I'm working on the more elusive foundational stuff. This is the only way I can possibly develop the confidence needed to build this thing.
The Fediverse, Social Web, Peopleverse, whatever you want to call it, has evolved considerably since it originally started back in 2008. During my entire time on the network, I've longed to design a platform of my own. I've learned a lot of lessons from amazing projects along the way: Hubzilla, Bonfire, Emissary, and ActivityPods have all done some really interesting things beyond what Mastodon offers to the network. I also think there's some really valuable ideas in both Nostr and Bluesky that are worth closer examination.
Before I dive into my technical brain-droppings of the past decade, let's establish a few core concepts.
Guiding Principles
1. It needs to be fun
On the surface, this might sound superfluous. What does it mean for a platform to be fun? This boils down to a few key areas that Fediverse platforms struggle with:
- Ease of use - Good UX design is hard to execute well. As time goes on, I'm convinced that people want to use something without having to think too hard about conventions or side effects. They shouldn't have to dig under countless menus to find where the decentralization is.
- Discovery - For the time being, the act of finding new, cool things to interact with or peruse is pretty bad. There's some promising work happening with Fediverse Discovery Providers. Regardless, discovery needs to also extend beyond simply finding stuff, and include a laser focus on finding people. Onboarding still kind of sucks, and there's a number of issues with trying to find your friends and connect with them.
- Resiliency - One of the shakiest aspects of the Fediverse involves just how fragile instances can be. If an instance permanently goes down, and you didn't already have some alias set up to migrate your followers, you're dead in the water. Having to rebuild your social graph from scratch is the opposite of fun.
- Control - This can mean a lot of different things: control over your timeline, control over how your space on the web looks, control over your connections, control over your data. A big missed opportunity in the space is that we'll say things like "you own your own data", but it's not exactly true. Your data mostly exists as a series of tables in a database, which can be serialized into a JSON export that you mostly can't use with anything.
It might seem like this is a catch-all, where you can throw any old thing into the guiding principle. Maybe it is. What I know is this: if the experience is bad for users, if they're getting harassed and seeing drama every day, if they don't really have much control over the platform, if they can't find their friends or cool things that interest them, then your platform is the opposite of fun.
2. Users should have maximum agency
Building on top of Principle #1, individual users should have total agency of how their experience is shaped online. This can be categorized in four ways:
- Visual / Conventional - the user decides what interfaces, themes, apps, and clients they will leverage to access the network. Custom designs and behaviors empower users to make their online space truly their own.
- Data Sovereignty - the user has strict controls over their data: what apps and services can use it, the extent to which different pieces are exposed to the Web, and the ability to seamlessly port the sum of that data from one place to another.
- Filtering and Connectivity - users should always be given the opportunity to decide what they see on their feeds, and what other people can see from them. This could take the form of filtering out keywords, blocking users and domains, leveraging a third-party labeling service, or being able to connect to individual accounts that may otherwise be banned instance-wide for everyone else.
Of course, this isn't to say that admins and moderators don't have a suitable place in community-building and curation. It's just that solely relying on them tends to result in communities where users have minimal input on policy, and admins have absolute authority. To me, this is a major barrier towards world-wide adoption of the Social Web, which is a goal for some of us in this massive, sprawling movement.
3. The platform must move the Fediverse forward
There's some absolutely amazing developments happening in the space. Most notably, the Fediverse Enhancement Proposals project has helped many different platforms standardize on undocumented behavior. It's the closest thing we have right now for improving ActivityPub implementations, in lieu of a formal update to the protocol spec.
FEPs are the reason why groups mostly just work across a variety of systems now, and related efforts such as the Threadiverse Working Group allows NodeBB, Discourse, Lemmy, PieFed, and Mbin to federate together with minimal issues. It's not perfect, but the project is bearing a lot of fruit.
The problem is that some of the biggest projects in the space, such as Mastodon, have historically been pretty indifferent to these efforts. Often, they choose to forgo established agreed-upon FEPs to do their own thing, forcing everyone else to bend over backwards and support their unique way of doing things. At the end of the day, FEPs still aren't advancements in the ActivityPub protocol itself.
We need more Fediverse platforms to champion these collaborative efforts, both to help influence further development of the protocol as well as putting pressure on larger projects to work with the community.
4.) The experience must be unique
This might come across as wildly conceited, but I don't want to build yet another clone of a service that already exists. I mean no disrespect towards the people doing that, but I think we've barely managed to scratch the surface of what can be built. There's a certain appeal in imitating existing familiar designs and paradigms, and iterating on them to be better.
What I want to do is develop new concepts that aren't quite like anything else. Sure, there may be a passing resemblance to half a dozen different things, but I want to develop something bold. I'm tired of describing the Fediverse as "the alternative" and want so badly to instead describe it as "the future", but we have to take much bigger risks to get there.
Implementation Details
Here are some of the pipe-dream ideas I've been refining over the years. There are probably a lot of aspects that still need key considerations, some of which is still above my ability to program! I'm currently going to school for Computer Science, and practicing to make my coding skills more capable of tackling these big ideas.
Composable Interfaces
This is probably the biggest idea behind Postmodern, the platform I hope to one day abuild. What are Composable Interfaces? To keep it simple: composable interfaces are a way to construct a custom frontend with whatever data is available.
Composable interfaces are not necessarily new; prior art exists in the following Fediverse projects:
- Hubzilla - You can write pages, a custom theme, and widgets using an elaborate template system. You have to write it yourself by hand, there's not really a way to preview these changes, and some of the more high-level customization has to be done by making calls to pieces of code that aren't super well-documented.
- Bonfire - Customization is largely accomplished through modules, which can be bundled together into a sort of unique software distribution. So, you can choose to add a group forum module, a wiki module, and a video module, and Bonfire will snap those pieces together for you. Super interesting, kind of complicated, still yet to be battle-tested for communities.
- Emissary- Really wild template system built on HTMX and HyperScript. Emissary is really different from other projects because it allows developers to dictate data schemas and actions from within the view template. A lot of contemporary developers might balk at this, because it kind of violates the MVC design pattern. However, Emissary is crazy flexible, and makes it possible for a developer to add support for custom Activity types and actions with a single template.
- Dokieli - a full-blown decentralized client-side editing tool. It implements ActivityPub, Linked Data, and a swath of other technologies related to Solid. It's extremely powerful, but the interface looks like it has a significant learning curve. It's hard even for me, a Fediverse nerd with 15 years of experience, to fully grok.
Looking at these concepts, I think Emissary and Dokieli come the closest to what I want to build. The ability to build a custom UI with unique capabilities just by dictating what the template is doing is awfully compelling.
My personal head-cannon differs in one specific way: take Dokieli, and marry its capabilities with that of Emissary. Focus on the page-building, widget-building, stream-building elements, and give people the power to delve into a vast pool of social data that they can edit client-side without having to touch any template code themselves.Don't worry, this ugly thing is just a mockup. There's a lot to figure out.
Instead of taking inspiration from page-building tools like Gutenberg, Elementor, or Wix, my thoughts are to instead take inspiration from layer-based image editors. Each layer in the builder/inspector thing is a component, which can be altered, rearranged, and adjusted in a number of different ways. You can mix and match existing components, or compose your own from scratch by reaching into the pool of data that your account is aware of. It's not unlike the WordPress approach to Blocks in 2025...but, hopefully this approach can be more intuitive.Again, this is just conceptual. A whole lot of things need refinement.
For this to be viable, a lot of work would need to be done to overcome any potential learning curve. The tools need to be accessible, with the page layout exactly matching what the user sees on the screen.The experience could really suck if it's not implemented carefully. After all, we have to follow the first guiding principle: it has to be fun. Fighting with an editing tool is not that.I wanted to draw more widget ideas, but I need to finish writing this.
To accomplish this, the most straightforward approach would be to create a core set of widgets with data types and settings, bundled together for different experiences. I'm calling these bundles-of-things complications, which can be thought of as the snapping together of atomic units to make something greater. An experience that has a lot of complications put together would pretty much work as its own frontend made of stylized, curated pieces.
If this sounds way, way complicated: yeah, I know. For a social client frontend, this idea pushes a lot of boundaries. I have some ideas about how to get there (maybe use GraphQL for the builder?), but a lot of it is going to probably diverge from the standard Web application stack. I have a lot of homework to do.
Next-Gen Permissions System
I've written about this a bit before in my last article about moving the Fediverse forward, but we need to get our act together about permissions systems. Mastodon's offering is woefully lacking when it comes to granularity.Sigh.
ActivityPub has these nifty things called Collections
, which is really just a representation of a collection of objects. You can pretty much put any object in there, so in a roundabout way, you can create a scoped list of people you're connected with. Theoretically, you could use collections of people as privacy scopes, dictating who can see certain things, or certain versions of things.
Projects such as Bonfire have taken the logical next step, where it's possible to establish boundaries and barriers for different collections of people, under a variety of conditions. This can apply to everything from individual posts to group communities to whatever else you can come up with.
I think it's absolutely important that we build a system that not only accounts for message delivery and access, but capabilities as well. You the user should be the one that dictates whether people can see a post, boost it, reply to it, whatever. In a decentralized system, this is kind of hard to figure out, but not impossible.
I still hold the belief that Object Capabilities might be our best bet, and Christine Lemmer-Webber published a paper a few months ago detailing what oCap-enabled ActivityPub would look like.m
Data as Documents
Some people will disagree with me here, but I think a document database architecture might be the way to go for this whole thing. A traditional relational database might be too limiting for this kind of insane flexibility, especially when you consider how different platforms try to account for the complex data structures necessary for ActivityPub.
Pleroma, for example, historically used the jsonb
data type in PostgreSQL to hold reams and reams of nested JSON data. At a small scale, it's not so bad, but ActivityPub data can grow exponentially when you're interacting with lots of people and content.
For some time now, I've been thinking a lot about Sir Tim Berners-Lee's Solid Project. When first approaching Solid, it seems super abstract and complicated. You get all these people talking about RDF, TripleStores, Quads, WebID, and a lot of other stuff. As someone that has a pretty firm grasp on Fediverse systems, Solid initially caused a vein to bulge in my temple. I went on to explain the semantics here.A file manager, representing files in a Solid Pod
TL;DR: Solid is kind of a specification for data, data storage, and access. It allows users to store their data in pods, and that data is represented as different kinds of documents and metadata. There is no relational database. Instead, the data in your Solid pod is used as a database itself. If you wanted to migrate all of the posts you've ever made, Solid makes it super easy to pick all that stuff up and move it somewhere else.An ActivityPods instance. All of these applications access the same pool of data.
ActivityPods manages to marry the two concepts, and does the heavy lifting to translate these documents and data into something ActivityPub implementations can understand, and vice versa. The real magic here is that ActivityPods makes the act of building ActivityPub apps relatively seamless and straightforward. Developers don't have to think about both ActivityPub and Solid. They just need to write an ActivityPub app.Mastopod, an ActivityPub social app that uses Solid.
I still have some outstanding questions about whether ActivityPods can effectively scale up. The Solid community in general is pretty small, and ActivityPods is an even smaller subset of either Solid or ActivityPub communities. A large-scale community instance with over 100,000 users (who all individually have their own pods) doesn't feel that feasible to me.
Still, I respect everything these guys are doing, and I think about building on top of ActivityPods pretty often.
Relay-Based Supportive Infra
Fediverse instances suffer somewhat from a fragile network. In fact, I would go as far as stating that tethering user accounts to Fediverse instances is an antipattern. We've mistakenly followed this trend for a long time, and put the sum of a user's entire social graph into one server. If that server goes down for good, you're toast.A Nostr client's network settings, showing many different relays.
Nostr doesn't have this problem, because it doesn't have instances. Instead, user accounts are free-floating, peer-to-peer identities that dispatch posts to individual relays. Instead of individual instances where everybody logs on to post, everything is done through clients. Your identity is basically a public key, tied to a profile and some posts.
What I'm advocating for isn't necessarily the prioritization of one method over the other, but a hybrid approach that includes the best of both. What if Fediverse identities could be free-floating, separate things from instances, that persist even when an instance goes down?
Suppose that the Move
activity in ActivityPub was just a method for detaching the identity from one instance, and attaching to another? Or, taking the approach that Hubzilla takes, suppose that you could mirror your identity to multiple instances by attaching your identity to multiple servers? You post in one place, it shows up somewhere else, too.
Another way that relays could be useful is in attacking the notorious Discovery Problem so prevalent in the Fediverse. As Nostr has continued to evolve, different relays have emerged that specialize in specific things:
- Caching
- Hosting Media
- Search
- Premium Long-Term Storage
Theoretically, it could also be possible for relays to take on the role of Fediverse Discovery Providers. These things could not only act as an index of content and people, but conduits that pull in news, book reviews, events, and maybe even a contact directory. Maybe your instance could just subscribe to relays, rather than trying to broker message dispatching and pulling in new content itself.
A Single-Identity Ecosystem
Finally, we get to what I consider to be the Achilles heel of today's Fediverse. As highlighted in previous sections, I think we do a terrible job of handling identity. In fact, we don't really do any job at all.Sigh
Part of the problem here is that every Fediverse server in the network is a full-blown platform, rather than a client. The decision of the Mastodon project was to forgo the Client-To-Server part of the ActivityPub spec, instead opting for a bespoke API of its own. Mastodon's API grew so popular that many other Fediverse platforms adopted it, just to have access to a vast amount of compatible apps.
The primary side effect of every Fediverse server being a platform instead of a client is that every platform needs its own account to be used. This quickly leads to a nightmare scenario where it's possible to have 15 different accounts floating around that don't actually connect to each other in any meaningful way.Reimagining various platforms as client frontends instead, using the same profile.
Granted, the Client-To-Server API has its fair share of complaints. It's under-documented, clients are expected to handle all logic on the client side, and seemingly nobody uses it anyway. However...it still exists, can be improved upon, and could be used in conjunction with ActivityPods.
I'm greatly interested in the prospect of building ActivityPods apps that work with Postmodern, where you're really just viewing different crafted experiences in specific clients.
In Conclusion
Congratulations on getting to the end of my big, weird rant about how I'd do things. Some of these ideas remain unproven, and may not actually be the solutions I end up going with. Still, much of this exists as the byproduct of lessons learned from observing different Fediverse platforms evolve over time. I hope to start by building small prototypes to test out various ideas.
Some of this (all of it?) might be super convoluted and complicated. The biggest thing I want to focus on, however, is the experience of building composable interfaces. I think this idea really has legs, and could potentially be a radically different approach to building for the Social Web.
If you have any insights, ideas, suggestions, or critiques, please feel free to reach out! This article was, believe it or not, something of a shortlist. There's a lot of things I didn't discuss (Bluesky-styled labelers, custom feeds, etc) that still belong in this vision somewhere. For now, these are simply the topics most resonant to me, that I wanted to pay special attention to.
If I started fresh
How I’d build a resilient, community-first platform for the open web.Ben Werdmuller (Werd I/O)
Hier ein Zitat von Emil Cioran:
» Um die moderne Welt zum Leben wachzurütteln, muss das Lob der Faulheit angestimmt werden, jener Faulenzerei, die innerliche Gelassenheit und ein alles duldendes Lächeln durchtränken. «
Vielleicht habt ihr auch noch welche? #NichtMeinKanzler #Merz
New anti-Iranian sanctions by US unacceptable, Iranian Foreign Ministry says
The sanctions "will impact our approach" to the negotiation process, the ministry notedTASS
A Turkish diplomat said that “security will be ensured at the talks in Istanbul,” but let’s not forget that our ambassador was killed in Turkey in 2016
The main topic in the world press is still the possible Russian-Ukrainian negotiations that could take place tomorrow in Istanbul. The composition of the delegations is still not known for certain.Alnik53 (Военное обозрение)
A server that wasn't meant to exist
Link: it-notes.dragas.net/2025/05/13…
Discussion: news.ycombinator.com/item?id=4…
The Server That Wasn't Meant to Exist
A story from 16 years ago - trust, tech, and a server that had to disappear. They offered me a blank check. I said no.Stefano Marinelli (IT Notes)
EW: Trump Admin Launches Investigation Into Gavin Newsom’s Government
trendingpoliticsnews.com/new-g…
Democrat California Governor Gavin Newsom is under new federal scrutiny as the Department of Homeland Security (DHS) opens an investigation into whether the state improperly funneled taxpayer-funded benefits to illegal aliens.
SHAME ON GOP HOUSE: Democrat Ro Khanna Files Bill to Codify Trump’s Drug Price Order — While Republican Leadership Sits on Their Hands
تجربیاتی که از اولین مشارکتم در یک پروژه نرم افزار آزاد کسب کردم ۱
درود
من امینم
یک برنامهنویس تازه کار که در حال یادگیری الگوریتم، سامانهعامل گنو، BASH، زبان C، شبکه (بعداً شروعش میکنم 😀 )، دادهساختارها و ... هست
من از بچگی به رایانه علاقه شدیدی داشتم، مانند خیلیهای دیگه علاقه من به رایانه با بازی کردن شروع شد.
حالا زیاد نمیخوام از سرگذشتم و مسیر یادگیریم براتون بگم، این داستانو در یک فرستهی دیگه براتون توضیح میدم. مطمئنم داستان مسیر یادگیری من و پیدایش علاقهی من به علوم رایانه میتونه براتون جذاب باشه! 😀
این نوشتهام هم زیاد به سرگذشت فرایند یادگیریم بی ربط نیست ولی خب گوشهی بسیار کوچیکی هست و حتما جا داره در نوشتههای دیگه ای به سرگذشتم به صورت اختصاصی بپردازم.
در این فرسته هم مستقیم نمیرم سر موضوع اصلی و فعلا فقط مسیر رسیدن به موضوع اصلی رو شرح میدم.
همهی ما بعد از یادگیری مبانی پایهای یک زبان در ادامه میریم سراغ یادگیری چیزایی مانند کدنویسی تمیز، کار با گیت، دادهساختار ها، یک کتابخانه از اون زبان و ...
پس من هم رفتم سراغ یادگیری گیت
هر برنامه نویس تازهکاری بعد از یادگیری گیت و گشتن در وبگاهی مانند gitlab.com تازه میفهمه عههههههههههههه، چه دنیای بزرگی وجود داشته و من نمیدونستم!
این همه پروژه و در بیشترشونم هر کسی که میخواد میتونه مشارکت کنه (تنها اونایی که آزادن البته)!!!!! هرکسی که بخواد میتونه از یک پروژه یک انشعاب درست کنه و اون انشعابو یا خودش ادامه بده یا تغیرات دلخواهشو ایجاد کنه و اون تغیراتو برای پروژهی اصلیه هم بفرسته و اگه مالک اون پروژهی اصلیه خواست اون تغیراتو اعمال کنه!
مانند هرکس دیگهای وقتی گیتو یاد گرفتم، برای تمرین رفتم در یکی از وبگاه هایی که خدمت گیتو ارائه میداد ثبتنام کردم.
اولین وبگاهی که در اون ثبتنام کردم مانند خیلی های دیگه گیتهاب بود. اما خب برای اینکه آزاد نبود بعدا رفتم روی gitea. من نمیفهمم! چجوری یک نفر میتونه هزار جای وبگاهش واژههای open source رو بذاره ولی خودش آزاد نباشه!
توهین به گیتهاب. کلا هم چیز آشغالیه!
دومین وبگاهی که توش ثبتنام کردم gitea.com بود.
از اون خوشم اومد. هم طراحی قشنگی داشت و هم ویژگی های خوب. یه پروژهی کوچولو و بدرد نخور هم توش توسعه دادم که خب خیلی چیز بدی بود ولی خب اولین ها همیشه همینن!
در روند توسعهی اولین پروژهام چیز های زیادی رو فهمیدم. اولیش این بود که من هنوز دانش کافی برای شروع پروژهای که از چندین پرونده تشکیل شده رو ندارم! تازه من داشتم از Bash برای این پروژه استفاده میکردم، حالا اگه میخواستم یک پروژه رو به زبان C شروع کنم که یک زبان سطح پایینه که اصلا نمیتونستم. پس تصمیم گرفتم که بیشتر زمانمو بذارم روی مشارکت روی پروژهای دیگران تا اینکه خودم یک پروژه رو ادامه بدم. متاسفانه برای ایجاد یک پروژهی درست درمون نیاز به دانش زیادی هست اونم توی حوضه های مختلف! و خب روند یادگیری این دانش چندین سال طول میکشه.
وبگاه gitea برای مشارکت، زیاد جای مناسبی نبود، کاربران کمی داشت و پروژه های کمی رو هم میزبانی میکرد، پس تصمیم گرفتم برم روی codeberg.org.
خب، codeberg وبگاه خوبیه، کاربران زیادی داره و به آزادی هم اهمیت میده اما خب کارسازاش زیاد نمیتونن جوابگوی این همه کاربر باشن و به طور میانگین هر سههفته یکبار قطع میشه و خیلی وقت هاهم در جواب دادن کنده.
خب برای مشارکت باید اول یک پروژهای رو پیدا میکردم که توانایی مشارکت در اونو داشته باشم. منظور من از مشارکت یک تغیر سادهی ReadMe نیست، منظور من اینکه در روند توسعهی اون پروژه تاثیر زیادی داشته باشم و همینطور با روند توسعهاش همراه باشم و یکی از اصلی ترین مشارکت کنندگانش هم به حساب بیام (تقریبا).
پس رفتم در قسمت گشتوگذار (explore) و شروع به گشتن کردم، چندین روز گذشت و خب چیزی پیدا نکرم که بتونم توی اون به اون صورتی که میخوام مشارکت کنم، ولی خب بالاخره یوسوفمو پیدا کردم!
نام اون پروژه Phoenix بود، یک پیکربندی برای افزایش حریم خصوصی و امنیت در فایرفاکس. این پروژه میاد و با تغیر پیکربندی پیشگزیدهی فایرفاکس اونو به جای امن تری تبدیل میکنه.
ایجاد کنندهی این پروژه شخصی هست به نام Celenity (یا حداقل نام کاربریش Celenity هست) و در آمریکا هم زندگی میکنه، ارتباط منو اون در روند مشارکت من در پروژه اش هی بیشترو بیشتر شد و حالا میتونم بگم که باهم دوستیم! 😀)))))
خب وقتی که در قسمت گشتوگذار این پروژه رو پیدا کردم واردش شدم، در ابتدا این پروژه تنها دارای ۶ ستاره بود و کاربران زیادی نداشت و فقط هم از توزیع فدورا پشتیبانی میکرد. تازه نصبش هم به صورت دستی بود و کاربر باید یک کدنوشته (اسکریپت) رو اجرا میکرد.
اولین مشارکتم چیز خیلی سادهای بود.
من در اولین درخواست واکشیم اومدم و کاری کردم که گذارشات کار هایی که در حال انجامه به صورت مرتب و زیباتر نمایش داده بشه
برای نمونه زدم پرچم nv-
رو برای wget تنظیم کردم یا خروجی های استانداردو حذف کردم و الی آخر و Celenity هم این درخواستو به پروژهاش ادغام کرد و این شد شروع ماجرا!!!!
خب نمیخوام این نوشتم طولانی تر از این بشه، ادامهی ماجرا رو بعدا بهتون میگم.
خدانگهدار
مهم، برداشتن گامهای روی به جلوست. بزرگی و کوچکی، مسالهٔ ثانویه است. همین که گام اول رو برداشتی، عالیه.
Prozess um Textnachrichten - Niederlage für EU-Kommission und Präsidentin von der Leyen
Die EU-Kommission hat einer Journalistin der "New York Times" zu Unrecht die Herausgabe von Textnachrichten ihrer Präsidentin von der Leyen verweigert.
Prozess um Textnachrichten - Niederlage für EU-Kommission und Präsidentin von der Leyen
N. E. Felibata 👽 reshared this.
#BREAKING: The U.S. government has now SEIZED CONTROL of the notorious Rikers Island Prison from NYC
Tom Homan has said he plans on filling it up with illegals.
“I want EVERY illegal. I don't care if you're booked for shoplifting. You're going to Rikers Island,” Homan said in February
LET’S GO!
Posted on TS by President Trump
Icare4America reshared this.
AfD-Gutachten des Verfassungsschutzes: Was in dem Dokument steht
Über 1.000 Seiten, um Zweifel zu beseitigen: In der AfD dominieren die rechtsextremen Kräfte, so der Verfassungsschutz. Sein Gutachten ist das Protokoll einer Radikalisierung.
AfD-Gutachten des Verfassungsschutzes: Was in dem Dokument steht
N. E. Felibata 👽 reshared this.
Distro for a new user
Jesus. Another one of these? Every freaking day. (Promise it's different)
I personally like mint and pop!os for new users, but for this user I want to try something windows like with more sex appeal. I don't want to have to touch this computer again. Proprietary software is not an issue/consideration. User is techier than most. What has your experience been with kbuntu? Pros/cons? Other suggestions?
I know I'll get down voted for this, but from that site:
"Microsoft wants you to buy a new computer.
But what if you could make your current one fast and secure again?"
Kind of a sensationalized statement. I've upgraded tons of machines from 2015 and newer to windows 11 without issues. Sure, not all of them, but I'd say a majority of them, and the "upgrade" is free.
I guess I wanted to point out this piece isn't as doom and gloom as it seems.
I think you underestimate how many computers that are in use today that can’t be updated to Windows 11.
I, and many others, have run Windows 10 on unsupported hardware. Difference is that Windows 10 didn’t care and Windows 11 actively try to stop you from doing so. So, what is this if not Microsoft now forcing people to buy new hardware, if they have unsupported hardware?
Edit: What where the CPUs on the 2015 computers you upgraded?
Ronnie21093
in reply to :hoshino_wow: • • •:hoshino_wow:
in reply to Ronnie21093 • • •