[HN Gopher] Offpunk 3.0
___________________________________________________________________
Offpunk 3.0
Author : todsacerdoti
Score : 167 points
Date : 2026-02-09 10:37 UTC (12 hours ago)
(HTM) web link (ploum.net)
(TXT) w3m dump (ploum.net)
| sph wrote:
| > Something wonderful happened on the road leading to 3.0:
| Offpunk became a true cooperative effort. Offpunk 3.0 is probably
| the first release that contains code I didn't review line-by-
| line.
|
| I felt true dread reading a sentence like this. I had to reread
| to make sure the author means there are other trusted
| contributors now.
|
| As it is often the case these days, some projects are quite proud
| of announcing that no human has written or reviewed their code.
| ploum wrote:
| OP here: Didn't even come to my mind while writing this. This
| would be totally against the philosophy of the projects.
|
| Don't worry: I wanted to celebrate humans cooperating over good
| old emails to write code in their editor without any help ;-)
| sph wrote:
| Thank you for confirming, and congrats for shipping!
| j4cobgarby wrote:
| This looks interesting! I wanted to find more info about the
| Gemini protocol, and it's annoying how un-searchable it is now
| due to Google Gemini.
| dr_kretyn wrote:
| To be fair, "Gemini" is one of those overused words for
| projects and it was unsearchable before Google. It's in the
| same category as Atlas, Nexus and Styx.
| ploum wrote:
| Try "gemini protocol", it helps a lot.
|
| But, trully, there's no much to search. The beauty of Gemini is
| how small it is: all technical informations should be there :
| https://geminiprotocol.net/
| karel-3d wrote:
| It's as if someone took a look at Gopher and tried to do it in
| 21st century.
|
| It's not bad, but the (intentional) lack of user-input takes
| the whole experiment back. The only user input is a small
| search query. It's intentionally set up against building any
| kind of BBS/Forum. So you need a different way to write and
| upload, which - in my opinion - kills the whole project. YMMV.
|
| Lagrange - the most used browser - used to have something
| called "Titan" as user upload but that was never specified and
| nobody used it and I think it's removed from Lagrange now.
|
| edit: ah it still supports it (Titan). It just seems there is
| no server in the world that uses it.
| NoboruWataya wrote:
| If I have a criticism of the protocol it is that gemtext errs
| too far on the side of simplicity, particularly in not
| allowing inline links or formatting. I would have preferred
| if it was closer to markdown.
|
| The limited input support doesn't bother me. I don't see the
| need for social media through Gemini when there are loads of
| other protocols we can use for that. And even the limited
| form of input that is supported lets you do a lot if you get
| creative with it (in fact there _are_ a few social media-like
| Gemini pages out there).
| esseph wrote:
| It's interesting how long we're been using web search, and the
| total lack of user education on the features.
|
| "Gemini protocol" with quotes should help.
|
| +Gemini +protocol for more fuzzy, less accurate results
| ghostly_s wrote:
| these operators straight up do not work anymore in any
| mainstream search engine.
| esseph wrote:
| I use them daily with Google. Works great.
|
| You can open several incignito browser tabs to try it out
| side by side. It's easy to compare!
|
| Note: In the US, doing English searches, using a chrome-
| based browser. Coming in with Firefox WILL give you
| different search results. Sometimes I do that intentionally
| (can be useful).
| kkfx wrote:
| I wonder when contemporary developers will (re)invent Emacs/Gnus:
| the unified inbox for email, feeds, and news, because what really
| matters are text messages + eventual multimedia content, personal
| and private scoring to manage them, and a consistent local UI
| that allows for personal archiving and resharing.
|
| I've looked at the Fediverse, objectively with little hope and
| many design issues, I'm watching Nostr with interest even though
| it seems more like a rough sketch lacking the ideas to move
| forward, but that concept of Gnus and Usenet, so simple in
| itself, still hasn't managed to resurface.
| anthk wrote:
| Gnus it's dog slow, be with email or with usenet. I say this as
| an ex-Emacs user where I even plugged slrn's cache in order to
| speed up things, but over 100k messages that was unusable in my
| netbook, even under 64 bit machines and native compilation.
| Slrn did it better. On RSS, I use sfeed which is more Unix like
| and I just plumb lynx/links or whatever I like as a reader. And
| fast, much fast than GNUs, Elfeed or the core RSS reader in
| Emacs.
|
| OTOH, Emacs it's the only libre Usenet reader for Android. Go
| figure, and that being a dead simple protocol. Despite of that,
| lots of Thunderbird forks in FDroid didn't adapt the Usenet
| part yet.
|
| Offpunk it's slow but adding multiprocessing with flock (for
| python3 maybe) would be a piece of cake in order to allow
| parallel downloads while syncinc.
| ploum wrote:
| offpunk's slowness has two main sources (while offline):
|
| - loading modules at startup (will be solved in 3.1 with lazy
| loading, patch is pending)
|
| - parsing HTML with lot of pictures (because we wait for
| chafa for each picture)
|
| I'm not sure how multiprocessing could really help that much
| but I would be interested.
|
| While online, sure, the blocking http calls are something
| that will be parallelized in the future
| anthk wrote:
| syncing URL lists should be done in parallel. Something
| like xargs+flock but under Python.
| ploum wrote:
| Contributions are welcome. I even believe that this whole
| code should be migrated from python-requests to curl.
| swannodette wrote:
| I don't think Gnus is that bad once you spend some time
| setting it up. For groups with a ton of content where I
| mostly want to search, I found it was better to just download
| the whole group and index into notmuch. I could query 20
| years of the Smalltalk USENET group or the Supercollider
| mailing list instantly.
| ploum wrote:
| OP here and Vim/UNIX fan.
|
| I get the idea behind "reinventing Emacs".
|
| But there are main differences:
|
| - offpunk is an offline content browser/reader. Main component
| is fetching/caching/displaying ressources
|
| - offpunk is developed as a set of components that can be used
| separately (openk, ansicat, netcache)
|
| - offpunk delegates as much as possible to other UNIX tools
| (less for browsing/reading, chafa for images, grep to find in a
| page, $EDITOR for editing needs )
|
| - offpunk is pure CLI tool. You type commands, results is
| displayed in your terminal or in less. There's no "keyboard
| shortcuts" or "environment". It is a prompt on which you type
| commands
|
| - There's no "configuration" in offpunk. The only (but
| powerful) way on configuring is having offpunk launch commands
| at starts (commands listed in offpunkrc). So no "configuration
| language" or syntax or plugins or whatever.
|
| - last but not least: basic use of Offpunk is simple. You are
| not required to learn much and you use only what you want. Lot
| of Offpunks users don't use the Web/HTTP part and use it as a
| straight Gemini browser (for the record, Offpunk is a fork of
| AV-98, the very first Gemini browser)
| kkfx wrote:
| My intention wasn't to compare software but rather paradigms;
| Gnus is only relevant here because it unifies email, feeds
| and news into a single UI. In other words, the human user
| sees everything as generic "posts" an approach not unlike
| many Nostr clients, to name something modern. It's the
| paradigm of saying "in the end, what matters is the message".
| As long as there's a readable amount of them, you don't need
| anything else; when they reach a certain volume, well, you
| need to be able to "filter" them somehow so that some are
| never seen/read, for others you only see the title at a
| glance, and some are actually read. This is the principle of
| scoring, which is even older, I think it was part of the
| first PARC Altos.
|
| What I meant is that I wonder how long it will take nowadays
| to go back to creating a decentralized model or, since
| overhead allows for it today, a distributed one, that serves
| modern forms of human communication:
|
| - blogs (e.g. Nostr's long-form notes in Habla, or WireFreely
| for the Fediverse)
|
| - non-synchronous short messages (e.g. Twitter/X style)
|
| - synchronous short messages, i.e. chat
|
| With a decentralized/distributed network for distribution
| where everyone keeps what they want on their own hardware.
|
| On the sidelines, it would be nice today to also see
| synchronous audio and audio+video, meaning calls and
| conferences, all in a single UI and with at most two or three
| protocols on the network side (one for asynchronous messages
| and media, one for chat if the asynchronous one doesn't cut
| it, and one for calls).
|
| Without the end user having to make personal collages if they
| don't want to, using an app that is go-installable, pip-able,
| cargo-build-able, basically something that both those who
| want to try it and distro packagers can add quickly. This
| would help spread something among techies/nerds/geeks and
| also works for the end user, who would be introduced to this
| solution by the techies/nerds/geeks. To me, this is what's
| missing to see the big platforms currently in fashion get
| toppled.
|
| Seeing projects like Offpunk inspired the thoughts above;
| that was the point :)
| ploum wrote:
| well, indeed. If you use mutt and use the "reply" feature
| in Offpunk, you will see how well emails and blog/gemini
| posts merge well ;-) (this will be the subject of another
| post later)
| taneliv wrote:
| As a long time Emacs user, I never even tried Gnus, or used it
| as a calendar (except for some time tracking in org-mode). How
| would calendar invites work there? How well does it support
| shared calendars to determine busy/free information of others?
| kkfx wrote:
| There is https://github.com/emacs-
| mirror/emacs/blob/master/lisp/calen... and
| https://github.com/dengste/org-caldav but that not much
| related to Gnus approach of "unifying messages in a single
| UI", it could be used to import from ics files to org-agenda
| or creating an ics file or sync org-agenda with
| Radicale/Baikal/Davis CalDAV servers
| anthk wrote:
| There should ve a variable to choose your inline image reader,
| between chafa, timg, some wrapper around w3mimgdisplay...
|
| Harcoding it it's bad.
| ploum wrote:
| each tool needs very specific set of options so we can't just
| let the user input any command. And offpunk has been built for
| use with chafa since the start. Timg is just an historical
| workaround were Chafa had some bugs.
|
| But there are currently some discussions about that on the
| mailing-list.
| codeulike wrote:
| I didn't really get what _" a command-line Web, Gemini, and
| Gopher browser that allows you to work offline"_ meant, like how
| is it offline? So I think this is the bit of info I was missing:
|
| _Every content you visit is cached and can be visited later
| while offline. If you try to visit a content not available in
| your cache, it will be marked to be downloaded later. Offpunk
| allows you to synchronise you computer once every hour, day or
| week and work offline without being interrupted._
|
| (from: https://offpunk.net/whatisoffpunk.html)
|
| So its kindof designed to be offline with occasional sync.
| Interesting.
| dec0dedab0de wrote:
| This is really interesting, is there a way to provide
| downloadable caches for websites where that would be legal? I
| could Imagine just pre-downloading wikipedia, stack overflow, all
| kinds of documentation, etc. In a compressed and preorganized
| format instead of scraping it every time.
| ploum wrote:
| The cache is pure and straight files-in-folders. This makes it
| trivial to browse the cache by hand:
|
| cd .cache/offpunk/https/news.ycombinator.com/item cat
| "id=46943752"
|
| So it could be trivially shared.
|
| The "netcache" tool gives you the cached content or, with
| --path, returns the path were to find the contentd.
|
| The only point is to preserve the file-modification attribute,
| which serves to know the age of a cached ressource.
| iamnothere wrote:
| Kiwix basically provides this. You can use kiwix-serve to serve
| the downloaded zim files locally.
| ploum wrote:
| I tried to add kiwix support to Offpunk in the early days but
| kiwix do not support incremental update of the wikipedia
| database, which makes it a huge pain point.
| iamnothere wrote:
| Yeah, that's the biggest disadvantage of kiwix. It probably
| makes their hosting bill enormous as well. Zimdiff/zimpatch
| was implemented a decade ago so I'm not sure what the
| holdup is.
| sivers wrote:
| OFFPUNK sounds like a good name for a punk-like movement to rebel
| against the entire internet and live offline.
| bovermyer wrote:
| I feel like that movement already exists but uses a different
| name. Or doesn't use a name at all.
| ploum wrote:
| see that contributed picture:
| https://offpunk.net/screenshots/resist.png
| bovermyer wrote:
| I was curious, so I tried it out.
|
| I ran `apt install offpunk` on my Debian laptop.
|
| Then, I ran "offpunk" and got a new terminal prefixed "ON>".
|
| Curious, I entered "help" and got a list of topics. A few stood
| out as immediately interesting, so I tried "open
| https://benovermyer.com" to open my site. It said I needed to
| "go" somewhere first. So, I tried "go https://benovermyer.com"
| instead.
|
| That showed me a text preview of my front page, interestingly
| with content between headers stripped out. OK, that's neat, but
| now what?
|
| So I now tried "open", and this time it opened the page in my
| browser, Vivaldi. It was my site, sure enough, but cached locally
| and missing my main image. All the CSS was intact, though.
|
| That's as far as I've gotten at this point, but it was an
| interesting enough experience that I thought I would share. It's
| a very different flow from what I was expecting.
| ploum wrote:
| the "open" open outside.
|
| So you go to a site. If the site is not complete, try "v full"
| (for "view full").
|
| The reason is that there was no unmerdify rule for your site
| and that readability mistakenly assumes that lot of your site
| is spam/ads (readability doing that is the reason why we push
| for unmerdify)
___________________________________________________________________
(page generated 2026-02-09 23:01 UTC)