Announcing Agena, a Gemini-to-Gopher proxy ------------------------------------------ Now that we have settled on sending full URLs instead of just paths in Gemini requests, we have the power to do protocol-translating-proxies, which I think is quite an exciting idea. As a proof of concept, last night I quickly put together a Gemini-to-Gopher proxy named Agena, in Python. You can find it at https://tildegit.org/solderpunk/agena. It's not very user-friendly yet; you need to generate your own key and certificate with filenames matching what's hard coded in, and it's hard coded to listen only to IPv4 localhost connections on the standard Gemini port. This stuff will become more easily configurable over time as I polish it. If you get the latest version of AV-98, you'll find that it is hard coded to proxy requests for gopher:// URLs through a proxy running on local host. Again, this will become more easily configurable in the near future. But for now, if you're running a local Agena instance and using the latest AV-98, you'll find that accessing Gopherspace *just works*. It's remarkably transparent and feels indistinguishable from using VF-1 to access it natively. Binary files work just fine - Agena uses file(1) to get the MIME type and includes it in the Gemini response header, so that AV-98 can launch the appropriate handler program. I had always figured I would at some point write a client which supported both Gopher and Gemini, but now I see that thanks to the requests-are-URLs decision there's little point in this. It's very low effort to add Gopher proxy support to a Gemini client. The community can support one or two high-quality proxy programs and client authors can be forever freed of this burden. It shouldn't come as a surprise that this works so nicely. The "Geminimap" format was heavily inspired by Gophermaps, and the fact that they both have the one-link-per-line structure makes it easy to map between them. Only in one direction, mind you, turning a Geminimap into a Gophermap is not straightforward because it's not clear which item types to use. But in the direction Agena goes it works wonderfully, and I'm very happy.