💾 Archived View for kypan.me › posts › geminispace.gmi captured on 2023-12-28 at 15:29:20. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-01-29)
-=-=-=-=-=-=-
~kypan <kypan@posteo.net>
March 20, 2022
By Asim Patel via Wikimedia Commons (CC BY-SA 3.0)
Gemini is an internet protocol started in 2019 by ~solderpunk as an alternative between Gopher and modern web (HTTP). It’s more than Gopher in its lightweight hypertext markup language (Gemtext), supporting of hyperlinks, and TLS protocol; while less than the modern web in that it does not support server-side style sheets (e.g., CSS), client-side scripting (e.g., Javascript), inline images and other embedding contents. However, users can adjust styles on their clients to meet their preferences; and Gemini does support server-side scripting (CGI). Many clients also display inline images if the hyperlinks point to image files.
Gemini implements TLS protocol for encryption between servers and clients with a TOFU (Trust On First Use) model. When connecting to the server for the first time, the client will undoubtedly accept the server’s certificate and save its hostname, fingerprint and expiry date in the database. For future connections, if the server certificate’s fingerprint is different from that saved in the client’s database, and the certificate hasn’t expired, then the client will be warned.
On the other hand, client certificates can be used to identify users to servers, especially for server-side applications. Most of the time the users don’t need to generate client certificates for themselves since not all Gemini requests require client certificates. But for multi-user server-side applications, users should generate their own certificates to identify themselves; this is like an account registration but handled on the client side.
In comparison to the modern web, Gemini is a simplified web that makes us focus on the contents, without distracting advertisements and tracking of users.
To surf in Geminispace, we must install a Gemini client first. A list of GUI (Graphical User Interface) and TUI (Terminal User Interface) clients can be found here:
https://github.com/kr1sp1n/awesome-gemini
I use Lagrange (GUI) and Amfora (TUI) on my computers. Mobile versions of Lagrange for iOS and Android are also in progress at the time of writing.
https://git.skyjake.fi/gemini/lagrange
https://github.com/makeworld-the-better-one/amfora
Here are some useful and interesting Gemini “capsules” (as website is to the modern web):
medusae.space—A catalog of Gemini capsules
geminispace.info—A Gemini search engine
CAPCOM—A Gemini content aggregator
Spacewalk—A Gemini content aggregator
Astrobotany—A game of community gardening
To build your own Gemini capsule in Geminispace, you can either set up a Gemini server, or join a Gemini hosting provider such as SourceHut, gemlog.blue, or Flounder. There are also many tilde servers (public unix servers) supporting Gemini hosting as well as other services for people to learn and doing stuff on Linux/Unix.
tildeverse.org (more tilde servers can be found here)
For example, if you have joined a tilde server that supports Gemini hosting, usually you'll find a `~/public_gemini/` directory in your home directory, just like the `public_html` directory for HTTP. This is where you put your posts which will be accessible at `gemini://[tilde_server_domain]/~[user_name]` and show the content in `index.gmi`. Gemini provides a lightweight markup language called Gemtext. Each `.gmi` file should follow the syntax of Gemtext.
Here is an example `index.gmi` file:
# Welcome to my Gemini Capsule đź’ˇ Hello world~ ## My posts => posts/20211225.gmi December 25, 2021 => posts/20220101.gmi January 01, 2022 => img/geminids.jpg => https://commons.wikimedia.org/w/index.php?curid=30551402 By Asim Patel via Wikimedia Commons (CC BY-SA 3.0)
And it looks like this in the Lagrange browser:
Raw:
# Heading 1 ## Heading 2 ### Heading 3 Hard line breaks (by pressing Enter) are also rendered in the results. Therefore, you should put the whole paragraph on its own line. Don’t break long lines manually like this. => path/to/another/file Link to another file (not only .gmi) => https://example.com Protocols can also be specified
And the corresponding rendered results:
img/gemtext_example_result.png
Copyright © 2022 ~kypan. Some Rights Reserved under a CC BY-NC-ND 4.0 License.