<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Pimalaya blog</title>
    <link>https://blog.pimalaya.org/</link>
    <description>Half-technical articles on Pimalaya, the open-source PIM tools in Rust.</description>
    <language>en</language>
    <atom:link href="https://blog.pimalaya.org/feed.xml" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Mon, 03 Aug 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>The story behind Pimalaya</title>
      <link>https://blog.pimalaya.org/the-story-behind-pimalaya/</link>
      <guid isPermaLink="true">https://blog.pimalaya.org/the-story-behind-pimalaya/</guid>
      <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
      <description>A Vim plugin that had no business managing mail, the backlash and the love it got, and the split between UI and logic that became a whole project.</description>
      <content:encoded><![CDATA[<p>Pimalaya is today a constellation of low-level libraries, CLIs, TUIs and mobile apps around personal information management. But it did not start as a project, nor as a plan. It started as a Vim plugin that had no business existing.</p>
<h2>Mails inside Vim</h2>
<p>Years ago I discovered Vim, and like many people who fall into it, I fell hard. Once your editor becomes the place where you think, you want everything in it: notes, tasks, code, and, in my case, mails.</p>
<p>So I wrote <a href="https://github.com/soywod/iris.vim">iris.vim</a>, a plugin to manage mails inside Vim. Reading, replying, archiving, without leaving the editor.</p>
<p>The reception was… polarized. Some people hated me for torturing Vim: it is a text editor, not a mail client, and the plugin ecosystem was never meant to carry a mail workflow. Others loved the concept: their editor was already their home, and mail was the one thing still dragging them elsewhere.</p>
<p>Both sides were right, and that tension turned out to be the founding insight of everything that came after.</p>
<h2>Splitting the UI from the logic</h2>
<p>The critics had a point: Vim is a terrible place to <em>implement</em> a mail client. Fetching, parsing, encoding, talking to servers: none of that belongs in a plugin. But the lovers had a point too: Vim is a wonderful place to <em>display</em> one.</p>
<p>This is where I started to split the UI from the logic. The domain (everything mail knows how to do) should live outside the editor, in a proper program. The editor should only be a frontend: buffers in, keystrokes out.</p>
<p>Once the logic is its own program, the frontend becomes swappable. Vim today, something else tomorrow.</p>
<h2>A CLI, in Rust</h2>
<p>The shape of that program came naturally: a command-line interface. I had wanted to learn Rust for a while, and a mail CLI fit perfectly: innovative (the terminal mail world was full of TUIs like mutt, but a plain, scriptable CLI was rare), the right size for learning a new language, and exactly the backend a Vim frontend needed. The plugin would just shell out and render the output.</p>
<p>That CLI became <a href="https://github.com/pimalaya/himalaya">Himalaya</a>.</p>
<h2>Then it grew</h2>
<p>The CLI was supposed to be the end of the story. It was actually the beginning, and the same splitting instinct kept applying itself one level down:</p>
<ul>
<li>The email logic was extracted from the CLI into a dedicated library, so other tools could reuse it.</li>
<li>The protocol logic was extracted from the email library into low-level libraries (IMAP, SMTP, and friends), so the email layer itself became swappable.</li>
<li>A TUI joined the CLI, proving the point of the whole architecture: same logic, another frontend.</li>
<li>Then other PIM domains knocked on the door: if it works for mails, why not contacts? Why not calendars?</li>
</ul>
<p>At some point this stopped being &quot;the Himalaya ecosystem&quot; and became its own project: Pimalaya.</p>
<h2>Here we are</h2>
<p>Today Pimalaya is full of low-level libraries, and fully mail-capable: Himalaya CLI, a TUI, mobile apps on the way. Contacts are coming next, then calendars.</p>
<p>The plugin that tortured Vim is long gone, but its lesson is load-bearing in everything we build: the domain logic lives in reusable layers, and the UI (editor, terminal, phone) is just a view on it.</p>
<p>Not bad for a plugin some people hated.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Welcome to the Pimalaya blog</title>
      <link>https://blog.pimalaya.org/welcome/</link>
      <guid isPermaLink="true">https://blog.pimalaya.org/welcome/</guid>
      <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
      <description>Newcommers, take a moment to read this post: you will understand why this blog exists and what it covers.</description>
      <content:encoded><![CDATA[<h2>What is Pimalaya</h2>
<p>Pimalaya is a project that builds open-source tools for personal information management (also known as PIM), which includes emails, contacts, calendars, tasks and more.</p>
<p>So far we built low-level libraries, CLIs, TUIs, and we plan to expand to Android apps and Native OS applications.</p>
<h2>Why a blog</h2>
<p>What Pimalaya has used for a while:</p>
<ul>
<li><strong><a href="https://pimalaya.org">Website</a></strong>: the front door. What Pimalaya is, and where everything else lives.</li>
<li><strong><a href="https://github.com/pimalaya">GitHub</a></strong>: the code, the bug reports, and the design discussions that lead to decisions.</li>
<li><strong><a href="https://matrix.to/#/#pimalaya:matrix.org">Matrix</a></strong>: real-time chat and support. Nothing said there is meant to last.</li>
<li><strong><a href="https://fosstodon.org/@pimalaya">Mastodon</a></strong>: the megaphone. Short announcements pointing at something durable.</li>
</ul>
<p>What it never had is a durable place, where the project&#39;s direction gets written down in full sentences: why a release took the shape it did, what is coming next, and what got retired along the way. This blog is that place. The <a href="/feed.xml">RSS feed</a> and the <a href="https://buttondown.com/pimalaya">newsletter</a> are just two read-only views on it: subscribe to whichever fits your reading habits.</p>
<h2>What to expect</h2>
<p>Three kinds of posts, all in the same half-technical register.</p>
<ul>
<li><strong>Journal and news</strong>: the running account of the project, on both the PIM domain side and the technical side (what is being built, reworked, or retired, and why). This is the logbook behind the short Mastodon announcements.</li>
<li><strong>Architecture and design</strong>: the reasoning behind how Pimalaya is built. These posts lean more technical than domain: the choices, the trade-offs, the alternatives that were rejected, and the patterns shared across the libraries and the applications.</li>
<li><strong>Releases, in depth</strong>: when something ships, the release post goes further than a changelog. What changed for users, what changed under the hood, and the decisions behind both.</li>
</ul>
<p>See you in the feed.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
