It's very fun to develop for. The simplicity of the protocol means that writing a server, client or "web app" (equivalent) is a weekend project. So there is a proliferation of software for it but that doesn't necessarily translate into content.
There is content, though. My favourite aggregator is gemini://warmedal.se/~antenna/ and I do still drop by there regularly enough to have a browse. It's no longer all meta content which is good (people used to just use Geminispace to write about Gemini). It's still quite tech/FOSS focused, unsurprisingly.
I agree with the other comments that are saying that a simple markdown would have been better than gemtext.
Whenever Gemini gets mentioned on HN there are a lot of commenters who seem to have an issue with the "views" or "values" of some people within the community. They never go into detail. I can honestly say I'm not sure what the issue is. As a very middle-of-the-road centrist I have never had much of an issue with the content I find on Gemini. Sure, you had a few interesting "characters" on the mailing list (back when it existed) but they were a minority and it was nothing you don't also find on the web. I guess people there tend to be more dogmatic about sticking to FOSS and keeping the internet non-corporate, which can rub people the wrong way, but again you can find similar views on the web (and IMO it makes for interesting discussions even if I don't agree with the dogmatism).
Like many have mentioned already, I personally would have preferred pure markdown and no gemtext at all. Similarly, and although I understand the reasoning behind making encryption mandatory, I believe it should be optional in the spirit of KISS. I'm more of a minimalist than I am a privacy evangelist. In this regard, I felt a bit out of place within the gemini community.
Finally, the argument that it takes a new protocol to avoid a broken user experience, often exemplified by someone jumping from a simple and well behaved HTTP website into a chaotic one, doesn't resonate much with me. Again, I get it, but I can live with visiting only the websites or gopherholes I want. This comes with a great advantage. Even if we consider just the minimalist and well designed websites, this means hoards of content when compared to all gemini capsules. I missed a broader set of topics when I used gemini and ultimately that was what killed my interest.
All that said, I loved it while I used it and I stumbled upon some really nice people. Maybe I'll fall in love again one day...
gluon
This is definitely Gemini's biggest weakness. I looked around on it a bit when it was gaining attention, and most of the sites I saw were just complaints about how bloated the modern web had become. I get it, but it's kind of treating the whole thing as a novelty rather than an actual medium that can be used to convey information. It didn't have the wide and varied userbase that even the mid-90s academic web they were trying to replicate had. It kind of reminded me of all the people who write a static site generator for their blog, and then only write a single blogpost about how they made their static site generator.
You can of course recreate this experience using HTTP and modern browsers, but both are so complicated that you don't know what's really happening without a lot of work.
This will let you create search engines that crawl and index these sites specifically.
I agree. Personally, I'm a fan of progressive enhancement.
E.g. I use this Hugo partial to hide emails; it de-obfuscates an address using JavaScript, and falls back to printing a shell command:
{{ $id := substr (sha256 .) 0 6 }}
<a id="{{ $id }}"><noscript>echo </noscript>{{ base64Encode . }}<noscript> | base64 -d -</noscript></a><script>var el = document.getElementById("{{ $id }}"); el.innerText = atob("{{ base64Encode . }}"); el.href = "mailto:" + el.innerText;</script>
(Hopefully HN will preserve all the characters.)Similar for CSS, although that one is a forever WIP...
The gemtext format is much simpler than markdown, which can avoid the complexity of handling markdown files. (One thing I dislike about markdown and other text-based formats (including JSON, etc) is that escaping will then be required, which can make it messy).
(Nevertheless, you can serve files of any format like you can with HTTP and some other protocols.)
> Similarly, and although I understand the reasoning behind making encryption mandatory, I believe it should be optional in the spirit of KISS
I agree. (My own "Scorpion" protocol does make it optional, for this reason. However, the existing server implementation does not currently implement TLS, although the protocol does allow (and also recommend) it, as long as any files that do not require X.509 client authentication can also be accessed without TLS.)
(Also, if you are serving only static files with Gemini then you could also use Spartan which uses the same file format as Gemini. If you have dynamic files, then it is going to be more difficult because of the differences between the protocols, although it might still be possible.)
> Finally, the argument that it takes a new protocol to avoid a broken user experience, often exemplified by someone jumping from a simple and well behaved HTTP website into a chaotic one [...]
This might miss the point. As the FAQ mentions, there are benefits of a new protocol and file format, including a simplified implementation compared with HTML, and this does not prevent the possibility of also making and/or using well designed websites.
(If you specifically do want a subset of HTTP, HTML, and JavaScript, there is "gemiweb0", and is intended to also be compatible with common web browsers. However, this does not mean that Gemini and other protocols and file formats are worthless; they are still beneficial, in my opinion.)
I think Gemini is great, and read from Nyxt browser. Don't know if I've seen any references to privacy benefits, so curious.
Gemini is an application-level client-server internet protocol for the distribution of arbitrary files, with some special consideration for serving a lightweight hypertext format which facilitates linking between hosted files. Both the protocol and the format are deliberately limited in capabilities and scope, and the protocol is technically conservative, being built on mature, standardised, familiar, "off-the-shelf" technologies like URIs, MIME media types and TLS. Simplicity and finite scope are very intentional design decisions motivated by placing a high priority on user autonomy, user privacy, ease of implementation in diverse computing environments, and defensive non-extensibility. In short, it is something like a radically stripped down web stack. See section 4 of this FAQ document for questions relating to the design of Gemini.
The modern web is opt-in. I build and use sites that aren’t SPAs and shitted up with 3p resources and images and code.
HTTP is great, and deserves our time and attention. I get that they seem upset with the modern web, and I am too - but it isn’t HTTP’s fault. It’s the sites you visit.
If you want to build new and smaller communities, I really think we should be building for browsers. Perhaps a website design manifesto is in order.
That is a microscopic subset of the modern web.
I don't use Gemini— though I am highly tempted —but I expect some of the attraction is that you can click on any link and pretty much guaranteed not to be socked in the face with a sign-up-for-my-newsletter or cookies-accept-all-yes-later or paragraph-ad-paragraph-ad-paragraph-ad or fiddling with NoScript to find the minimum amount of Javascript that will let you read some article that looks interesting. In Gemini, all that friction just goes away.
I’m currently building a browser-based static site generator that produces clean, simple code. But it does more than that.
Alongside the generated HTML, sites also publish their public configuration and source files, meaning they can be viewed in more than just a browser, for example in a CLI or accessibility device.
The client interface is also more than a CMS - you’ll be able to follow other sites, subscribing to updates, and build a network rather like a webring. The idea is to provide human-powered discovery and community tools. The reach may be less than if algorithmic, but it’s designed for genuine connection, not virality.
As the client is smart but sites are simple, sites can be hosted on anything, from the cheapest shared host up.
I’d be happy to talk further if that’s interesting in any way.
I am saying this but I have no idea if AI crawlers have started to crawl gem capsules.
I'm not sure I understand that. HTTP is the fundamental protocol of the web. If your goal is to create an ecosystem that is deliberately set apart from the web, how would using the same underlying tech stack help rather than hinder you in doing that?
> HTTP is great, and deserves our time and attention. I get that they seem upset with the modern web, and I am too - but it isn’t HTTP’s fault. It’s the sites you visit.
And why are those sites so awful? Did they decide to become awful from the outset, or is it because they've gradually adapted to a userbase that has regressed to the mean due to the mass-market nature of the web?
The whole point of developing a new protocol is to create a non-negligible threshold of though and effort for participation, precisely so that it doesn't get popular quickly and end up subjected to Eternal September.
It may have changed but that's what largely turned me off from it. I find other networking projects to have a less preachy mix of people.
Interesting note: the first line of a Gemini response is a MIME type. It's usually `text/gemini` but there's no reason it can't be `text/html`, `application/javascript`, or anything else. A while back I did a little poking in some Gemini server code and made it do precisely that: serve HTML files which I accessed via elinks. Of course once you're serving HTML over Gemini you might ask, exactly what advantage am I getting by putting it over a purposefully-broken subset of HTTP, and I would say that's a damn good question.
In 2024 I wrote 'The modern Web and all its crappiness didn't come about because there's something inherently wicked in HTML and HTTP, it came about because people built things on top of the basic foundation, extending (sometimes poorly) and expanding. The more people play with Gemini, the more they'll want to "extend" it... and the closer they'll bring it to HTTP, because it follows the exact same fundamental model once you strip off the extraneous document format specification' and I stand by it.
Then it's not Gemini. Interestingly this is why it was decided for Gemini not to have a protocol version. To prevent extension.
2022-ish: Titan created (based on existed of https://web.archive.org/web/20220126075826/https://transjovi...).
The spec for Titan (https://portal.mozz.us/gemini/transjovian.org/titan/page/The...?) appears to be an implementation of PUT for Gemini, but since Gemini doesn't have verbs (GET is implied) it does it by creating a whole new "protocol" titan://
So you're right, they didn't extend the Gemini protocol, they created an entirely new protocol which many clients, servers, and libraries now implement because the functionality was desirable.
Wonder what they'll call the protocol that implements DELETE... maybe Deorbit?
Edit: oh there's also Spartan (2022), another protocol which is Gemini but if there are bytes after the request line, it's an implicit PUT: https://raw.githubusercontent.com/michael-lazar/spartan/refs...
https://github.com/rcarmo/aiogemini
A key issue with the ecosystem (not the protocol) as far as I’m concerned is that it would have been stupendously better to settle on Markdown (even a simplified form) for content creation. The rest is OK, I guess, but it’s just a nuisance to maintain “dual format” sites.
(I see a few comments here about the community’s opinions and leanings, but to be honest it’s not any weirder than your average old-timely IRC channel or fringe Mastodon server—-live and let live, read what you want and just skip Antenna listings you don’t like)
Anyone have any hints on getting more use out of it or ways to make it more present in my day to day.
takes a url to a regular webpage and spits out a gemtext version that is much more sparse and, for me, is much more readable.
For example, here's this very website:
gemini://gemi.dev/cgi-bin/waffle.cgi/feed?https%3A%2F%2Fnews.ycombinator.com%2Frss
it's honestly the only reason I still use gemini since the rest of it is abandoned gemlogs, rehosts of web content I don't care or ersatz social media
Still, both communities overlap of course.
Setting up a gopher phlog requires no TLS at all and any machine from 1980 (even maybe ITS with a Gopher client written in MacLisp) will be able to read it with no issues.
You will need to prefix a gemini URL with "gem " if you're pasting it into the address bar.
Get browser, read some capsules!
[1]https://kristall.random-projects.net/ [2] gemini://warmedal.se/~antenna/
I find maintaining these 2 sites far easier then dealing with html and the *panels I need to use to upload to my old WEB site.
People who have never viewed Gemini are missing some decent content.
gemini://calcuode.com/gmisub-aggregate.gmi
gemini://nytpu.com/feed.gmi
gemini://skyjake.fi/lagrange/getting_started.gmi
gemini://skyjake.fi/~Cosmos/
However, it works on the basis of mandatory-prohibition. The prohibition is: "You cannot track and exploit your site visitors". This philosophy is enforced 'remotely', by the creators of the Gemini protocol.
An identical end-result can be achieved in HTML, by choosing not to use hostile markup. However, with HTML the prohibition must be enforced 'locally', by the ethical-philosophical position of the website-designer.
The problem with the Gemini-protocol is that it introduces an attack vector: The Gemini 'browsers' themselves. The most popular one is not audited; has a huge code-base; and has relatively few eyes-on-it.
I'm not saying that Gemini protocol is a honey-trap for those trying to exit the surveillance-internet; but if I was a tech-giant / agency profiting from the surveillance-internet, I would definitely write browsers for the Gemini protocol and backdoor them.
As a former "Don't be evil" company, it would be of great interest to me who was trying to exit my 'web'; how; and why :)
Food for thought...
Despite the specification, there is such possibilities as TLS fingerprinting, URL tracking, although it does reduce much of the problems of WWW.
> The problem with the Gemini-protocol is that it introduces an attack vector: The Gemini 'browsers' themselves. The most popular one is not audited; has a huge code-base; and has relatively few eyes-on-it.
You do not have to use the most popular one (I don't use the most popular one); there are many others available as well, and the specification is made that you could hopefully make your own one if you like to do, too.
> if I was a tech-giant / agency profiting from the surveillance-internet, I would definitely write browsers for the Gemini protocol and backdoor them.
Nobody is required to use that specific implementation, and someone might find the backdoors, but it is possible.
> As a former "Don't be evil" company, it would be of great interest to me who was trying to exit my 'web'; how; and why :)
You do not necessarily need to write a new browser to check this; sometimes they already write public documents about these things, and there are many other ways to track it (e.g. by logging other things, by tracking browser extensions, etc).
Back when I first discovered Gemini, I wanted to create a space for people to have a voice without needing to run their own server, so I built Station (https://martinrue.com/station). I've been running it ever since.
Gemini in general, and specifically folk who use Station regularly, make it a friendly, throwback-to-the-90s vibe, and I still value it a lot.
Once in a while I check Lagrange (Gemini "browser") for gemlogs I've subscribed to and catch up with what other anons are going through. It tends to be a lot more raw and persona-less than what I find on the web, which I appreciate. It's generally just cozy.
I noted there were a few capsules that acted as a sort of hub for other peoples capsules. which suggested to me there was a way to automate it, and I might be able to make my own
gemini://skyjake.fi/~Cosmos/view.gmi
gemini://warmedal.se/~antenna/
gemini://calcuode.com/gmisub-aggregate.gmi
gemini://gemini.circumlunar.space/capcom/
gemini://tinylogs.gmi.bacardi55.io/
gemini://sl1200.dystopic.world/juntaletras.gmi
Yes: https://geminiprotocol.net/docs/companion/subscription.gmi
Many clients, including my favorite, Lagrange (https://gmi.skyjake.fi/lagrange/) support feed subscriptions.
Gemini is an application-level client-server internet protocol for the distribution of arbitrary files"
If I were one, I would consider that to have been buried.
I will stick to gopher, as it is mature and much friendlier to low spec / retro machines.
Gopher often sucks for 40x25 devices or mobile ones. Yes, word wrapping, but everyone uses the 72 char limit or even doesn't give a heck and I have to set my own $PAGER calling fmt, fold or par before less.
On TLS, you are right. But I've got to build BearSSL and some libreSSL for for Damn Small Linux. The 2.4 kernel one, were ALSA was a novely and DMIX was hard to set, the one you got with Debian Woody... with the bf24 at the LILO prompt.
So, if DSL can run some BearSSL based OpenSSL-lite client, a gemini client for it should be totally doable.
It's totally fine to prefer gopher for its maturity (I'd vehemently disagree, but that's for another day) or compatibility with retro machines, but framing someone else's creative project as a character flaw is just rude.
I think there is room for things like media and applications even on an idealized web. But they should not necessarily be combined along with information browsing and search into one thing.
I also think so, although I have criticisms of it too (e.g. mandatory TLS; I think optional (except files that require authentication for access) would be better), but nevertheless it can be used.
> I usually mention my "tersenet" ideas when I see Gemini
I have seen TerseNet, and I mentioned it in my "small web" document. I think it is good that media and programs are not loaded automatically, although there are other problems with TerseNet in my opinion, such as text being limited to 5K.
> I think there is room for things like media and applications even on an idealized web. But they should not necessarily be combined along with information browsing and search into one thing.
I agree, it is helpful, and they should be separated.
I also made up a protocol and file format specification, in order to deal with the criticisms of the other ones. In addition to avoiding many things, there is also adding things which would be useful, beyond what WWW and others might do. So, it is not strictly a subset of the functions of WWW, even though many things are deliberately avoided.