From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id MNgVGSD0oGDq2QAAgWs5BA (envelope-from ) for ; Sun, 16 May 2021 12:29:52 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id yAGfFCD0oGCTLQAAbx9fmQ (envelope-from ) for ; Sun, 16 May 2021 10:29:52 +0000 Received: from mail.notmuchmail.org (nmbug.tethera.net [IPv6:2607:5300:201:3100::1657]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id B2329FABA for ; Sun, 16 May 2021 12:29:51 +0200 (CEST) Received: from nmbug.tethera.net (localhost [127.0.0.1]) by mail.notmuchmail.org (Postfix) with ESMTP id 88B78271D5; Sun, 16 May 2021 06:29:44 -0400 (EDT) X-Greylist: delayed 580 seconds by postgrey-1.36 at nmbug; Sun, 16 May 2021 06:29:41 EDT Received: from mail0.khirnov.net (mail0.khirnov.net [IPv6:2001:67c:1138:4304::3]) by mail.notmuchmail.org (Postfix) with ESMTPS id D9AFD2717B for ; Sun, 16 May 2021 06:29:41 -0400 (EDT) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 8370B240476 for ; Sun, 16 May 2021 12:19:47 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id c6JZftyHC5Ym for ; Sun, 16 May 2021 12:19:46 +0200 (CEST) Received: from lain.red.khirnov.net (lain.red.khirnov.net [IPv6:2001:67c:1138:4306::3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "lain.red.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id A5C4724042A for ; Sun, 16 May 2021 12:19:46 +0200 (CEST) Received: by lain.red.khirnov.net (Postfix, from userid 1000) id A816816019F; Sun, 16 May 2021 12:19:45 +0200 (CEST) From: Anton Khirnov To: notmuch@notmuchmail.org Subject: announce: my fork of alot Date: Sun, 16 May 2021 12:19:45 +0200 Message-ID: <162116038546.29687.12722695687857643272@lain.red.khirnov.net> User-Agent: alot/0.8.1 MIME-Version: 1.0 Message-ID-Hash: 3YMQCXHWXGCWC43DFSMQ4NJKVM5BE3UX X-Message-ID-Hash: 3YMQCXHWXGCWC43DFSMQ4NJKVM5BE3UX X-MailFrom: anton@khirnov.net X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-notmuch.notmuchmail.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.1 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1621160992; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=6gQiM6D9rboEORuCvXO1N8s5xSCppAK4tFClGuGScHs=; b=QL5WFDhL1IobP6eKvvD//jnZDVqrUtse9DpBPH+fEXzI4D34TcwfqTEYFO54/AtmASOnEB 2TzgYLE4Q6ty61Wku5BhQKgnoLVhuSE4bM7M3MhFVXRm4P2iNo7Ab3W7W844Tlr2xlByE6 K3Iu4OIqvobq0ZE3+BrAOKClESNZPlpSE/bJMP5H/CNnnDVuCAGUyKcDJizaXFXHrEnFaA ptsmn6Jp1PtxwOsNH6wRH8umOu/bOcozuzpYrGGEhXnf/+U7BqCpUbbMtCZrZzrFRZSBQ6 38DYs+R1rfZ2++XfY0bSrqfKzcTDUs9mm2vJ3oE2ySKxaNqjBSYayFhUpAMjqQ== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1621160992; a=rsa-sha256; cv=none; b=YvKOsFrtYAWEVI2+75VnsextpnPRONluBq+Cc1Tn8S7N0sUEWq1oxBsHp+YMIcw6dznRBs lAGSJdmkL4ReXFRq3AM+d0RpZasxQfW/gD0v7p+3P3OBA6T7xjOEPPTndA9lZs4YzCdP2H ZaAL9hkkdNEKUEm+ijKzA2K4VgqysQIaEhxLzwIo7UvZlEFqPAKvrsb3CuZsJ3WdEOpuFZ mknTAFoNueWLsdC3+bH9S28CaHfhIE71xwowZzXs8fHpCuelQq55a+qf1sOKnsCxVf5qBT EntbBXEnK0Sa2LSj4otG1p6X0T6GGRTXMJSn3SDLazZqYVwQ0/E0Hyh/nXzNhQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of notmuch-bounces@notmuchmail.org designates 2607:5300:201:3100::1657 as permitted sender) smtp.mailfrom=notmuch-bounces@notmuchmail.org X-Migadu-Spam-Score: -2.05 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of notmuch-bounces@notmuchmail.org designates 2607:5300:201:3100::1657 as permitted sender) smtp.mailfrom=notmuch-bounces@notmuchmail.org X-Migadu-Queue-Id: B2329FABA X-Spam-Score: -2.05 X-Migadu-Scanner: scn0.migadu.com X-TUID: jf4lkqwgdFlL Hi, Thought I'd share with the people here the fork of alot I've been hacking on for the past ~1.5 years, see if there is any interest in it. The code can be found at git://git.khirnov.net/alot. There are many changes in various places, the most user-visible ones in the thread view mode. Specifically - quoted blocks in the email body can now be colored and folded (this was probably my main motivation for starting all this) - in upstream the thread mode shows a tree of messages, each node in the tree is a rendered message, that can be collapsed into a single-line summary; in my fork the thread mode is split-window - upper window for the tree with the thread structure, lower window for the currently selected message; no collapsing of messages - attachments can be rendered inline, possibly colored with pygments - git patches are colored with pygments - all the parts are rendered for multipart/mixed messages, as per the RFCs - encrypted/signed parts are now wrapped in a frame that indicates which bits of the message are actually encrypted or signed - various architectural restructurings which were needed for the above or to allow for future changes (I have a large TODO list left) The code is currently alpha quality - I am using it as my main MUA and it works for my workflow, but any features I don't use regularly may be broken. There is a general lack of "UX" polish (appearance and documentation). I didn't bother updating the test suite to keep up with all the architectural changes (plan to get to that once I consider the code more stable). I removed some features which I considered an impediment to progress and not worth the maintenance effort - YMMV. Why did I not submit all this as PRs to upstream alot? The main reasons were my lack of time and disagreement with the upstream about project status. From what I can tell, alot maintainers consider the project to be mature, so they prioritize stability and small incremental changes. >From my perspective, alot is lacking some critical features -- some implemented in my fork already, some planned -- which makes it borderline-unusable for me. As implementing those features required large-scale architectural changes and my free time was quite limited, I prioritized quickly implementing the things I cared about over progressing in small incremental stable easily-reviewable steps. At this point my tree has over 200 new commits and some ~4k changed lines, so it's looking increasingly unlikely that I'll ever find the free time and motivation to upstream it -- especially given alot's glacial pace of development recently. If people are interested in using this, I'll probably fork it "properly" under a new name. Any comments or questions are very much welcome. I can also be reached on IRC as elenril. -- Anton Khirnov