• chevron_right

      Movim 0.33 "Halley" is Out! sparkles

      Timothée Jaussoin • pubsub.movim.eu / Movim • 2 days ago edit • 5 minutes

    After months of work and hundreds of commits, this is the biggest Movim release ever made.

    This release massively scales up Movim's architecture while introducing long-awaited, and exclusive, new features and accessiblity improvement. Let's dive in!

    Edit: A 0.33.1 was published since then, fixing an issue regarding Spaces. 😉

    A Whole Bucket of New Chat Features 😲

    Spaces: A New Chatting Experience

    For years, one of the main criticisms of XMPP was that it lacked a proper way to group and administrate chatrooms together, as Discord, Slack, or Mattermost allow. In autumn 2025, a base XMPP extension called XEP-0503: Server-side Spaces was drafted. After discussing it with nicoco (the XEP's co-author and maintainer of Slidge) at the latest XMPP Summit in Brussels, a complete implementation was completed in just a few weeks in early 2026.

    Spaces

    Movim is the very first XMPP client to support Spaces, and it is already compatible with ejabberd. Prosody support is coming very soon!

    If you are curious about how it works and how to set up your XMPP server, a detailed blog post has been published: Let's Talk About Spaces in XMPP 🌌.

    Spaces come with a complete redesign of the Movim layout and navigation flow, on both desktop and mobile. Publications, Spaces, and chats are now accessible in one or two clicks thanks to reorganized navigation bars, while secondary elements such as settings and administration have been moved to a dedicated drawer menu.

    Shortcuts

    The new chat navigation bar also includes Shortcuts. In the top-left corner of your screen, you will find your 3 most recent message notifications, and you can open any conversation directly by clicking on them.

    Shortcuts

    This menu is also accessible from any page on your desktop.

    Hats 🎩

    It is now possible to create custom roles in your chatrooms and assign them to members. This new feature, called Hats, is based on XEP-0317: Hats, which was rewritten a few months ago.

    Hats

    The feature is still in its early stages and will be improved and integrated into Spaces in the upcoming release.

    Swipe to Reply

    A small but very useful addition: on mobile, you can now reply to a message by swiping it to the left. Pretty convenient 😋.

    Videoconference

    Movim continues to improve its video-conferencing capabilities with each release, and Halley brings a number of improvements and fixes.

    When multiple browsers are connected to a single Movim session, calls are now properly handled: only one browser can answer or initiate a call at a time, and you can hang up from any of them.

    Categorizing Content During Calls

    The new XEP-0507: Jingle Content Category allows XMPP clients to define what kind of content they are sharing. For example, your webcam is defined as speaker, while a shared screen is tagged as slides.

    This XEP is now implemented in Movim and will be used more extensively in upcoming releases.

    Audio and Screen Sharing

    When sharing your screen, you can now also share your computer or phone audio. This is particularly useful when streaming a video game or a video to your contacts.

    Screen sharing

    The call layout has also been improved and reorganized for screen sharing sessions.

    Architecture and More

    Introducing Multi-Session Workers 🚀

    Halley brings the biggest architectural change to the project since 2014: multi-session workers.

    This is the result of several months of intensive work, touching hundreds of files across the Movim codebase.

    Movim is moving from a one-session-per-process architecture to multiple sessions per PHP process. This greatly reduces RAM consumption and database connections with negligible impact on overall performance.

    After testing, Movim now handles 8 sessions per worker, roughly 80% less RAM usage compared to the previous version, while maintaining the same speed and stability. A connected user now takes approximately ~10 MB of memory.

    A new daemon command provides a clear overview of workers and sessions:

    The workers

    Refactored Notifications

    All notifications are now handled through a single unified flow. They are pushed in the background when Movim is closed, or shown in the foreground when it is open.

    This refactoring also introduced new features such as action buttons and more detailed notification statuses. You can, for example, directly answer or decline an incoming call from the notification itself.

    New Administration Tools

    Administrators can now set a maximum limit on the number of connected users for their instance. Even though Movim is now much lighter than before, limiting the number of users on a server can still be useful.

    The max users limit

    New ClearImagesCache Daemon Command

    This admin command clears all internal Movim image caches. Movim normally handles cache clearing on its own, so this command is only needed when you need to rebuild your instance after a crash or significant misconfiguration.

    After restarting the daemon and reconnecting XMPP accounts, Movim will attempt to re-download all available pictures from XMPP. This can take time and put significant pressure on the XMPP network on large instances, so it is advised to use this command sparingly.

    Improved Accessibility

    Following the recommendations from the HAN Accessibility Lab and supported by NLNet funding, I undertook a significant rewrite of several interface components to better support visually impaired users and screen readers.

    While there is still work ahead, the core layout and main features now offer much improved keyboard navigation.

    Tab navigation

    Feedback is very welcome! If you have suggestions or run into any issues, please open a ticket on GitHub.

    Introducing Miho and Stash, Our Two New Mascots!

    This major release doesn't just bring new features, it also comes with a new logo and two new mascots ✨

    The logo has been simplified and modernized, and now fits much better across all configurations:

    The Movim logo

    Miho and Stash, illustrated by the very talented Rimou, now grace the redesigned website and will be part of Movim's visual identity for years to come 😸.

    This release also includes an exclusive pack of 16 new stickers to celebrate the occasion!

    The Miho and Stash stickers pack

    A Big Funding Campaign for 2026!

    For the past 15 years, I have been dedicating my free time to maintaining Movim, and I hope to continue doing so for many years to come.

    Each year, I incur various expenses to keep the project running. I also travel by train to attend hackathons where I can discuss the XMPP protocol and contribute to Movim's development.

    Additionally, since 2018, I have reduced my regular work schedule to 80% in order to dedicate at least one day per week to the project.

    I wrote a detailed blog post outlining the costs and goals for this year: Fund Movim in 2026 to Reach the Goals.

    If you'd like to help me spend more time on Movim and keep bringing exciting new features, please check out the Fund Movim section on the official website.

    That's all, folks! ✨

    #movim #xmpp #release #spaces

    • chevron_right

      Let's Talk About Spaces in XMPP milky way

      Timothée Jaussoin • pubsub.movim.eu / Movim • 5 March 2026 edit • 11 minutes

    It looks like we're finally there!

    Spaces in XMPP is now a thing and it's part of Movim, yay 🎉

    In this article, I'll explain what Spaces are in XMPP, how Movim is implementing them, how you can deploy and host your own Spaces, and what still needs to be done.

    tldr; Spaces in XMPP are implemented using Publish-Subscribe and Multi-User Chat, two XMPP extensions that are already available and largely implemented and are defined in details in XEP-0503 Spaces.

    A Bit of XMPP History

    There are basically two ways to send a message in XMPP: by sending a direct message to a contact, or by sending it in a chatroom.

    Direct chat messages were defined in the core XMPP protocol in the late nineties. Since XMPP is an eXtensible Messaging and Presence Protocol, chatrooms were defined a few years later, in 2002, in one of the first fundamental extensions of the protocol: XEP-0045: Multi-User Chat (XEP stands for XMPP Extension Protocol, pretty self-explanatory 😛).

    Also in 2002, a second fundamental extension was specified: PubSub, defined in XEP-0060. This extension defines a way to create "nodes" on the XMPP network where users can publish content and subscribe to it. Newly published, edited, or deleted content is then pushed to the node's subscribers in real time.

    And this worked well for many years. Those two principles were implemented, improved, and extended over nearly two decades.

    Movim was introduced in 2010 with the idea that, while being a web-based XMPP chat client, it could also make extensive use of PubSub to share social content and related features across the XMPP network. And that worked out really nicely, a PubSub node can be seen as a news feed where users can publish articles (defined in XEP-0472: Pubsub Social Feed) and, more recently, Stories (defined in XEP-0501: Pubsub Stories), and where other users can subscribe and be notified in real time about new content.

    Bookmarking Things on XMPP

    When you join a chatroom or subscribe to a PubSub node on the XMPP network, it's convenient to keep track of your subscriptions so that your XMPP clients can stay in sync. Just as browsers let you bookmark URLs to save websites you want to revisit, the bookmarks concept was introduced in XMPP.

    For PubSub subscriptions, this was defined in 2013 in XEP-0330: Pubsub Subscription.

    The following example is essentially a bookmark pointing to the Movim blog you're currently reading, stored on Salim's XMPP account.

    <iq type='result'
        from='salim@xmpp.ps'
        to='salim@xmpp.ps/fairphone'
        id='bget1234'>
        <pubsub xmlns='http://jabber.org/protocol/pubsub'>
            <items node='urn:xmpp:pubsub:subscription'>
                <item id='0bc0e76cb803b3b107aa369169d8c0d45086f844'>
                    <subscription xmlns='urn:xmpp:pubsub:subscription:0' server='pubsub.movim.eu' node='Movim'>
                        <title>Movim Blog</title>
                    </subscription>
                </item>
            </publish>
        </pubsub>
    </iq>
    

    Note that PubSub bookmark items are stored in a PubSub node hosted on your own account (here salim@xmpp.ps) 😸. This way, when a new bookmark is pushed by one client, all other connected clients for that account are notified in real time, and if they're offline, they simply fetch the list when they reconnect.

    For chatrooms, things work similarly. The rooms you've joined are stored in a dedicated PubSub node on your own account, as defined in XEP-0402: PEP Native Bookmarks.

    <iq type='result'
        to='pooja@jabber.in/phone'
        id='bget192121'>
      <pubsub xmlns='http://jabber.org/protocol/pubsub'>
        <items node='urn:xmpp:bookmarks:1'>
          <item id='patel_family@conference.jabber.in'>
            <conference xmlns='urn:xmpp:bookmarks:1'
                        name='Family Room'
                        autojoin='true'>
              <nick>Pooka</nick>
            </conference>
          </item>
          <item id='friends@conference.movim.eu'>
            <conference xmlns='urn:xmpp:bookmarks:1'
                        name='Friends Group'
                        autojoin='true'>
              <nick>PK</nick>
              <extensions>
                <pinned xmlns='urn:xmpp:bookmarks-pinning:0'/>
              </extensions>
            </conference>
          </item>
        </items>
      </pubsub>
    </iq>
    

    As you can see, bookmarks can have extensions. Here, the second chatroom "Friends Group" is pinned, which means clients will display it at the top of the list.

    Rooms and PubSub Affiliations

    Both chatrooms and PubSub nodes use the concept of affiliations, essentially roles assigned to users once they join a chatroom or PubSub node, which determine what actions they are allowed or forbidden to perform.

    In PubSub, affiliations are defined in section 4.1 Affiliations, and in Multi-User Chat in section 5.2 Affiliations. Those links contain the full details of each role's privileges.

    The great thing is that these two affiliation systems are actually quite similar! Chatrooms have Owner, Admin, Member, and Outcast affiliations, while PubSub has Owner, Publisher, Publish-Only, Member, and Outcast. This will come in handy later, as you'll see 😽.

    Introducing Spaces ✨

    Over the last few years, a new way of organizing chatrooms has emerged, first introduced by Slack, then adopted by Discord, Mattermost, Matrix, and many other chat platforms.

    As messaging grew more prominent, users needed more than a simple chatroom for sharing messages. They wanted to organize and categorize the content they were exchanging with others.

    This is where the concept of Spaces came in. Called Servers (or Guilds) on Discord, Workspaces on Slack, or simply Spaces on Matrix, the general idea is to let users create a shared place, and invite people to it, where they'll find a collection of chatrooms grouped together with a unified moderation system and a coherent user interface.

    This had been missing from XMPP for a long time.

    In autumn 2025, I organized a hackathon with my friend nicoco from the Slidge project to tackle this problem. Slidge is a great tool for bridging XMPP with many other chat protocols. I wanted to add Spaces to Movim, and he wanted a proper way to map Discord Servers and similar concepts to XMPP.

    After a few weeks of discussions, we published XEP-0503: Server-side Spaces, which was then presented at the XMPP Summit in Brussels in February 2026.

    So What Exactly Is It in XMPP?

    XMPP is all about reusability and extensibility. As the saying goes: "it's in old pots that we make the best jams."

    If you understood the XMPP concepts introduced in the previous sections, you'll see that Spaces in XMPP simply reuse them, defining a way to combine existing building blocks in a coherent way.

    Wait, is that all? Yes, pretty much 😸. XMPP already had most of the features needed for Spaces; we just needed some glue and careful thought to put the right pieces together.

    So what is a Space? A Space is essentially a shared, mixed PubSub bookmark node.

    Just as a user stores their own personal bookmarks on their own account, an XMPP user can create a "Space node" on a dedicated public PubSub server and invite others to it.

    <iq type='result'
        from='megacorp-pubsub.example.com'
        to='emacs-user@megacorp.example.com/cool-client'
        id='space-items'>
      <pubsub xmlns='http://jabber.org/protocol/pubsub'>
        <items node='dev'>
          <item id='programming-socks@conference.megacorp.example.com'>
            <conference xmlns='urn:xmpp:bookmarks:1'
                        name='Share your best programming socks deal HERE'>
              <extensions>
                <pinned xmlns='urn:xmpp:bookmarks-pinning:0'/>
              </extensions>
            </conference>
          </item>
          <item id='editors@conference.megacorp.example.com'>
            <conference xmlns='urn:xmpp:bookmarks:1'
                        name='Settling the text editor wars'>
            </conference>
          </item>
          <item id='some-hash'>
            <subscription xmlns="urn:xmpp:pubsub:subscription:0"
                          server="megacorp-pubsub.example.com"
                          node="dev-announcements" />
          </item>
          <!-- other items -->
        </items>
      </pubsub>
    </iq>
    

    A PubSub node can have different access models. The Spaces XEP defines three of them: open, authorize, and whitelist.

    • open: anyone can discover, list, and subscribe to the Space.
    • authorize: a user can request to join the Space.
    • whitelist: a Space owner manually adds new users; join requests are not allowed.

    For now, Movim only implements the authorize flow, which allows you to create private Spaces with an invitation "key" (essentially the URI of the Space on the XMPP network). The whitelist model, useful when you don't want to deal with join requests, should be implemented shortly after.

    open Spaces will require a bit more work, as they may involve additional moderation features.

    Let's start small and simple 😽

    Another current limitation is XMPP server support. Prosody doesn't implement the authorize access model yet, so the Spaces feature is only fully working and tested with the ejabberd server. The Prosody developers are aware of this and are working on it 👀.

    How to Create a Space in Movim?

    To create a Space, Movim needs two things:

    • An available chatroom service on your XMPP server. This is usually already present, as it's a widely deployed feature on the XMPP network.
    • An available PubSub service on your XMPP server whose name starts with spaces. (e.g., spaces.movim.eu). Why this specific requirement? Because XEP-0462: PubSub Type Filtering, which would allow a client to filter PubSub service nodes by type, is not yet implemented. Without it, created Spaces would be mixed in with other PubSub nodes. Using a dedicated service keeps things clean and separate for now.

    If you need to set up your own Spaces PubSub service on your XMPP server (ejabberd only for now, though this may change), we've documented the required configuration on the Movim Wiki.

    Once Movim detects both of these, you'll be able to create a new Space from the user interface 😸!

    How to Join a Space in Movim?

    To join a Space in Movim, one of the Space's owners or members shares the Space "key" with a contact. A key looks like this:

    xmpp:spaces.movim.eu?;node=6mUb3XUw
    

    It's an XMPP URI where the first part is the XMPP service hosting the Space, and the node part is the Space's identifier.

    The contact then opens the New Space form in the Movim sidebar and pastes the key. This is very similar to the Discord invitation link flow.

    The Space invitation form

    Movim then does two things:

    • Adds the Space bookmark to the user's personal Spaces bookmarks node. This new private bookmark node is not yet standardized (it's currently located at {https://movim.eu}spaces_subscriptions_node), but it will be added to the Spaces XEP (or a related one) soon.
    • Sends a subscription request to the PubSub node.

    The Spaces PubSub service then returns a pending message.

    <iq xml:lang='en' to='pooja@jabber.in/Movim' from='spaces.movim.eu' type='result' id='t1Os56cXzKmW'>
        <pubsub xmlns='http://jabber.org/protocol/pubsub'>
            <subscription subscription='pending' node='6mUb3XUw' jid='pooja@jabber.in'/>
        </pubsub>
    </iq>
    

    In the meantime, a private message is sent to all Space owners, who can then accept or deny the request.

    The Space request

    The Space will appear as locked 🔒 in the navigation bar until the request is approved.

    Once approved, Movim receives a notification and discovers all the Space's content, including related rooms, and connects to them.

    A nice Movim Space

    Trickle-Down Affiliations

    While trickle-down theory doesn't hold up in economics, it turns out to be quite useful for synchronizing affiliations between Spaces and their rooms.

    When an owner adds a new room to a Space, Movim lists all Space members and owners and sets them as members and owners of the new room respectively.

    Similarly, when a new member is added, or when an owner promotes another user to owner, Movim propagates that change across all rooms in the Space.

    This is currently handled by Movim itself, but one could imagine a dedicated Space module on the server side that enforces this and prevents client-side synchronization errors, while also reducing the number of small queries required to keep things in sync.

    What About Notifications?

    XEP-0492 defines a bookmark extension that allows clients to manage notification settings for incoming room messages. Movim already implements this. It defines three global states: never, on-mention, and always.

    Since Spaces are stored as PubSub node bookmarks, this extension can be reused to define a global notification setting per Space!

    The Space configuration

    XMPP is always about recycling features to build new ones ♻️!

    What's Next?

    The current implementation is basic but it works! Over the coming weeks and months, many features will be added and refined to deliver a more fluid and stable user experience.

    As mentioned above, there are plans to flesh out access model management and affiliations further, and to support public Spaces soon-ish 😽.

    Most of the existing features are already standardized, but a few smaller details and flows will be written up in new XEPs or completed in existing ones.

    Issues will also be filed with various XMPP server projects to ensure that most XMPP servers can host and manage Spaces in the future. And it would obviously be great to see other XMPP clients implement the feature too 👀.

    In Movim, the Next Big Thing™️ will be to (finally) add dedicated audio rooms, and maybe video later, to Spaces, so that members can talk to each other with a single click.

    Fund the Next Awesome Movim Features 🫶

    All the work on Spaces was done in my free time over the course of a couple of weeks. I'd love to free up more time to keep fixing bugs and adding exciting new features to Movim.

    If you'd like to support Movim and help accelerate the project's development, I've launched the "Fund Movim for 2026" campaign on the main website.

    A huge thank you to all existing supporters, I hope you enjoy all these new features, and the ones still to come ✨

    That's all, folks!

    #xmpp #movim #discord #spaces

    • favorite

      cochise, Blue, tuskun, neox, marzanna, dumont, elhemka, cmdrzal, divya, thebeardmancer, thealexstewart, koimoji, april, Masked Lilith, debacle, povoq, albi.lee, delonium, rako, appiah, krwl, lyn1337

    • 8 Comments

    • 5 March 2026 Masked Lilith

      Sometimes it's tempting to migrate over to ejabberd thinking face

    • person

      5 March 2026 koimoji

      This is awesome! I'll wait a little longer until Prosody implements this.

    • person

      6 March 2026 delonium

      Nice party popper

    • person

      6 March 2026 thealexstewart

      Glad to see this happening!

    • person

      6 March 2026 cmdrzal

      Awesome to see! Thank you so much for working on this!

    • person

      6 March 2026 baner

      Hopefully prosody will update before of spaces release. Thinking about going to ejabberd.

    • person

      6 March 2026 neox

      Good job! I can't wait to test that and the new features that'll come soon :D

    • person

      6 March 2026 cochise

      Great news! Kudos for the work.

    • chevron_right

      Multi-sessions workers star-struck

      Timothée Jaussoin • pubsub.movim.eu / Movim • 26 February 2026

    I'm deploying this morning on https://mov.im/ the biggest architectural change since 2014: multi-sessions workers 😳

    This means that Movim is moving from a one-session = one process architecture to multiple-sessions per PHP process. This will greatly reduce the RAM consumption and database connections while having negligible impacts on the global performances 🚀

    I am testing 4 sessions/worker at the moment, so a -75% RAM usage but we might do more sessions if things runs great ✨

    A new daemon command allows you to have a nice overview of the worker and sessions 👀

    #movim #xmpp

    • chevron_right

      Help Movim Reach Its Goals for 2026 sparkles

      Timothée Jaussoin • pubsub.movim.eu / Movim • 19 February 2026 edit • 6 minutes

    tldr; Movim is getting many exciting new features and is looking for your financial support to cover costs and free up development time.

    2026 is shaping up to be a landmark year for Movim.

    When I launched the project in 2010, I never imagined how significant it would become for so many communities, individuals, and for me personally.

    What started as a small hobby project quickly turned into something that occupies nearly every week of my life: fixing bugs, adding new features, redesigning the user interface…

    Here's a screenshot from the project's introductory conference in Bordeaux back in 2010. 😸

    Movim at the RMLL 2010 in Bordeaux

    Fast forward 15 years: in 2025, the project reached 10K commits, packed with exciting new features documented on the official blog. 🥳

    2026 Goals

    Most of the features below were presented at my FOSDEM talk in Brussels, you can watch it here: Movim: Building a Decentralized Social Network on XMPP.

    The "Bye Bye Discord 👋, Hello Movim ✨" Campaign

    Following recent changes to the Discord platform, many users have been wondering whether Movim could serve as a viable alternative. A short poll published on Mastodon received over 600 responses, revealing strong interest in features that Movim is currently missing.

    Everything is explained in detail in this dedicated article.

    Spaces 🌌

    This will likely be the biggest feature added to Movim this year; and in just one (very busy) week, the foundation is already in place! There's still plenty left to do, though. 😉

    The goal is to release, within the next few weeks, a new version featuring a working initial implementation of the XMPP Space Extension, which I helped standardize last year alongside my friend nicoco.

    Early Spaces preview

    Here's a first look at the development version. 👀

    A Space will let you create a dedicated environment where you can invite friends or colleagues to chat, organize a list of rooms, and manage roles, invitations, and calls. All in one place.

    Spaces will initially be private and invite-only, with public Spaces potentially offered once everything is stable.

    I'll share more details in upcoming blog posts.

    Audio Rooms 🎙️

    Once the first iteration of Spaces is live, audio rooms will be the first feature built into them. This will allow users to drop into a room listed within one of their Spaces and talk with everyone else present.

    This was also one of the most-requested Discord features, and I can't wait to start building it.

    Initially, audio rooms will be fully peer-to-peer. Audio scales well this way, meaning your stream is sent directly to the other participants. I'm also still working on SFU support for Movim, funded by NLNet, which will allow audio rooms to scale massively in the future. 🚀

    Video Calls and SFU Support 📹

    Significant improvements and fixes to video calls in Movim were made recently. Movim can now share your desktop or application audio when screen sharing is enabled.

    Screen sharing feature in Movim

    This is perfect for streaming a gaming session with friends or maybe even watching a movie together. 😍

    Here too, SFU support will be a game-changer, enabling audio and video calls with dozens of participants.

    (Major) Memory Optimization

    As outlined in a previous blog post, significant work is underway to allow Movim to share memory between connected users, dramatically reducing total memory consumption by around 80% initially.

    Once deployed, this should allow me to comfortably handle at least 1000 concurrent Movim sessions on mov.im (the movim.eu XMPP server behind it can handle considerably more).

    These changes are nearly complete, and I'm hoping to merge them into the main branch within the coming weeks.

    Help Movim Reach Its Goals!

    All of these features will keep me busy for many months. The main thing holding me back from focusing even more on the project is time. I'd also like to start covering some of the expenses I've been personally absorbing for years to keep the project running.

    That's why I'm launching the "Fund Movim 2026" campaign. 😊 A progress bar has been added to the homepage to track the current status, and I'll share updates throughout the year.

    In the spirit of full transparency, here's a breakdown of the goals.

    Operational Costs: ~€1,000/year

    I've been covering most of the project's costs out of my pocket since the beginning. After checking up my accounts, I found I spend an average of €1,000 per year on it.

    • Roughly €180/year in domain names (yes, I own several to prevent cyber-squatting).

    • €35/month (€420/year) for the server in Germany that hosts mov.im, the movim.eu and jappix.com XMPP servers, and all account data stored on them (files, blog posts, messages).

    • €400 in design help from my friend Rimou in 2025–2026. He's responsible for all the mascots, stickers, and illustrations you've seen around the project over the past few months.

    Travel Costs: ~€750/year

    Each year I try to attend the XMPP Summit in Brussels (just before FOSDEM) to discuss and help standardize XMPP, as well as at least one XMPP hackathon with other developers.

    I genuinely enjoy these events, they help ensure that Movim remains fully standards-compliant and compatible with other clients and servers in the XMPP ecosystem as well as discussing and briging new exciting ideas in the community.

    I travel exclusively by train and bicycle. Movim is a low-carbon project. 🌍🫶

    • A 4-day trip to Brussels (XMPP Summit + FOSDEM) costs around €500 (€200 for the train, €300 for accommodation).

    • A 2-day hackathon costs around €250 (mostly train fares), this year's hackathon will actually be hosted at my place! 😉

    Funding More Free Time

    Honestly, I'd already be thrilled if the community could just cover my basic costs.

    Back in 2018, I chose to reduce my day job to four days a week in order to free up one day per week for Movim. But as you may have noticed, I tend to contribute a little more often than that. 🤭

    GitHub contributions

    I did some math: that one day per week devoted to Movim would be worth around €650/month if I were working full-time. So I'm adding two new funding goals: one to cover half a day per week, and one to cover the full day I currently dedicate to the project.

    It's an experiment… let's see how it goes. 😄

    Here's a preview of the donation progress bar on the movim.eu homepage. 🌡️ 🪙

    The donation bar

    How Can You Help?

    As you may have noticed, I'm not offering any perks or rewards in return (except the opportunity for your company to be listed as a sponsor on the Movim page). No badges, no lifetime subscriptions, no premium access. I might send stickers to interested supporters once they're available, though. 👀

    I'm also not interested in hosting thousands of accounts; I'd rather see the network continue its organic, federated growth. (Speaking of which, if you're an instance admin, please don't forget to add your server to join.movim.eu. We've found that many aren't doing this. 😶)

    My goal is simply to keep having fun while building a free, fully decentralized social platform for everyone and to keep delivering exciting new features through a clean, intuitive interface.

    If you'd like to help Movim grow and reach its 2026 goals, here's how:

    • Donate using Liberapay: a goal was set to 35€/week, which roughly cover the operational and travel costs through the year.
    • Become a Movim Patron: two tiers available: one at €3/month (the price of a Discord Nitro subscription… quite the coincidence 🤭) and one at €30/month, which gets your name or company listed as a Movim sponsor on the movim.eu homepage.
    • If you prefer a one-time donation, I also have a PayPal. It's a bit harder to track contributions there, so Patreon is preferred if possible. 😉

    If you have other ideas or would like to contribute in a different way, you know where to find me.

    As always, and especially this time, please share this article and spread the word with your friends!

    In the meantime, back to work. There's a lot to do. 💪

    That's all, folks. ✨

    #movim #xmpp #funding #donation #discord

    • chevron_right

      A (big) memory incoming memory optimization in Movim hushed face

      Timothée Jaussoin • pubsub.movim.eu / Movim • 13 February 2026

    Before announcing some new exciting features for the users lets talk about the big incoming change for the admins in #Movim 🧑‍💻✨

    Movim used to have a "one user = one php worker" policy. The sourcecode was fully refactored to isolate user sessions in those workers allowing worker to host several users!

    This is the biggest architectural change in Movim since its full real-time rewrite of 2014 🤯

    The goal of this change is simple: by having several users / worker most of the "Movim code" is shared, lowering the memory usage.

    We are testing a 4 users/worker policy. Which saves 75% of RAM, pretty neat no?

    There is still some quirks to fix, but it's coming soon 👀

    #xmpp #memory #optimization

    • chevron_right

      Bye bye Discord waving hand, hello Movim sparkles

      Timothée Jaussoin • pubsub.movim.eu / Movim • 12 February 2026 edit • 1 minute

    Discord is rolling out an age-verification system on its platform and preparing for its IPO in March 2026.

    Beginning with a phased global rollout to new and existing users in early March, [Discord] users may be required to engage in an age-verification process to change certain settings or access sensitive content. This includes age-restricted channels, servers, or commands and select message requests.

    A Discord meme

    Today we are launching our very first campaign to help you to migrate from Discord to Movim.

    To start with we did a little poll to ask you what you would like us to add to the platform to make you feel like home when joining in from Discord... and we were actually very surprised by the amount of answers we got!

    A screenshot from the poll

    So let's do it! 💪

    Some exciting features were already added the past few days and more compelling ones will come in the upcoming weeks 👀!

    We would like to have all the support we can to help us in the process so spread the good news around, follow us on Mastodon, subscribe, deploy a new Movim instance and invite your friends.

    If you can we would be really pleased if you joined as a Supporter on Patreon... for the price of a monthly Discord Nitro subscription, 3€/month 😸.

    This little extra money will help us free more time to focus on all those new exciting features and really build the best comfy nook for you, your friends, family or colleagues.

    Stay tuned, a lot of exciting stuff are coming soon 😁

    That's all folks!

    #xmpp #discord #movim #campaign #patreon

    • link

      Movim (@movim@piaille.fr)

      You wan't to move from #Discord to #Movim and #XMPP, but you really miss one or two core feature? I'll work the next few weeks on some of those missing features to help you and your community to migrate ✨ So what do you miss the most? #migration #question [ ] 🎙️ Audio rooms (Teamspeak/Mumble like) [ ] 📹 Video calls with several friends (like Jitsi) [ ] 👾 Spaces (like Discord servers, grouped rooms) [ ] 👀 Something else, add it in the comments bellow

    • Pictures 2 image

    • visibility
    • visibility
    • chevron_right

      Here comes Movim 0.32, codename Wilk! party popper

      Timothée Jaussoin • pubsub.movim.eu / Movim • 16 November 2025 edit • 5 minutes

    This might be one of the biggest #release ever made on the project, and it includes numerous fixes and new features in the 3 major topics Movim offers: instant messaging, social networking, and video conferencing.

    Let's cut the blabla and dive directly into the exciting things you can find in this release. 😸

    Blog and Communities

    Follow everyone!

    As explained with plenty of details in our previous article, The difference between XMPP and ActivityPub, explained through the Blog feature, we completely changed the way you can follow someone on the XMPP network to get notified about their blog publications.

    Until now, blog subscriptions were "implicit" in the sense that you needed to send an invitation and have the contact in your contact list to allow the blog subscription to be effective.

    In the new flow you now have two buttons, one to add a contact in your contacts list and one to follow its publications, and they are fully independent. 👌

    The new way to follow and/or add a contact

    The new "Follow the Contact" feature is then close to what you could find for many years with the "Follow the Community" one.

    A couple of tickets were opened on the ejabberd and Prosody bug trackers to complete their XEP-0060: Publish-Subscribe implementation (the XMPP extension that defines the bases of all the social features on XMPP; see the article linked above for all the details). Once those features are implemented server-side, Movim will be able to notify you about a new follower and give you follower statistics on all the blogs (including yours in real-time).

    Improved post publications

    Movim now allows #PeerTube videos to be embedded in your articles; to do so, just attach a PeerTube link to your article, and Movim will take care of embedding the video directly in your publication.

    When publishing a post, #Movim allows you to write your article in Markdown to format it. Movim now supports GitHub Flavored Markdown that allows you to format your articles, like including tables, advanced links, and images customizations, and even more!

    Know Your Privacy Settings

    Movim allows you to configure in detail how you want to share your content with the world, with two important settings:

    • Make your profile public or private on the Movim instance you're on, with the possibility to define a local nickname. This will allow other users of the instance to find you in the Global Search feature.

    • Make your blog public or private to only restrict its content to your contacts... or open it to everyone.

    In this release some information cards were added to ensure that the user is aware of the current configuration while browsing their own profile.

    Info boxes about the account privacy

    Share, like, and comment on articles more easily.

    You can now pick several friends or chatrooms you're in when sharing an article.

    Articles are now better embedded in the chats, and the likes and comments flows and layout have been completely redesigned to be more practical, especially on mobile.

    The articles' footers were redesigned to improve and simplify all the interactions you can have with them.

    The new post footer was reorganized.

    Chats and Chatrooms

    Message history navigation and search

    Browsing and searching in your chat conversation history is now simpler than ever!

    Many message history issues were fixed. In this release, Movim is keeping track of the earliest message received in your discussions and then knows exactly when it needs to request your #XMPP server for more messages (or not) when scrolling up.

    If you use PostgreSQL, each message is now indexed and can be searched instantaneously using keywords in our new Search History feature.

    On the screenshot below, the user is browsing old messages and can go "back to the future" easily with the bottom right button.

    You can also see the new "chat navigation bar" that is listing the currently connected users in chatrooms; this sets the base for many upcoming exciting features around chat administration and user exploration and discovery 😉.

    Browsing old messages

    End-to-End Encryption and Bridges Integration

    On a more technical note, the OMEMO-related code was completely redesigned and simplified. This fixes numerous issues we had with key synchronization and message decryption. There are still some improvements to do, especially on the encryption library itself (but it looks like Converse.js is working on it) but this is already a huge step in the right direction. 😎

    During the summer a lot of work was also done with the Slidge developers to improve the bridges' integration in Movim, including many fixes around stickers and GIF integration, chatroom management, and account linking administration.

    Video-conferencing

    A lot of optimizations were done in the video-conference stream management. Movim is now adapting and compressing more of your video streams if it detects that the network is degrading during the call. The resolution and frame rate are also reduced on some low-end devices to allow them to handle the calls properly.

    Movim now also proposes H.264 streams first when negotiating with your contacts. Lots of devices, including mobiles, can encode and decode video with dedicated hardware, drastically reducing power consumption and overheating while doing so. Naturally it falls back to other formats (VP9, VP8) if it's not possible to have H.264.

    This also improves the general video quality during a call for a generally lower bitrate.

    VP8 vs. H264

    Some tests are planned to push the next generation video format, AV1, that will push those boundaries even further 😋.

    Internal changes and general changes

    The core internal code was also heavily refactored and simplified the past few months. A lot of hacks and workarounds were removed with the redesign of the interaction of the Movim user-interface part and the XMPP handling part. This also improves some performances during navigation and when interacting with your content.

    The Movim architecture was also redesigned to simplify the container integration. You can now build and deploy a Podman container on your machine for testing purposes in one unique console command; check out the related documentation.

    In this release, Movim dropped the php-curl dependency by relying on reactphp/http, which was already offering similar features.

    When uploading a file or picture, Movim gives you detailed feedback on every step of the upload, compressing the picture, sending the file to Movim, and Movim sending the file to your XMPP server.

    And to finish, lots of details in the layout and interface were improved and redesigned to fit with the Material Design 3 design system, this allows Movim to integrate even better with Android devices.

    What's next?

    Movim 0.32 set the bases of lots of very exciting things for 2026.

    We are planning to work on many exciting things including chat discussion threads, persistent video conference calls, chatroom roles, Spaces, scaling up video conference calls, and many other things ✨.

    Releases after releases Movim is becoming a coherent, simple, and feature-complete platform for all your social interactions while being federated and 100% built on standards.

    We really need your help to free up more time to work on it and integrate all the upcoming more exciting features, as well as cover our existing expenses (servers, travelling to technical meetups, goodies...). You can support us in many way by joining our Patreon, doing a single donation or becoming a, official sponsor of the project.

    Of course, you can also share the good news around, join Movim and invite all your friends on it 😸!

    That's all, folks. ❤️

    • chevron_right

      Timothée Jaussoin • pubsub.movim.eu / Movim • 9 November 2025

      Movim is (finally!) having a members bar in its chatroom view sparkles

      This will allow you to know who is online in a glance... and set the bases of upcoming exciting features billed cap !

      Feature after feature Movim is becoming a serious alternative to centralized services such as Discord, Telegram or Slack ♥️

      You can already try it out on https://mov.im/ grinning cat with smiling eyes!

      #movim #xmpp #feature #chatroom #federated