Salta al contenuto

Piero Bosio Social Web Site Personale Logo Fediverso

Social Forum federato con il resto del mondo. Non contano le istanze, contano le persone

Mondo

Discussioni esterne a questo forum. Le opinioni e i punti di vista qui espressi potrebbero non riflettere quelli di questo forum e dei suoi membri.

A world of content at your fingertips…

Think of this as your global discovery feed. It brings together interesting discussions from across the web and other communities, all in one place.

While you can browse what's trending now, the best way to use this feed is to make it your own. By creating an account, you can follow specific creators and topics to filter out the noise and see only what matters to you.

Ready to dive in? Create an account to start following others, get notified when people reply to you, and save your favorite finds.

Registrati Accedi
  • 🌱 Server “green”, IA e Fediverso: facciamo un po’ di chiarezza

    Negli ultimi tempi si parla molto, giustamente, di consumi energetici, data center, intelligenza artificiale e impatto ambientale.

    È un tema serio.
    Proprio per questo andrebbe trattato con precisione, non con slogan.

    “Server green” non significa “impatto zero”

    Usare un provider con data center efficienti, alimentazione ottimizzata, buone metriche energetiche e una gestione seria dell’infrastruttura è sicuramente una scelta positiva.

    Ma non significa che il servizio sia magicamente a impatto nullo.

    Anche una piccola istanza del Fediverso consuma risorse:

    • CPU
    • RAM
    • storage
    • database
    • media cache
    • backup
    • federazione
    • email
    • CDN
    • traduzioni
    • traffico di rete

    Tutto questo ha un costo energetico.

    Magari piccolo, magari ben gestito, magari molto più contenuto di tante piattaforme centralizzate enormi, ma comunque reale.

    La compensazione non cancella automaticamente il consumo

    Anche la formula “compensiamo piantando alberi” va maneggiata con cautela.

    Piantare alberi può essere una buona cosa, ma una compensazione ambientale ha senso solo se è:

    • documentata
    • verificabile
    • addizionale
    • permanente
    • proporzionata al consumo reale

    Altrimenti rischia di diventare più comunicazione che reale neutralizzazione dell’impatto.

    Il punto non è fingere di non consumare

    Il punto serio dovrebbe essere un altro:

    dimensionare bene i servizi.

    Non fare il passo più lungo della gamba.
    Non gonfiare artificialmente l’infrastruttura.
    Non inseguire numeri inutili.
    Non centralizzare tutto in poche istanze gigantesche.
    Non trasformare il Fediverso in una copia “alternativa” dei social commerciali.

    Il Fediverso dà il meglio quando è fatto da tante istanze piccole, medie, locali, tematiche, ben amministrate e sostenibili.

    Non serve raccontarsi favole.

    Serve amministrare con criterio.

    Anche le piccole istanze hanno senso

    Una piccola istanza ben dimensionata, con iscrizioni controllate, costi bassi e risorse adeguate, può avere un impatto molto contenuto.

    Non perché “non consuma”.

    Ma perché consuma il giusto per quello che deve fare.

    Questa è la vera sostenibilità tecnica:
    sobrietà, misura, manutenzione e responsabilità.

    In sintesi

    Dire “siamo green” è facile.

    Più corretto sarebbe dire:

    cerchiamo di ridurre l’impatto, scegliamo infrastrutture efficienti, dimensioniamo con criterio e non sprechiamo risorse.

    Questo è un discorso serio.

    Il resto, spesso, è solo marketing ambientale con una foglia verde sopra.

    #Fediverso


    🌱 Server “green”, IA e Fediverso: facciamo un po’ di chiarezzaNegli ultimi tempi si parla molto, giustamente, di consumi energetici, data center, intelligenza artificiale e impatto ambientale.È un tema serio.Proprio per questo andrebbe trattato con precisione, non con slogan.“Server green” non significa “impatto zero”Usare un provider con data center efficienti, alimentazione ottimizzata, buone metriche energetiche e una gestione seria dell’infrastruttura è sicuramente una scelta positiva.Ma non significa che il servizio sia magicamente a impatto nullo.Anche una piccola istanza del Fediverso consuma risorse:CPURAMstoragedatabasemedia cachebackupfederazioneemailCDNtraduzionitraffico di reteTutto questo ha un costo energetico.Magari piccolo, magari ben gestito, magari molto più contenuto di tante piattaforme centralizzate enormi, ma comunque reale.La compensazione non cancella automaticamente il consumoAnche la formula “compensiamo piantando alberi” va maneggiata con cautela.Piantare alberi può essere una buona cosa, ma una compensazione ambientale ha senso solo se è:documentataverificabileaddizionalepermanenteproporzionata al consumo realeAltrimenti rischia di diventare più comunicazione che reale neutralizzazione dell’impatto.Il punto non è fingere di non consumareIl punto serio dovrebbe essere un altro:dimensionare bene i servizi.Non fare il passo più lungo della gamba.Non gonfiare artificialmente l’infrastruttura.Non inseguire numeri inutili.Non centralizzare tutto in poche istanze gigantesche.Non trasformare il Fediverso in una copia “alternativa” dei social commerciali.Il Fediverso dà il meglio quando è fatto da tante istanze piccole, medie, locali, tematiche, ben amministrate e sostenibili.Non serve raccontarsi favole.Serve amministrare con criterio.Anche le piccole istanze hanno sensoUna piccola istanza ben dimensionata, con iscrizioni controllate, costi bassi e risorse adeguate, può avere un impatto molto contenuto.Non perché “non consuma”.Ma perché consuma il giusto per quello che deve fare.Questa è la vera sostenibilità tecnica:sobrietà, misura, manutenzione e responsabilità.In sintesiDire “siamo green” è facile.Più corretto sarebbe dire:cerchiamo di ridurre l’impatto, scegliamo infrastrutture efficienti, dimensioniamo con criterio e non sprechiamo risorse.Questo è un discorso serio.Il resto, spesso, è solo marketing ambientale con una foglia verde sopra.#Fediverso
  • I modelli AI open-weight spaventano anche la Cina! In arrivo nuove restrizioni?

    📌 Link all'articolo : https://www.redhotcyber.com/post/i-modelli-ai-open-weight-spaventano-anche-la-cina-in-arrivo-nuove-restrizioni/

    A cura di Carolina Vivianti


    I modelli AI open-weight spaventano anche la Cina! In arrivo nuove restrizioni?📌 Link all'articolo : https://www.redhotcyber.com/post/i-modelli-ai-open-weight-spaventano-anche-la-cina-in-arrivo-nuove-restrizioni/A cura di Carolina Vivianti#redhotcyber #news #intelligenzaartificiale #aiopenweight #cina #innovazione #glm52 #zhipuai
  • Und wieder zurueck in der alten Heimat... zumindest fuer ne knappe Woche.

    Moin und euch nen gesunden Start in diesen Donnerstag. Alles wird gut!


    per saperne di più →
    @pallenberg Und ich schaue auf ARTE gerade "Mit dem Zug durch Taiwan".
  • L’AI sbaglia sempre più spesso! Le aziende vogliono assicurarsi contro gli errori degli algoritmi

    📌 Link all'articolo : https://www.redhotcyber.com/post/lai-sbaglia-sempre-piu-spesso-le-aziende-ora-vogliono-assicurarsi-contro-gli-algoritmi/

    A cura di Carolina Vivianti

    assicurativo


    L’AI sbaglia sempre più spesso! Le aziende vogliono assicurarsi contro gli errori degli algoritmi📌 Link all'articolo : https://www.redhotcyber.com/post/lai-sbaglia-sempre-piu-spesso-le-aziende-ora-vogliono-assicurarsi-contro-gli-algoritmi/A cura di Carolina Vivianti#redhotcyber #news #intelligenzaartificiale #mercat assicurativo #crescitadelmercato
  • Fire Brigade out yesterday evening in the next village to me, a field was alight. Farmer helped the brigade by ploughing a fire break so it didn't spread but a whole lot of unpleasant smoke. Ground is tinder dry, lots of care needed.


    per saperne di più →
    @lindasgoluppiart The surrounding fields just bursting into flames in the summer was not a thing that ever occurred to me as a child.#farming #countryside #wildfires
  • GitLab: patch di sicurezza per 8 bug che consentono il furto della sessione

    📌 Link all'articolo : https://www.redhotcyber.com/post/gitlab-patch-di-sicurezza-per-8-bug-che-consentono-il-furto-della-sessione/

    A cura di Luigi Zullo


    GitLab: patch di sicurezza per 8 bug che consentono il furto della sessione📌 Link all'articolo : https://www.redhotcyber.com/post/gitlab-patch-di-sicurezza-per-8-bug-che-consentono-il-furto-della-sessione/A cura di Luigi Zullo#redhotcyber #news #cybersecurity #hacking #gitlab #vulnerabilita #sicurezzainformatica
  • Riflessioni tossiche sul Fediverso.

    Settima puntata.

    Proseguo questi monologhi che raccontano, quasi come un diario, la mia esperienza nel Fediverso.

    Oggi proseguirò la mia riflessione sul Fediverso che sogno.

    undefined

    «Costruiamo noi il Fediverso che ci piace», ho scritto qualche tempo fa, e facciamolo innanzitutto scegliendo un'istanza che ci somigli. Ho raccontato come, proprio in quest'ottica, oltre a questo account in Poliversity.it in cui rifletto su giornalismo, didattica e Fediverso, per i miei post più personali ho scelto di creare un secondo account nella nuova istanza generalista Social.Umoja.it.

    L'esperienza di questi giorni in Umoja mi sta facendo maturare un'ideale evoluzione del Fediverso in direzione di tante nuove istanze medio / piccole, senza che le attuali istanze enormi crescano ulteriormente.

    Ecco, questa è l'idea di Fediverso che mi si va formando: una miriade d'istanze che abbiano al massimo un paio di centinaia di utenti. Istanze monoutenti, istanze con qualche decina di utenti, una collezione di piccole e medie istanze Mastodon come la lussuosa Poliversity, la romana Puntarella, la serissima Cisti, e poi Devianze, Stereodon, e che meraviglia Bologna.one, e poi che amore Snowfan.it, che carina Senigallia.one, eccetera... fino alla neonata Umoja.

    undefined

    Dimentico qualcuno? La mia tossicità mi sta facendo volutamente dimenticare le istanze enormi. C'è chi invece mi fa notare che le istanze enormi, quelle che possono sciorinare numeri a quattro o più cifre, quelle che costa caro mantenere e che di conseguenza chiedono continuamente offerte, non potranno mai mancare. Infatti, proprio come avviene nelle città, esistono persone che impazzirebbero se dovessero rinunciare a cemento, smog, movida, locali notturni illuminati a giorno, bar diurni ombrosi e asettici. Se a queste persone proponi una tranquilla vita in provincia, ti vedono come un pazzo.

    Proprio come un pazzo, io qui nella “provincia” mi trovo bene. Da qui riesco a lavorare a un'idea di Fediverso che è molto differente rispetto a quella dei cultori delle “grandi città”.

    Pazzo sono io, e pazzo è probabilmente @juliandv, in quanto ha fatto la pazzia di scegliere me, account bannato perché tossico, e promuovermi a moderatore della sua Umoja della quale mi sto appassionando.

    È ancora piccola Umoja, ma crescerà, chissà, forse perfino un po' con il mio aiuto.

    undefined

    Come sempre concludo con gli hashtag che voglio appiccicare a questo post: , , . E cito la comunità @fediverso perché è moderata dallo stesso admin dell'istanza in cui mi trovo.

    Arrivederci alla prossima Riflessione Tossica.


    @amministratore Tutte assieme, grandi piccole monotematiche monoutente...tutte 😀Tutte unite siamo Fediverso 💪@juliandv @Trames
  • Avvelenamento dei dati: come proteggere l’intelligenza artificiale aziendale

    📌 Link all'articolo : https://www.redhotcyber.com/post/avvelenamento-dei-dati-come-proteggere-lintelligenza-artificiale-aziendale/

    A cura di Paolo Galdieri


    Avvelenamento dei dati: come proteggere l’intelligenza artificiale aziendale📌 Link all'articolo : https://www.redhotcyber.com/post/avvelenamento-dei-dati-come-proteggere-lintelligenza-artificiale-aziendale/A cura di Paolo Galdieri#redhotcyber #news #sicurezzadatidigitali #intelligenzaartificiale #cybersecurity

  • Sembra innocuo ma ruba i dati su macOS: ecco come funziona PamStealer📌 Link all'articolo : https://www.redhotcyber.com/post/sembra-innocuo-ma-ruba-i-dati-su-macos-ecco-come-funziona-pamstealer/A cura di Luigi Zullo#redhotcyber #news #intelligenzaartificiale #grok #sintesideltesto #tecnologia #informatica
  • RE: https://mastodon.social/@dansup/116878877635203757

    Congratulations to @dansup on the new and improved fediverse.info!

    Make sure to check it out, and while you're at it, share it with 5 people who haven't joined the yet 👀


    per saperne di più →
    @Mastodon @dansup I love how it went from Instagram vibe to it's very own thing <3
  • Claude Code spiava gli utenti cinesi! Scoperto un tracker nascosto e via alle polemiche

    📌 Link all'articolo : https://www.redhotcyber.com/post/claude-code-spiava-gli-utenti-cinesi-scoperto-un-tracker-nascosto-e-via-alle-polemiche/

    A cura di Carolina Vivianti


    Claude Code spiava gli utenti cinesi! Scoperto un tracker nascosto e via alle polemiche📌 Link all'articolo : https://www.redhotcyber.com/post/claude-code-spiava-gli-utenti-cinesi-scoperto-un-tracker-nascosto-e-via-alle-polemiche/A cura di Carolina Vivianti#redhotcyber #news #sicurezzainformatica #tracciamento #censura #intelligenzaartificiale
  • @michael is SO READY for his talk at !

    TOMORROW Jul 9 at 12:00!

    My grandma is going to be so happy that her cape is becoming a global design reference.

    Cc: @FediverseSymbol @newsmast


    @michael is SO READY for his talk at #DWebCamp!TOMORROW Jul 9 at 12:00!My grandma is going to be so happy that her cape is becoming a global design reference.#Fediverse #FediverseSymbol #asterismCc: @FediverseSymbol @newsmast
  • No ai “robot assassini”! L’ONU traccia un solco profondo sull’uso delle AI in ambito militare

    📌 Link all'articolo : https://www.redhotcyber.com/post/no-ai-robot-assassini-lonu-traccia-un-solco-profondo-sulluso-delle-ai-in-ambito-militare/

    A cura di Carolina Vivianti


    No ai “robot assassini”! L’ONU traccia un solco profondo sull’uso delle AI in ambito militare📌 Link all'articolo : https://www.redhotcyber.com/post/no-ai-robot-assassini-lonu-traccia-un-solco-profondo-sulluso-delle-ai-in-ambito-militare/A cura di Carolina Vivianti#redhotcyber #news #intelligenzaartificiale #onu #antonioGuterres #robotassassini #vietare #uccisioni
  • We're pleased to announce BotKit 0.5.0. This release changes how both the docs site and every bot's own pages look, and it stops limiting a server to one bot: a single process can now host a whole fleet of them. Quoting, and being quoted, goes through a consent step under FEP-044f, and a Redis-backed repository joins the SQLite and PostgreSQL ones for shared production storage. A few of these changes are breaking; see below for what to check before you upgrade.

    A new look for botkit.fedify.dev

    Until this release, botkit.fedify.dev read like a stock VitePress site: a workable but generic shell wrapped around the docs, with none of BotKit's own personality showing through.

    The theme and the landing page are both new. The palette now matches the real logo greens instead of a generic default, and headlines are set in Space Grotesk, paired with Inter for everything else; the display font is self-hosted, so no visitor's IP is handed to a font CDN. The new landing page frames BotKit's dinosaur mascot inside its signature unassembled-model-kit sprue frame, then leads with a tabbed installer for Deno, npm, pnpm, and Yarn and a one-file bot example before getting into what BotKit actually does: messages, events, multi-bot instances, and the pages it builds for a bot without any extra work from you.

    The redesigned botkit.fedify.dev homepage: a framed dinosaur mascot in a model-kit sprue, a one-file install snippet, and a rotating code sample.

    The deployment guides grew alongside the new landing page: they were split apart and fleshed out, and a new Cloudflare Workers guide joins the existing Deno Deploy, Docker, and self-hosting guides.

    A new look for your bot's pages

    The pages BotKit serves for your bot (its profile, its posts, its follower list) got the same attention, in the opposite direction. Until now they were built on Pico CSS pulled from an external CDN: a fine default, but a generic one that made every BotKit-hosted bot look like a demo of the same template, and that quietly sent every visitor's browser off to fetch a stylesheet from someone else's server.

    That's gone. Bot pages now use a self-contained design system, bundled with the package and served from BotKit's own content-addressed, cache-forever path: no external CDN, no build step, on either Deno or Node.js. The whole look is driven by a single accent color you choose (twenty names, the same legend Pico CSS uses, so your existing choice of color still works), tinting links, the follow button, and small highlights, while everything else stays quiet so your bot's name, avatar, and posts are what a visitor actually notices. A new PagesOptions.theme option ("auto", "light", or "dark") controls the color scheme independently of the accent. A repost is now marked and attributed to its original author instead of blending into the bot's own timeline.

    A bot's redesigned profile page: a banner and avatar, bio with a link and mention, custom properties, follower and post counts, and a follow button, all tinted in the bot's chosen accent color.

    If you want to go further than the accent color allows, PagesOptions.css still lets you inject custom CSS on top of BotKit's own stylesheet.

    Multi-bot instances

    Until this release, a BotKit process could only ever be one bot. Running a second bot meant standing up a whole second server, even when the two bots could easily have shared the same infrastructure. That limitation, raised in #16, is gone: the new createInstance() function creates an Instance that owns the shared plumbing (the key–value store, the message queue, the repository, and HTTP handling), and any number of bots can live on it side by side, each with its own actor identity and event handlers.

    For a fixed, known set of bots, Instance.createBot() takes an identifier and a profile:

    import { createInstance, text } from "@fedify/botkit";
    import { MemoryKvStore } from "@fedify/fedify";
    
    const instance = createInstance<void>({ kv: new MemoryKvStore() });
    
    const greetBot = instance.createBot("greet", {
      username: "greetbot",
      name: "Greeting Bot",
    });
    
    greetBot.onFollow = async (session, followRequest) => {
      await followRequest.accept();
      await session.publish(text`Welcome, ${followRequest.follower}!`);
    };
    

    For a family of bots resolved on demand (one per region, one per customer, thousands of them backed by a database), pass a dispatcher function instead of a fixed identifier, and BotKit resolves and federates each one lazily:

    const weatherBots = instance.createBot(async (ctx, identifier) => {
      if (!identifier.startsWith("weather_")) return null;
      const region = await db.getRegion(identifier.slice("weather_".length));
      if (region == null) return null;
      return { username: identifier, name: `${region.name} Weather Bot` };
    });
    
    weatherBots.onMention = async (session, message) => {
      const code = session.bot.identifier.slice("weather_".length);
      await message.reply(text`Current weather: ${await db.getWeather(code)}`);
    };
    

    Incoming activities are routed only to the bots they actually concern: the followed bot, the owner of a liked or replied-to message, mentioned bots, and bots followed by the sender. Multi-bot instances also serve a list of hosted bots at the web root, with each bot's own pages moving to /@{username}; a reserved instance actor signs shared-inbox requests when there's no single bot whose key obviously should.

    None of this touches single-bot deployments: createBot() keeps working exactly as it always has, with the bot's pages staying at the web root and its data migrated to the new storage layout automatically on startup. If you maintain a custom Repository implementation, though, this is a breaking change worth planning for: every method now takes the owning bot's identifier as its first parameter, Session.bot is a read-only ReadonlyBot instead of a mutable Bot, and local object URIs carry the owning bot's identifier (old-format URIs are still recognized and permanently redirected, so links other servers stored keep working). The full picture, including how to move an existing single-bot deployment onto a multi-bot instance later, is in the new Instance concept document.

    Thanks to @moreal@hackers.pub, whose early work-in-progress explorations of this problem surfaced its two hardest design questions (mapping usernames to identifiers for dynamic bots, and routing object URIs that used to carry no owner information) well before this implementation settled on its final shape.

    Consent-respecting quotes with FEP-044f

    BotKit has supported quoting since 0.2.0, but only in the Misskey family's style: a quoteUrl property and a Link tag, sent without ever asking the quoted author. Mastodon 4.4 and 4.5 do things differently: they verify quotes through FEP-044f's consent handshake before showing them as quotes at all. Without that handshake, a BotKit bot's quotes never rendered as quotes on Mastodon, and quotes of a BotKit bot showed up as unverifiable.

    BotKit now handles the FEP-044f handshake in both directions. When you quote a message, it sets the FEP-044f quote property and sends a QuoteRequest to the quoted author, alongside the Create it already sent. Publishing stays non-blocking: the post goes out immediately, and the quote is upgraded once (or if) approval arrives:

    const message = await session.publish(text`This message quotes another one.`, {
      quoteTarget: quoted,
    });
    console.log(message.quoteApprovalState); // "pending"
    

    On the receiving side, a new quotePolicy option (on createBot(), and per message on Session.publish()) controls how your bot answers incoming quote requests: automatically for everyone ("public", the default), automatically for followers only, never ("nobody"), or held for manual review through the new Bot.onQuoteRequest event:

    bot.onQuoteRequest = async (session, request) => {
      if (request.state === "pending") await request.accept();
    };
    

    Bot.onQuoteAccepted, Bot.onQuoteRejected, and Bot.onQuoteRevoked cover what happens next for quotes your own bot sent, Message.quoteApproved reports whether an incoming quote carries a valid authorization stamp, and AuthorizedMessage.unauthorizeQuote() lets you revoke one you previously granted. The legacy quoteUrl and Misskey-style tags are still sent alongside the new property, so nothing about quoting on Misskey and its relatives changes. The full design is spread across #27 through #33.

    A Redis repository (@fedify/botkit-redis)

    BotKit has had a SQLite repository since 0.3.0 and a PostgreSQL one since 0.4.0, but neither is the natural fit for a bot that runs as several worker processes sharing one store, which is exactly the shape a Redis-backed deployment usually takes. The new @fedify/botkit-redis package fills that gap with RedisRepository, built directly on Redis strings, sets, and sorted sets rather than going through a generic key–value abstraction:

    import { createBot, MemoryKvStore } from "@fedify/botkit";
    import { RedisRepository } from "@fedify/botkit-redis";
    
    const bot = createBot({
      username: "mybot",
      kv: new MemoryKvStore(),
      repository: new RedisRepository({ url: "redis://localhost:6379/0" }),
    });
    

    Because several workers can share one Redis instance, the read-modify-write paths that matter most under concurrency (message updates, follower bookkeeping, quote authorization indexes) are protected by short-lived locks that get renewed while a slow update is still running, rather than by assuming only one process ever touches the data at a time. The package supports both a connection URL it manages itself and an existing node-redis client you inject and keep control of, and it's available for both Deno and Node.js. #12 and #35 cover the rest of it.

    Smaller improvements

    The npm package's TypeScript declaration files no longer accidentally include the runtime Temporal polyfill code, which had been leaking into consumers' .d.ts output. Fedify was upgraded to 2.3.1, Hono to 4.12.27, and LogTape to 2.2.3.


    As always, the full list of changes is in CHANGES.md, and every API mentioned above is documented at botkit.fedify.dev. Thank you to everyone who filed issues, opened discussions, and tried BotKit out.

    If you build something with BotKit, run into a rough edge, or just want to talk through an idea before opening an issue, GitHub Discussions is the place for exactly that. For something closer to real time, BotKit's chat now lives on Matrix at #fedify:matrix.org. Drop in and say hello.


    We're pleased to announce BotKit 0.5.0. This release changes how both the docs site and every bot's own pages look, and it stops limiting a server to one bot: a single process can now host a whole fleet of them. Quoting, and being quoted, goes through a consent step under FEP-044f, and a Redis-backed repository joins the SQLite and PostgreSQL ones for shared production storage. A few of these changes are breaking; see below for what to check before you upgrade. A new look for botkit.fedify.dev Until this release, botkit.fedify.dev read like a stock VitePress site: a workable but generic shell wrapped around the docs, with none of BotKit's own personality showing through. The theme and the landing page are both new. The palette now matches the real logo greens instead of a generic default, and headlines are set in Space Grotesk, paired with Inter for everything else; the display font is self-hosted, so no visitor's IP is handed to a font CDN. The new landing page frames BotKit's dinosaur mascot inside its signature unassembled-model-kit sprue frame, then leads with a tabbed installer for Deno, npm, pnpm, and Yarn and a one-file bot example before getting into what BotKit actually does: messages, events, multi-bot instances, and the pages it builds for a bot without any extra work from you. [image: 15aa3e0fb9912dd140ff5aa180beddf035d8c34e4eaa04c60fd3502bd3d938f8.webp] The deployment guides grew alongside the new landing page: they were split apart and fleshed out, and a new Cloudflare Workers guide joins the existing Deno Deploy, Docker, and self-hosting guides. A new look for your bot's pages The pages BotKit serves for your bot (its profile, its posts, its follower list) got the same attention, in the opposite direction. Until now they were built on Pico CSS pulled from an external CDN: a fine default, but a generic one that made every BotKit-hosted bot look like a demo of the same template, and that quietly sent every visitor's browser off to fetch a stylesheet from someone else's server. That's gone. Bot pages now use a self-contained design system, bundled with the package and served from BotKit's own content-addressed, cache-forever path: no external CDN, no build step, on either Deno or Node.js. The whole look is driven by a single accent color you choose (twenty names, the same legend Pico CSS uses, so your existing choice of color still works), tinting links, the follow button, and small highlights, while everything else stays quiet so your bot's name, avatar, and posts are what a visitor actually notices. A new PagesOptions.theme option ("auto", "light", or "dark") controls the color scheme independently of the accent. A repost is now marked and attributed to its original author instead of blending into the bot's own timeline. [image: d6a84e47a619cff04164ebec091f67d4ff20cc1e83c686da742e8b399ed22981.webp] If you want to go further than the accent color allows, PagesOptions.css still lets you inject custom CSS on top of BotKit's own stylesheet. Multi-bot instances Until this release, a BotKit process could only ever be one bot. Running a second bot meant standing up a whole second server, even when the two bots could easily have shared the same infrastructure. That limitation, raised in #16, is gone: the new createInstance() function creates an Instance that owns the shared plumbing (the key–value store, the message queue, the repository, and HTTP handling), and any number of bots can live on it side by side, each with its own actor identity and event handlers. For a fixed, known set of bots, Instance.createBot() takes an identifier and a profile: import { createInstance, text } from "@fedify/botkit"; import { MemoryKvStore } from "@fedify/fedify"; const instance = createInstance<void>({ kv: new MemoryKvStore() }); const greetBot = instance.createBot("greet", { username: "greetbot", name: "Greeting Bot", }); greetBot.onFollow = async (session, followRequest) => { await followRequest.accept(); await session.publish(text`Welcome, ${followRequest.follower}!`); }; For a family of bots resolved on demand (one per region, one per customer, thousands of them backed by a database), pass a dispatcher function instead of a fixed identifier, and BotKit resolves and federates each one lazily: const weatherBots = instance.createBot(async (ctx, identifier) => { if (!identifier.startsWith("weather_")) return null; const region = await db.getRegion(identifier.slice("weather_".length)); if (region == null) return null; return { username: identifier, name: `${region.name} Weather Bot` }; }); weatherBots.onMention = async (session, message) => { const code = session.bot.identifier.slice("weather_".length); await message.reply(text`Current weather: ${await db.getWeather(code)}`); }; Incoming activities are routed only to the bots they actually concern: the followed bot, the owner of a liked or replied-to message, mentioned bots, and bots followed by the sender. Multi-bot instances also serve a list of hosted bots at the web root, with each bot's own pages moving to /@{username}; a reserved instance actor signs shared-inbox requests when there's no single bot whose key obviously should. None of this touches single-bot deployments: createBot() keeps working exactly as it always has, with the bot's pages staying at the web root and its data migrated to the new storage layout automatically on startup. If you maintain a custom Repository implementation, though, this is a breaking change worth planning for: every method now takes the owning bot's identifier as its first parameter, Session.bot is a read-only ReadonlyBot instead of a mutable Bot, and local object URIs carry the owning bot's identifier (old-format URIs are still recognized and permanently redirected, so links other servers stored keep working). The full picture, including how to move an existing single-bot deployment onto a multi-bot instance later, is in the new Instance concept document. Thanks to @moreal@hackers.pub, whose early work-in-progress explorations of this problem surfaced its two hardest design questions (mapping usernames to identifiers for dynamic bots, and routing object URIs that used to carry no owner information) well before this implementation settled on its final shape. Consent-respecting quotes with FEP-044f BotKit has supported quoting since 0.2.0, but only in the Misskey family's style: a quoteUrl property and a Link tag, sent without ever asking the quoted author. Mastodon 4.4 and 4.5 do things differently: they verify quotes through FEP-044f's consent handshake before showing them as quotes at all. Without that handshake, a BotKit bot's quotes never rendered as quotes on Mastodon, and quotes of a BotKit bot showed up as unverifiable. BotKit now handles the FEP-044f handshake in both directions. When you quote a message, it sets the FEP-044f quote property and sends a QuoteRequest to the quoted author, alongside the Create it already sent. Publishing stays non-blocking: the post goes out immediately, and the quote is upgraded once (or if) approval arrives: const message = await session.publish(text`This message quotes another one.`, { quoteTarget: quoted, }); console.log(message.quoteApprovalState); // "pending" On the receiving side, a new quotePolicy option (on createBot(), and per message on Session.publish()) controls how your bot answers incoming quote requests: automatically for everyone ("public", the default), automatically for followers only, never ("nobody"), or held for manual review through the new Bot.onQuoteRequest event: bot.onQuoteRequest = async (session, request) => { if (request.state === "pending") await request.accept(); }; Bot.onQuoteAccepted, Bot.onQuoteRejected, and Bot.onQuoteRevoked cover what happens next for quotes your own bot sent, Message.quoteApproved reports whether an incoming quote carries a valid authorization stamp, and AuthorizedMessage.unauthorizeQuote() lets you revoke one you previously granted. The legacy quoteUrl and Misskey-style tags are still sent alongside the new property, so nothing about quoting on Misskey and its relatives changes. The full design is spread across #27 through #33. A Redis repository (@fedify/botkit-redis) BotKit has had a SQLite repository since 0.3.0 and a PostgreSQL one since 0.4.0, but neither is the natural fit for a bot that runs as several worker processes sharing one store, which is exactly the shape a Redis-backed deployment usually takes. The new @fedify/botkit-redis package fills that gap with RedisRepository, built directly on Redis strings, sets, and sorted sets rather than going through a generic key–value abstraction: import { createBot, MemoryKvStore } from "@fedify/botkit"; import { RedisRepository } from "@fedify/botkit-redis"; const bot = createBot({ username: "mybot", kv: new MemoryKvStore(), repository: new RedisRepository({ url: "redis://localhost:6379/0" }), }); Because several workers can share one Redis instance, the read-modify-write paths that matter most under concurrency (message updates, follower bookkeeping, quote authorization indexes) are protected by short-lived locks that get renewed while a slow update is still running, rather than by assuming only one process ever touches the data at a time. The package supports both a connection URL it manages itself and an existing node-redis client you inject and keep control of, and it's available for both Deno and Node.js. #12 and #35 cover the rest of it. Smaller improvements The npm package's TypeScript declaration files no longer accidentally include the runtime Temporal polyfill code, which had been leaking into consumers' .d.ts output. Fedify was upgraded to 2.3.1, Hono to 4.12.27, and LogTape to 2.2.3. As always, the full list of changes is in CHANGES.md, and every API mentioned above is documented at botkit.fedify.dev. Thank you to everyone who filed issues, opened discussions, and tried BotKit out. If you build something with BotKit, run into a rough edge, or just want to talk through an idea before opening an issue, GitHub Discussions is the place for exactly that. For something closer to real time, BotKit's chat now lives on Matrix at #fedify:matrix.org. Drop in and say hello.
  • 🚀 Da oggi il blog di NextRed è federato con ActivityPub!

    Puoi seguire gli articoli direttamente dal tuo account Mastodon (e da altre piattaforme del Fediverso) all'handle:

    @blog

    Ogni nuovo post verrà pubblicato automaticamente. Se provi a seguirmi e noti qualche problema, scrivimi: la federazione è appena stata attivata e ogni feedback è utile.


    🚀 Da oggi il blog di NextRed è federato con ActivityPub!Puoi seguire gli articoli direttamente dal tuo account Mastodon (e da altre piattaforme del Fediverso) all'handle:@blogOgni nuovo post verrà pubblicato automaticamente. Se provi a seguirmi e noti qualche problema, scrivimi: la federazione è appena stata attivata e ogni feedback è utile.#Fediverso #ActivityPub #Mastodon
  • Il Worm CAI scaccia TeamPCP dai server infetti: la guerra nel cloud è appena iniziata

    📌 Link all'articolo : https://www.redhotcyber.com/post/il-worm-cai-scaccia-teampcp-dai-server-infetti-la-guerra-nel-cloud-e-appena-iniziata/

    A cura di Luigi Zullo


    Il Worm CAI scaccia TeamPCP dai server infetti: la guerra nel cloud è appena iniziata📌 Link all'articolo : https://www.redhotcyber.com/post/il-worm-cai-scaccia-teampcp-dai-server-infetti-la-guerra-nel-cloud-e-appena-iniziata/A cura di Luigi Zullo#redhotcyber #news #cybersecurity #hacking #malware #ransomware #cloudsecurity
  • Nothing portrays summer as peaches do. The fragrant smell, and the rich, plump, and juicy peaches, bring summer to our tables with love.

    https://www.giangiskitchen.com/mascarpone-roasted-peaches/?utm_source=flipboard&utm_medium=activitypub

    Posted into Giangi's Kitchen Recipes @giangi-s-kitchen-recipes-giangiskitchen


    @giangiskitchen @giangi-s-kitchen-recipes-giangiskitchen Il mascarpone è un formaggio fresco estremamente ricco di lipidi. Contiene in media circa 40-48 g di grassi ogni 100 g di prodotto, di cui circa 25-32 g sono grassi saturi. Questo profilo nutrizionale lo rende molto più grasso e calorico rispetto alla classica ricotta
  • I promised it, so here it is. This is a recording of littleFedi running on a Raspberry Pi Zero W on NetBSD.

    Everything is on the SD card, the database is SQLite, and caching is enabled.

    Personally, I won't comment on responsiveness or anything else; I'll just say that when I use it (both via the web interface and with apps like MastoBlaster or IceCubes), I find it hard to believe what kind of hardware it's running on.

    Users' sessions (by default, a maximum of 8 users but configurable) are kept "warm" with every interaction or federated activity for 15 minutes since the last login; after that, the server enters "low power mode" and simply processes incoming data without activating the (users' timelines, etc.) cache.

    We don't need to get ripped off for more powerful hardware, which comes with outrageous costs these days.

    We just need to optimize and build efficient software.

    Abundance led to waste.


    per saperne di più →
    @stefano I love this. constraints can lead to amazing creativity and I feel the current ram problems are incredible fuel for more realizations like this.
  • **, i BSD e il Fediverso: sotto il sole, senza nuvole, liberi e connessi. @stefano in collegamento remoto al @devconf

    Apro l'app meteo: geolocalizzazione, uso in background, dati inviati all'azienda e ai suoi «65536 partner commerciali».
    OpenMeteo invece: affidabile, nessuna pubblicità, e ci prende sempre - anche quando le app commerciali ti mandano al mare sotto la pioggia.
    Perché non far arrivare le previsioni, ogni giorno, in forma anonima, nella timeline?

    @devconf@citiverse.it

    https://www.youtube.com/live/nhreRdzRTxo

    (e sì, per ora non si sente l'audio 😩 )


    **#FediMeteo, i BSD e il Fediverso: sotto il sole, senza nuvole, liberi e connessi. @stefano in collegamento remoto al @devconfApro l'app meteo: geolocalizzazione, uso in background, dati inviati all'azienda e ai suoi «65536 partner commerciali».OpenMeteo invece: affidabile, nessuna pubblicità, e ci prende sempre - anche quando le app commerciali ti mandano al mare sotto la pioggia.Perché non far arrivare le previsioni, ogni giorno, in forma anonima, nella timeline?@devconf@citiverse.ithttps://www.youtube.com/live/nhreRdzRTxo#BSD #Fediverso (e sì, per ora non si sente l'audio 😩 )
  • Un WEB per tutte le stagioni. Le alternative per emanciparsi dalle piattaforme proprietarie: @skariko de @lealternative al @devconf

    Il come vero laboratorio federato per bucare la bolla:

    Microblogging alternativo a Twitter/X→ poliversity.it
    Social alternativo a Facebook→ poliverso.org
    Calendario eventi condiviso→ poliverso.org (che oggi è in manutenzione... 😅)
    Discussioni tematiche alternative a Reddit → feddit.it
    Gruppi cittadini alternativi ai “Gruppi Facebook” locali

    @devconf@citiverse.it

    https://www.youtube.com/live/nhreRdzRTxo


    Un WEB per tutte le stagioni. Le alternative per emanciparsi dalle piattaforme proprietarie: @skariko de @lealternative al @devconfIl #Fediverso come vero laboratorio federato per bucare la bolla: Microblogging alternativo a Twitter/X→ poliversity.itSocial alternativo a Facebook→ poliverso.orgCalendario eventi condiviso→ poliverso.org (che oggi è in manutenzione... 😅)Discussioni tematiche alternative a Reddit → feddit.itGruppi cittadini alternativi ai “Gruppi Facebook” locali@devconf@citiverse.ithttps://www.youtube.com/live/nhreRdzRTxo