rimu, to random

Recent development contributions and their authors:

spoilers - freamon

local community federation - freamon

bot comments don’t add to count of replies - rimu

videos - rimu

topics can have sub-topics - rimu

improve documentation - rscmbbng & somoso

about page - rscmbbng

cross posts - freamon

UI translation (german, catalan) - AchtungDrempels and nihar

moderation tools - rscmbbng, freamon & rimu sticky posts - freamon

More details on each of these at https://piefed.social/post/93462

rimu, to Pixelfed
@rimu@mastodon.nzoss.nz avatar

and are the only platforms with a print stylesheet.

Gotta do the basics right.

rimu, to trustandsafety

I’m pretty happy with how tools for are coming along!

Moderators can:

  • delete & edit anything in community
  • ban people from community, and unban them.
  • review reports about content in that community
  • mark a report as resolved / ignored.

When a report is resolved or ignored, all reports regarding that content are also resolved. So if something receives 150 reports then mods won’t need to click 150 times to resolve all reports. Ignored reports stop all future reports from being accepted.

The person who created the community can appoint other moderators.

Reports federate to and from so if a PieFed user reports some content that came from a Lemmy instance the moderators on the Lemmy instance will be notified about the content being reported.

There’s still more to be done with federation of bans, a moderation log, etc. But it’s shaping up nicely!

https://piefed.social/post/80650

image/png

rimu, to retrocomputing
@rimu@mastodon.nzoss.nz avatar

Absolutely loving the "Hercules 1982" theme for .

Hercules was the brand of graphics card for the IBM PC that was widely used in the 1980s.

It could do two colours - black and whatever colour the monitor was. For my first year I had a green monitor and then an amber one for the next two years.

You can try it by choosing the theme at https://piefed.social/user/settings

A screenshot of PieFed. All the text is monospaced with an green colour on a near-black background.

rimu, to CSS
@rimu@mastodon.nzoss.nz avatar

For the , I've made a theme based on the trans pride flag and set it as the default theme on .

https://piefed.social/post/76469

tallship, to foss

Well... Reddit may not yet have been shown the door, but it has certainly been handed its hat.

Think about it. platforms such as the projects for Kbin, Mbin, Lemmy, Lotide, and now...

https://join.piefed.social/ and the repo is here: https://codeberg.org/rimu/pyfedi/

Be sure to check the Link below in the link that @jeze left and sign up!

Pretty kewl, IMO. Thanks for sharing Elley :) it looks really nice and I created an account for myself. Seamless federation with the others too - very nice :)

.

RE: https://kzoo.to/users/jeze/statuses/112168259370814891

@jeze

jeze, to fediverse
@jeze@kzoo.to avatar

Have you even tried ? Piefed.social is:
"A lemmy/kbin clone written in Python with Flask.

-Clean, simple code that is easy to understand and contribute to. No fancy design patterns or algorithms.
-Easy setup, easy to manage - few dependencies and extra software required.
-AGPL.
-First class moderation tools."

It's actually really quite nice, and I don't hear much noise about it. Go give this project a look at https://piefed.social.

kariboka, to fediverse
@kariboka@harpia.red avatar

Have someone got their instance to federate with ?

I’ve read something about it but didn’t see any real case yet.

Also, does it federates articles? like , , , ,

rimu, to lemmy
@rimu@mastodon.nzoss.nz avatar

Not sure if you noticed but half the is memes. They're not my thing but I enjoyed putting together the best meme consumption experience I could.

Check it out in this video https://www.youtube.com/watch?v=IXVhb4sVZV4 or go to https://piefed.social/topic/chilling/memes?layout=masonry_wide&sort=hot to use it yourself. Click/tap on any image for a full screen lightbox-style image gallery that you can move through by swiping or using the arrow keys.

Can you think of any improvements?

mike_k, to random
@mike_k@mstdn.social avatar

This looks interesting. Old-style digg.

https://codeberg.org/rimu/pyfedi/

&

https://piefed.social/

rimu, to PostgreSQL
@rimu@mastodon.nzoss.nz avatar

Added full-text search to today.

After reading a massive tome about earlier this week I realised it was complete overkill and just used the full-text capabilities of instead.

Currently PieFed has 46,000 posts and results are fast. It'll be interesting to see how well it copes when there are more posts. Anyone want to make a guess when it'll bog down?

https://piefed.social/post/48889

dragfyre, to random
@dragfyre@mastodon.sandwich.net avatar

Hey @fedidb Is it time to add and to FediDB's Threadiverse tracker?

https://fedidb.org/current-events/threadiverse

rimu, to fediverse
@rimu@mastodon.nzoss.nz avatar
rimu, (edited )
@rimu@mastodon.nzoss.nz avatar

PieFed is a link sharing platform so every post has a 'url' field. By embedding the post url into the RSS feed entry, we get images in our feed if the posts have images. The example I gave in the earlier toot uses images but it could be anything, including video or audio.

Podcasts are just RSS feeds with audio files. This means is also a federated platform - every community is also a podcast, if the things you post in the community are just links to mp3 files.

💥 🔥 🎵

youronlyone, to fediverse
@youronlyone@c.im avatar

If you haven't heard, sadly, #ChirpSocial, one of the popular #ActivityPub “groups” platform, is shutting down “probably” on February 29th.

In an email they sent to admins, the owner and developer can no longer support https://chirp.social financially as they failed to find a new job after they were laid off by #Google last year.

So, if you have a Chirp.Social groups, either move to #Guppe (https://a.gup.pe) (as suggested by Chirp.Social), or if I may, to #FediaIO (https://fedia.io), an #Mbin [flagship] instance.

This reminds us the importance of having a built-in groups feature, and one where the groups feature actually federates.

Back in 2008, when the #Fediverse was born, we did have a built-in federated groups in #Laconica / #StatusNet (today known as #GNUsocial). We used bang (!) instead of at (@). A built-in groups feature is more stable as established instances can host them.

Today, we have #Friendica and #Hubzilla (as well as #Streams-based instances) to fill in that, as groups is a built-in feature in those software products. It's just a matter of finding an instance that's open to hosting groups for any topic for the ActivityPub protocol.

That said, any Friendica, Hubzilla, Streams-based instances you suggest for groups?

youronlyone,
@youronlyone@c.im avatar

@rimu Thank you! First time I heard of !

rimu, to lemmy

Some differences between and

  • Comments with -10 score are collapsed by default.
  • Communities are organized into topics. See https://piefed.social/topics.
  • Image-heavy communities can have a tiled/masonry view, like https://piefed.social/c/pics@lemmy.world
  • People who get downvoted a lot end up with a ‘low reputation’ indicator next to their name. You’ll know it when you see it.
  • Hide all posts based on keyword filters.
  • Keyboard shortcuts.
  • Upvotes in meme communities do not add to reputation.
  • Better UI design (somewhat subjective!)
  • Improved hotness ranking algorithm (subjective)

rimu, to fediverse
@rimu@mastodon.nzoss.nz avatar
piefedadmin, to fediverse
@piefedadmin@join.piefed.social avatar

For a very small instance with only a couple of concurrent users a CDN might not make much difference. But if you take a look at your web server logs you’ll quickly notice that every post / like / vote triggers a storm of requests from other instances to yours, looking up lots of different things. It’s easy to imagine how quickly this would overwhelm an instance once it gets even a little busy.

One of the first web performance tools people reach for is to use a CDN, like Cloudflare. But how much difference will it make? In this video I show you my web server logs before and after and compare them.

The short answer is – before CDN: 720 requests. After CDN: 100 requests.

Usually just turning on a CDN with default settings will not help very much, you’ll need to configure some caching rules or settings. By watching your server logs for a while you’ll get a sense for what needs to be cached but check out mine for a starting point:

https://join.piefed.social/wp-content/uploads/2024/02/caching_activity1-1024x577.pngAll these are frequently requested on my instance. Depending on the fediverse platform you have installed, you’ll probably see different patterns and so need different caching settings.

Beware of caching by URI Path because often fediverse software will return different data depending on the Accept header that the requester sets. For example, on PieFed and Lemmy instances a request by a web browser to /post/123 will return HTML to show the post to someone. But when that same URL is requested with the Accept: application/ld+json header set, the response will be an ActivityPub representation of the post! You don’t want people getting activitypub data in their browser and you don’t want to be serving HTML to other instances. Once you spot a URL you want to cache, use a tool like Postman to set the Accept header and make a fake ActivityPub request to your instance and see if you get back HTML or JSON.

Another problem that can happen is that often a response will vary depending on whether the viewer is logged in, or who is logged in. If you can figure out how to configure the CDN to pay attention to cookies or whatever headers are used for Authentication by your platform then you might be able to cache things like /post/*… I couldn’t.

The things I’ve chosen to cache by URI Path above are ones that I know don’t vary by HTTP header or by authentication.

Although we can’t use URI Path a lot of the time, we can cache ActivityPub requests by detecting the Accept: allocation/ld+json header:

https://join.piefed.social/wp-content/uploads/2024/02/caching_activity2-1024x811.pngThis will cache all ActivityPub requests, regardless of URL. People browsing the same URLs as those used by ActivityPub will be unaffected as their requests won’t have the special HTTP header. I used a short TTL to avoid serving stale data when someone quickly edits a post straight after creating it.

There seems to be a deep vein of optimization here which I’ve only just started to dig into. These changes have made a huge difference already and for now my instance is under very little load so I’ll leave it there for now…

https://join.piefed.social/2024/02/20/how-much-difference-does-a-cdn-make-to-a-fediverse-instance/

rimu, to lemmy
@rimu@mastodon.nzoss.nz avatar

can now send messages to other people on the same instance as well as people on instances.

The UI layout should be familiar to anyone who has used messenger.com or similar apps.

If your account is less than a week old or if you've been downvoted a lot you won't be able to message anyone.

The usual delete, block & report functions are available.

A screenshot of a chat UI, showing the options for deleting, blocking and reporting.

piefedadmin, to kbin
@piefedadmin@join.piefed.social avatar

Google provides a tool called PageSpeed Insights which gives a website some metrics to assess how well it is put together and how fast it loads. There are a lot of technical details but in general green scores are good, orange not great and red is bad.

I tried to ensure the tests were similar for each platform by choosing a page that shows a list of posts, like https://mastodon.social/explore.

https://join.piefed.social/?attachment_id=308Mastodonhttps://join.piefed.social/?attachment_id=307Peertubehttps://join.piefed.social/?attachment_id=311Misskeyhttps://join.piefed.social/?attachment_id=309Lemmyhttps://join.piefed.social/?attachment_id=313kbinhttps://join.piefed.social/?attachment_id=315Akkomahttps://join.piefed.social/?attachment_id=310PieFedhttps://join.piefed.social/?attachment_id=314pixelfedhttps://join.piefed.social/?attachment_id=312PleromaPieFed and kbin do very well. pixelfed is pretty good, especially considering the image-heavy nature of the content.

The rest don’t seem to have prioritized performance or chose a software architecture that cannot be made to perform well on these metrics. It will be very interesting to see how that affects the cost of running large instances and the longevity of the platforms. Time will tell.

https://join.piefed.social/2024/02/13/technical-performance-of-each-fediverse-platform/

piefedadmin, (edited ) to random
@piefedadmin@join.piefed.social avatar

Us sitting here with our fiber internet and recent model phones have it pretty good. But the “i” in iPhone stands for “inequality”. Most people in the world still have pretty bad internet and old/slow phones. For a platform to be widely adopted and to serve the needs of those who often miss out, it needs to be frugal in network and cpu usage.

Lemmy Kbin PieFed
Home page 4.5 MB 1.65 MB 700 KB – 930 KB
Viewing a post 360 KB 826 KB (varies) 29 KB

Home pages

Due to Lemmy’s javascript-heavy software architecture, visiting a Lemmy home page involves downloading . And this only gets you 20 posts! Also community thumbnails, even if displayed as a 22px by 22px icon are served directly from their home instances, unresized, which can often be multiple megabytes in size. The home page of lemmy.nz is currently weighing over 9 MB.

Kbin’s home page comes in at a respectable 1.65 MB due to relying less on JavaScript. However it is let down by not using loading=”lazy” on images so they all need to be loaded immediately and by generating post thumbnails that are twice as big as they need to be.

The PieFed home page, showing 5x more posts than Lemmy, weighs between 700 and 930 KB, depending on which posts are shown. In low bandwidth mode, the home page is only 220 KB due to not having any thumbnails.

Viewing posts

When viewing a post, we can assume various assets (CSS, JS and some images) are cached due to loading the home page first.

The picture looks similar when viewing a post, which is a bit surprising. One of the usual benefits of the JS-heavy SPA architecture used by Lemmy is that once all the ‘app’ is loaded into the browser, subsequent pages only involve a small API call. However, going to a page in Lemmy involves two API calls (one for the page and one for the comments) both of which return quite a bit of data. If you look at the ‘get the comments on this post’ JSON response you can see the developers have fallen into the classic SPA pitfall of “over-fetching“. They’re retrieving a whole haystack from the backend and then using JavaScript to find the needle they want, which involves transferring the haystack over the internet. Ideally the backend would find the needle and just send that to the frontend.

Kbin sends more data than it needs to when viewing a post, again because of not using loading=”lazy” which causes every profile picture of the commenters to be loaded at once. Making this simple fix would bring the weight down, from ~800 KB to around 50 KB.

PieFed only sends 10 KB – 30 KB to show a post, but it varies depending on the number and length of comments. This could be reduced even more by minifying the HTML response but with PieFed under active development I prefer the source to be as readable as possible to aid in debugging.

This is no accident. It is the result of choices made very early on in the development process, well before any code was written. These choices were made based on certain priorities and values which will continue to shape PieFed in the future as it grows. In a world where digital access remains unequal, prioritizing accessible and fast-loading websites isn’t just about technology; it’s a step towards a more inclusive and equitable society.

https://join.piefed.social/2024/02/09/comparing-network-utilization-of-lemmy-kbin-and-piefed/

rimu, to foss
@rimu@mastodon.nzoss.nz avatar

Why uses CodeBerg instead of GitHub and Matrix instead of Discord:

https://drewdevault.com/2022/03/29/free-software-free-infrastructure.html

piefedadmin, to python
@piefedadmin@join.piefed.social avatar

As of today, PieFed includes a ‘theme engine’ which makes it easier for people with low or no Python skills to change how PieFed looks and behaves.

Let’s start with the app/templates/themes directory in the PieFed codebase. In this directory there will be a sub-directory for each theme that is available. As of this writing there is only one, called ‘high_contrast’. If you want to make a new theme, copy the high_contrast directory and rename the copy to something 20 characters or less. Let’s pretend your theme is called ‘my_theme’.

Inside ‘high_contrast’ is high_contrast.json. This file contains a bit of information about the theme, to improve the user experience of choosing which theme to enable. Currently the only information in there is a user-friendly name for our theme but I might add more in future. In our new theme we to rename high_contrast.json to be the same as the directory containing it, or ‘my_theme.json’ in this case. Also change the user friendly name in the JSON to something like “My Theme”. Take care not to change the double quotes.

Also in the theme directory are two files: styles.css and scripts.js. You can remove the high_contrast CSS and put your own. high_contrast’s scripts.js is empty and is just a placeholder to encourage you to add your own JavaScript.

In PieFed on the main menu, go to Account -> Settings and check if your new theme is shown as an option in the Theme field. If not then you messed up the naming of the theme directory or theme.json file. The theme setting here will change the theme you use while browsing PieFed – to change it for everyone go to Admin -> Misc Settings and set the ‘Default theme’ option.

Editing styles.css and scripts.js will probably be enough for most people. But in addition to that you can copy any .html file from app/templates into your theme and that copy will be used instead of the default one. For example, the home page template is app/templates/index.html so if you copied it to app/templates/themes/my_theme/index.html then any edits you make to the copy will be used to render the home page in a different way than the stock PieFed theme would!

If you want to theme a template in a sub-directory, like app/templates/post/post.html then the correct place for your copy will be app/templates/themes/my_theme/post/post.html.

The .html templates are a mixture of HTML and a language similar to Python called Jinja2.

I very much look forward to seeing what people come up with!

Licensing

PieFed is licensed under the open source AGPL license and themes are considered derivative works. As a result, themes need to be licensed under the AGPL as well.

This means that anyone who distributes or shares their PieFed themes must do so under the terms of the AGPL, ensuring that the source code of the theme remains open and accessible to others. If you do not distribute or share the theme with others then you do not need to share the source code with the public.

Using the theme to serve a publicly-accessible PieFed instance is “distribution” so you need to be able to make the theme source code available to everyone, either as a downloadable file or a git repository. If you choose to send PieFed a PR of your theme it will be gratefully accepted.

https://join.piefed.social/2024/02/07/changing-piefeds-appearance-with-themes/

wagtail, to fediverse
@wagtail@fosstodon.org avatar

👋 Fediverse folks, what do you think of adding support in or ? See discussion: https://github.com/wagtail/wagtail/discussions/9732

It’s a neat idea, a few other platforms have it as a package, we’re wondering how much interest there would be

phiofx,

@wagtail its a great idea as it would make potentially any django / wagtail installation a first class citizen of the fediverse, expanding functionality in various novel ways

There are already several django based activitypub servers (I am aware of , , ) and related projects (, ) but it seems there is zero code re-use among them.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • provamag3
  • magazineikmin
  • Youngstown
  • slotface
  • ngwrru68w68
  • InstantRegret
  • rosin
  • kavyap
  • khanakhh
  • GTA5RPClips
  • thenastyranch
  • DreamBathrooms
  • Backrooms
  • Durango
  • normalnudes
  • hgfsjryuu7
  • cubers
  • osvaldo12
  • mdbf
  • cisconetworking
  • Leos
  • everett
  • tacticalgear
  • modclub
  • ethstaker
  • anitta
  • tester
  • JUstTest
  • All magazines