Announcing Offpunk 2.0
by Ploum on 2023-11-25
I’m happy to announce the release, last week, of Offpunk 2.0.
Offpunk is an offline-first command-line browser/RSS reader. You control it by typing command and it maintains a cache of all the networked resources to allow you to access them offline indefinitely.
If a non-cached resource is tentatively accessed, the URL is marked as to be fetched later. Running periodically "offpunk --sync" will fetch those resources and add them to your "tour" to remind you that you wanted to access it.
Switching the license to AGPLv3
Offpunk originally started as a branch then a friendly fork of AV-98. It was called AV-98-offline and, as such, shared the same BSD license.
During multiple discussions, Solderpunk and I came to the conclusion that AV-98-offline was becoming too different from the initial goal of AV-98. It was thus renamed Offpunk. At the same time, I grew increasingly convinced that we needed more copyleft software and that the AGPL license was better suited to protect the commons.
As a symbolic move, I’ve thus decided to switch Offpunk license from BSD to AGPLv3 but needed an opportunity to do so. The 2.0 release is such an opportunity.
Multiple independent tools
Like AV-98, Offpunk was one single big python file. I liked the simplicity of it. But it really became a mess and I wanted to offer Offpunk’s features as separate command-line tool. With Offpunk 2.0, you will thus have three new command-line tools:
- netcache : when given a URL, will download and cache this URL or only access the cache if the "--offline" option is provided.
- ansicat : will render an HTML, an RSS, a Gemtext or even a picture in your terminal, with various options.
- opnk : universal opener. Will try to render any file or any URL in your terminal. If it fails, it will fallback to xdg-open.
Those three commands should come with a man page and a "--help" but they are still quite new. To my own surprise, I found myself using "opnk" all the time. I don’t think anymore about how to handle a file, I simply give it to opnk.
Packaging those tools was a lot harder than expected and I want to thank all the contributors to this work, including Austreelis, David Zaslavsky and Jean Abou Samra.
The goal of Offpunk, through Ansicat, is to render web, RSS, gemini and gopher pages as coloured ANSI text in your terminal. Until now, those colours were hardcoded. With 2.0, they can be customised. See "help theme".
In offpunk, customisation can be made permanent by adding all the commands you want to run at startup in your .config/offpunk/offpunkrc file. Mine contains one single line: "offline", ensuring I use Offpunk only in offline mode.
Using Offpunk daily as your main browsing/rss driver takes some learning. You need to get used to the Offpunk philosophy: adding elements to tour instead of clicking them, creating lists to read later, doing a daily synchronisation. It is not trivial.
The "help" command will probably be your best allies. The community also provide support on a user dedicated mailing-list.
If Offpunk becomes useful to you, the community is open. Contributions, documentation, blog post about how you use Offpunk, help to new users and packaging are warmly welcome. Sometimes, simple feedback is all it takes to make a developer happy. So don’t hesitate to contribute in one of our lists.
I’ve also started an experimental Matrix room on #offpunk:matrix.org. I have the belief that mailing-list is better suited for discussions but I’m giving this the benefit of doubt and willing to explore whether or not direct real-time discussion could help new users.