Tag: blogging

  • Small sad thing

    It is sad to see how you spent 2 hours to write a long post about some local-first blogging software idea with federation support but with a newspapers-like alternative to endless scrolling of “feeds”, and then single reaction you get is like from someone writing about AI, while one of two main questions of that post was literally is there way to implement automatic generation of these “newspapers” without LLMs?

    I find this to be a sad thing.

  • An idea or concept for local-first blogging thingy

    An idea or concept for local-first blogging thingy

    Reblog via Jeremiah Lee

    The opposite of cloud computing is LEAF computing:

    Local application logic and data
    End-to-end encrypted data
    Autonomous operation without non-optional dependencies
    Federated capability between devices and connectivity with trusted parties

    leafcomputing.net/?ref=activit

    I seen this thanks to boost from Elena Rossini FOSDEM blog.

    And this happened exactly when I thought about moving away from wordpress to something completely different. But this different thing, suddenly, does not exist at all yet. Or at least I do not know about its existence.

    I will be as brief as possible. Imagine a blogging software with these traits:

    Local-First

    You have full copy of all your posts, media files, and even videos locally. Even the feed of authors you follow is fully local to most possible extent. You can read locally without internet, write replies and place reactions to them locally, even without the internet connection active.

    Minimal network footprint

    All what is necessary to keep it online is to connect sometimes, like 1-2 times per day or once per few days (but with larger packs of data to exchange) to a minimalistic online data pod.

    This online data pod would consist of static pages generated from the posts, which would have some minimally interactive “islands” like comments section or reactions panel, print button or some other pieces like images gallery or advanced image widget if used, with fallback to bare minimum thing if your reader disabled the JavaScript at all.

    The small backend purpose would be to accept incoming data via ActivityPub, WebMentions, SMTP, Git, or other possible means, and spread data to your followers with a job.

    It would generate static pages from arriving your posts or regenerate them if related post have been updated.

    From ActivityPub perspective the private messages would arrive to different inbox.

    End-to-end encryption where applicable

    Your data on this pod would be criptographically protected/signed but not encrypted by default (unless if this piece of data have been arrived in encrypted form to be encrypted by the sender (by you or some of your respondents).

    Simple online storage at core

    The core function of online data pod is to generate static pages from the arriving posts and media, serve it, spread updates to followers, and collect incoming reactions and replies.

    Mostly it would consist of following parts:

    • Static Files skin (layout, templates, styles, images)
    • Generated pages and media (served as static but updated on changes)
    • Signed data bucket (can be a simple set of files and directories but without direct public access, no database mandatory). You can set expiration age on any of your posts or messages.
    • Arriving Data Cache (reactions, replies, data from followed authors). Can be implemented as another private directory. Cleared either as soon as downloaded to you or after reaching some age, such as 1 day or week.
    • Jobs runner (spread updates to your followers, delete expired data).
    • Data receptors (SMTP, IMAP, FTP, API requests handlers for ActivityPub and WebMentions, API handlers for interactive islands like comments and reactions section).
    • Minimal metadata database built based on files from directores listed above where necessary and to keep state for jobs runner. Can be implemented as set of JSON files and special module with in-memory indexes and in-process API similar to how JSDB works. Used only where JSON files are not enough or be too slow/ineffective.

    Most of these elements, you can notice, would work with 3-4 directories of files, like:

    • long-term static. Public read-only access. never change after online data pod started
    • Public generated static – public read-only access. can change while pod. Generated based on posts data and other events.
    • Private protected data – private data that most of the time is readonly unless you edit it or delete from the editor and send the update.
    • Arriving data – private data temporary stored until expire or until downloaded, or until processed by jobs runner, depending on what kind of data it is – your updates and new posts or it is
    • Departing data – private data temporary stored until delivered or until become clear data delivery impossible and decision made to not delivery that data.
    • Jobs runner states – private data used for scheduled jobs.

    Connectivity hub and jobs runner

    This is the place that goes beyond files storing. Ideally it would be something that can handle SFTP, IMAP, SMTP, and these HTTP API endpoints for ActivityPub and WebMentions necessary for federation part. This, to significant part, is why ever it can not be done via pure SFTP or IMAP or SMTP part.

    Nomadic identity

    I guess this is where it may be the most boring part of this, with all these digital signatures, authentication, and so on. Mostly it is about binding signing key to digital identity such as author or blog or organization or service. It is simply to say that:

    • Use this public key to check whether alice@foo.bar.online nickname is author of post https://foo.bar.online/AliceCooks/Pancakes
    • Check with this (other?) key whether given direct message is from alice@foo.bar.online
    • Use this (third?) key to encrypt messages to the alice@foo.bar.online sent via SMTP (or ActivityPub?)
    • Public profile card details such as Alice The Space Cook title, profile pic, card background imagery, description, tags, topic spaces (labels from tree-like catalog like alt.hobbbies.home.cooking and alike.
    • Previous key and signature (optional if this is not about changing the key)
    • Digital signature of all this above with the first key from listed above.
    • Endorsements – list of digital signatures with such cards from people who endorse (express their trust) to the claims above).

    Note that all data is included into these cards, all images, descriptions, URLs, tags, and spaces is embedded. So card with endorsements can be quite big, up to 1 megabyte. But it is better than somehow store that at some centralized catalogue.

    What really makes this identity nomadic is the fact you can multiple online pods or connectivity hubs storing your data or hop from one such hub to another together with your followers and contacts lists stored locally too.

    Contacts and followers

    The system of such cards described above would work even without classic DNS, but based on GnuNet GNS or local catalogue of “internet phone numbers” described by Aral Balkan in mentioned his post.

    Daily Newspaper instead of endless feed

    Instead of endless feed that causes intentional or unintentional doom scrolling, I would suggest to use locally-running code that would create using data downloaded from the online pod(s) a sort of “daily newspapers”, lets call it like “News for Breakfast”, “Evening Observer”, or “Climate Express” or “Solarpunk Tribune” or “Hightech news bulletin”. It is possible to create multiple various such newspapers working on your local data (what arrived during some timeframe) in various style. Some of these “newspapers” can include some global stuff, or use some global trending things, but this should be absolutely optional, and provided by following the related author which would provide such manually picked global news data or global topics or events and classification settings or both. Each of that would be separate offerings.

    The whole such experience should be fully available locally, without connection to the internet, as soon as all related data downloaded.

    Imagine if you open the app (at desktop or laptop!) and see two tables. One have Newspapers sign and looks exactly as the table with stack of newspapers. You pick one of them, and it opens in a way resembling the newspaper, with the front page content, and the rest content cut into pages. Of course the resemblance of newspaper is limited, and if you want, you can open the post(s) mentioned in the newspaper text or used to produce it.

    The other table would look like a table with a pile of letters, you open in more or less letter-like experience, or that experience can be just a “boring email-like client” or something more like “messenger-like” experience or something between, but with letting people know it is NOT designed for chat-like instant messengers experience.

    At a Glance

    Together this may look as something not very powerful, as many people today assume that any software aiming to be “successful” or “widespread” should have audio-video calls and instant messaging features.

    Capabilities

    The software I describing is mostly centered around these capabilities intentionally:

    • public long read posts with formatting and attached media and cached embeds for links.
    • Public reactions, comments and reposts
    • Private messages with e2ee capabilities
    • Contacts card collection, exchange and endorsement
    • Daily newspaper-like thing instead of “feed-like” experience

    Big parts

    These 2 completely different parts are necessary:

    • Local-first desktop software (blog editor based on Markdown full support (including sanitized html blocks and CSS for advanced formatting), messages a-la mix of email and asynchronous chat, and contacts cards library)
    • Online data pod that would work as public data point and node for the system. Multiple pods can be used by same person. It should use as basic and widespread protocols as possible, such as SFTP, SMTP, and IMAP, and open standards as ActivityPub, WebMentions, WebIntents.

    Moderation and abuse reporting not covered, but doable

    This idea does not cover such aspects as moderation, abuse reporting, or preventing local abuse.

    Regarding local abuse like relatives opening your PC without your pemission. It is terrible thing even to mention, while I personally I did not experience anything like that. I just remember some blog post describing these treats and related problems. Software for these kinds of treats model surely completely different and needs another set of capabilities like “delete all password”, “fake/safe data” credentials, and even local data should be encrypted similar to how Aegis 2FA OTP manager or some SimpleXChat messenger clients stores their database and require to type password to open the database.

    Regarding moderation abuse reporting, situation is more complicated. To significant extent, the moderation can be done locally with various tools such as blocklists/mute lists, and regarding abuse reporting, it mostly about contact de-endorsement via some high-trusted third-party, who has been chosen by person who report abuse as moderator.

    As the online data pods can be run by anyone, and not necessary it would be some mass service for such pods, it can be complicated to really “block” someone. De-endorsement would have strong effect, if moderator chosen by many or trusted by many (like “I may not use moderation services by Foo Bar, but I will accept de-endorsements” they may issue.

    De-endorsements are public and special kind of posts.

    Endorsements can be private in sense that such endorsement issued about one contact A for another B by a contact C and only C and C know about that. Or they can be public, with special kind of post.

    Endorsement and de-endorsement posts are consists of contact cards being endorsed and de-endorsed.

    Blocklists can be about contact cards (specific digital identity), or about online data pods (same as domain block or de-federate in Mastodon), spaces or tags or mix of these above. Technically blocklists are public blogs following special formatting.

    Moderation labels can be applied to the contacts and posts by moderators which are more like labeling, and it not necessary means muting or blocking or de-endorsement, but for some of moderation labels it can mean de-endorsement. For example if you are a moderator and place moderation label disinformation on post or account, this is not same as placing tag disinformation on blog post debunking some disinformation or exposing another propaganda network.

    Still, due local-first nature of the project, the actual moderation can happen only locally, except for case when you follow some blocklist or do not want to see content labeled as sex and porn or violence by moderators or even having tag (not moderation label but tag) nsfw you can update your online data pod to silently ignore such data on arrival, so it even would not be saved at pod, and will not be arrived into local data as well.

    Following a moderation posts blog and expressing related level of trust (“I will use this blocklist and that labeling service”) at local settings and online data pod configuration is single way to implement moderation for local-first project.

    Questions and Examples on Newspaper format

    Is there a way to make such “newspapers generator” without LLMs? Are there more specialized algorithms for tasks like that? To take various posts sequence for some time interval, or multiple such sequences, mix with global events definition list, and produce newspaper-like format, consisting of some pages of text and images, sorted by priority, to be sure the most important go to first few screens? Or without sorting but just with grouping?

    I would like to avoid LLMs, even locally running, for feature like that.

    For global news, such newspaper can be human made like how the Civil.ge newsletter Morning Cable works.

    But what is alternative to LLMs if make this kind of “newspaper” in more or less automated way? Like…

    Today SuperSun writes about upcycling practices in solarpunk community Optimistic Valley and describes how abandoned warehouse become a creative recreational and living space for the community and what the struggle it was to get all necessary permits from local council.

    19 people commented this and expressed 128 reactions. The most surprising was disbelief expressed by CringyPunk what caused notable responses both from SuperSun (author) and BringingSunHere

    Or another type of thing what can land in the “Newspaper” regarding global news:

    The latest Russian strikes against Ukrainian civilians caused widespread condemnation and widespread criticism from your contacts. Some authors you follow try to use satire and humor to cope with the horror of war and another wave of destruction and death. It works partly because such strikes does not help Russian genocidal empire to reach their military objectives, ISW notes. Quite opposite. Also, more EU and US sanctions to come in response.

    And third example for such newspaper blocks:

    The ongoing football world cup event sparked lot of emotions from your contacts. 10 of people you follow expressed joy on catastrophic loss of US team to Belgium with 4-1 scores while BoringSceptic wrote a grumpy longread on how the big sport funnels private and public money away from top priorities and used solely for propaganda by the dictatorships for decades.

    These are random examples of how these blocks in newspaper-like stuff would like.

    Online Pod services

    Even with all these tutorials floating around about self-hosting and blog about Elena Rossini Sudo Life covering her fascinating self-hosting adventures, not everyone have time to self-host, and if we would like to land more people to platform like what I described, it would require some online data pod service, like hosting service running analog of Domain software for kitten by Aral Balkan.

    It is likely that some of such services could be a paid ones, others would try to cover up expenses with donations via Patreon and other ways.

    Other such services can use one-time entry payment instead of regular payments just to protect self from spam and disinfo bots.

    Limitations

    The project is not about total anonymity or full-blown censorship resistance.

    Some of well-trusted endorcers may use video call where you would speak with them and show your id card or something like that to check you are surely not a bot or ensure that you are really who you claim to be. But not every endorsement would come from such service.

    The project does not require to use some advanced protocols or tech like Tor for anonymization or I2P or other peer-to-peer connectivity for directly connecting with your authors.

    The whole idea of online data pods is a way to overcome the fact that internet is a set of pyramids, such as SSL certificates tree, DNS system is based on centralized names tree prune to censorship and attacks, that is why it is pure optional for this system to work. And the whole IP addresses space is non-uniform – so called residential IP addresses are restricted or second-class citizens, as it often happens with SMTP due spam flood happening with email.

    The project intentionally avoid use cases which require instant messaging capabilities or real-time connectivity like audio-video calls. The whole idea of this project is to create environment encouraging you to making reading of news some intentional ritual that happens 1 or 2 time per day instead of obsessive doom scrolling you would do 24/7. Create environment where being semi-connected is encouraged, going online sporadically from time to time instead of being always connected.

    I also don’t consider a mobile platform as feasible environment (except may be tablets? Especially with Linux?) and aim desktop-laptop kind of environments.

    What is exist around?

    The Briar is single project where there is some features combining longreads (via forums feature) and peer-to-peer connectivity with some “mailbox” (a server that would buffer messages to you while you are offline) which resembles a bit the online data pod I described above. But for now it is in maintenance mode.

    The desire to provide local connectivity combined with instant messaging bumped into current limitation of existing tech, both in hardware and software scopes.

    Question of the day

    So the main question is following – is there any audience for software for local-first blogging with nomadic identity and online data pods like what I described above?

    Fediverse Reactions