Live data from Hacker News

The Gemini protocol seen by this HTTP client person

daniel.haxx.se

91–100 of 113 posts

Re: The Gemini protocol seen by this HTTP client person

#91
post #7

The high-level criticism, which is that Gemini's specification is too loose and vague, seems very, very convincing, even if the specifics aren't. In a subtle way, this is a significant hurdle for any competitors to the HTTP world. They have to overcome 30 years of technical debate and refinement as ambiguities have been hammered down.

I agree. I think a lot of the problem can be solved with discipline rather than a new spec entirely. If HTTP offers features that are offensive or unwanted, simply don't use those features. Make an HTTP server and client that only implement a subset of HTTP. Then use a subset of HTML, or another content type entirely. This means anyone still using a popular browser like Chrome can visit your sites, but people using a…

>Make an HTTP server and client that only implement a subset of HTTP. Then use a subset of HTML

which subset?

the older html/http versions are older versions, not a subset of the modern html/http. afaik modern html/http doesn't have subsets.

>using a popular browser like Chrome

Gemini is created so that anyone would be able to write a Gemini browser in a couple of days. Or server.

I don't want "popular HTML browser" because I won't be able to write something like it in whole life.

Re: The Gemini protocol seen by this HTTP client person

#92
post #85

Markdown is way better IMO, also very simple yet allowing for better visuals and more expressivness, and new protocol should be designed to use it as its text format.

Markdown is pretty bad for a lot of use-cases, like embedding data into text or using data to format text. I took my own stab at similar constraints: https://github.com/civboot/cxt

I like the checkbox-support. Other than that it looks like a harder-to-write and harder-to-remember version of html.

But as long as it scratches your itch and you're productive in it, that's what counts.

Re: The Gemini protocol seen by this HTTP client person

#93
I've built search engines, servers, clients, a Wayback machine, and other things in Gemini, so I have a better-than-average informed view of the protocol. Many of these observations are wrong or don't matter in practice. (Paraphrasing Daniel)

> Short-lived TLS connections bad!

Content served over Gemini doesn't cause a cascade of requests like HTML does. You don't download a page, close the connection, and immediately need to fetch something else. A subsequent request, if it happens, is dozens of seconds later.

> No TLS resumption

This is false. Many servers support TLS resumption, using the typical methods like session tickets. Usually you just get this with the TLS library. Many servers even support TLS/1.3 with 0-RTT resumption options. In fact, here is a service that tests if your client is using TLS resumption:

gemini://gemini.thegonz.net:1956/

> TLS client certificates (!) for keeping state between requests

This sounds odd to someone who only knows client-side certs from HTTP. Think of them as unforgeable session identifiers that you the user are control in. Want the server to know who you are between requests, you client generates a cert and its hash is used to uniquely identify you. Someone rigged up a cool service where you can play Zork and other text adventure games, and the server know what game to send you to based on that certificate hash. Don't want it anymore? Delete the cert. It's like opt-in cookies.

In practice, very view parts of Gemini use Client-side certs (primarily forums). My latest crawls shown less than 0.01% of all URLs in Gemini space use a client-side cert.

> No inline images

This isn't a thing in practice. For most clients, when you click on a link to the image, they display the image inline. Here is Lagrange, perhaps the most popular client, displaying an image inline from a Wired article:

https://github.com/acidus99/NewsWaffle/raw/main/imgs/newswaf...

Oddly Daniel is taking a positive and framing it as a negative. What the positive here is is that Gemini clients don't automatically request anything unless you click it. So there is no way to have a tracking pixel or anything where you are automatically making a request to another, external system. That's a GOOD thing.

> URLs are ambiguous

In practice, this isn't an issue. I run a Wayback machine for Gemini (named Delorean) which has 3M URLs captured. The only odd/malformed URLS or content I've ever encountered are super super old servers, from late 2020 when the protocol was still being developed that send a tab instead of a space in the response line.

> Proxying can't work

This is false. It does! I built and run a Gemini-to-HTTP(s) proxy, lets you. It fetches HTTP(s) content. It converts HTML on the fly to gemtext, RSS into links, and proxies all other content. Duckling Proxy is another popular proxy.

gemini:/gemi.dev/stargate.gmi

> The Gemini protocol reeks of GOPHER and HTTP/0.9 vibes. Application protocol style anno mid 1990s with TLS on top. Designed to serve single small text documents from servers you have a relation to.

Yeah. Exactly. Why are saying this in italics like this is a bad thing?

> TOFU and scare questions about how certificates are stored in a multi-user system

They are stored just like any other data is stored in a multi-user system. Most client's use a dot directory in the user's home. I seriously have no idea why someone like Daniel thinks storing a the TLS fingerprints for a few thousand certificates is hard.

> I strongly suspect that many existing Gemini clients avoid this huge mess by simply not verifying the server certificates at all or by just storing the certificates temporarily in memory.

I have literally never encountered a client that doesn't verify server certificates. Clients aren't just storing them in memory temporarily. Personally my client stores them in a Sqlite database in a dot directory of the user's home folder.

Overall, I think Daniel is missing the point. Gemini isn't an HTTP replacement. These are systems that don't need to scale to solve the C1M problem, or even the C10K problem. I run some of the more popular services and a few hits per minute is a busy time for me. These are fun, hobbyist systems, playing with a protocol that isn't economically practical to commercialize and hence doesn't have to deal with ads, tracking, etc.

Daniel's post kind of reads kind of like the CEO of Coca-cola talking about how the supply chain and economics of a child's lemonade stand won't scale. Stop thinking about it so hard. It's just for fun.

Re: The Gemini protocol seen by this HTTP client person

#94
post #85

Earlier quoted context omitted.

Markdown is pretty bad for a lot of use-cases, like embedding data into text or using data to format text. I took my own stab at similar constraints: https://github.com/civboot/cxt

I like the checkbox-support. Other than that it looks like a harder-to-write and harder-to-remember version of html. But as long as it scratches your itch and you're productive in it, that's what counts.

Hmm, "harder to write" stings, considering how difficult html is to write. Thanks for the feedback!

Re: The Gemini protocol seen by this HTTP client person

#95

Earlier quoted context omitted.

As long as any actual formal standard contains the term "markdown", John Gruber will find a way to torpedo it. https://news.ycombinator.com/item?id=8274870 https://blog.codinghorror.com/responsible-open-source-code-p... https://blog.codinghorror.com/standard-markdown-is-now-commo... https://daringfireball.net/projects/markdown/license

Fine, `text/commonmark`, with a `.md` extension since Gruber doesn’t use that?

That's probably how it would work out.

Re: The Gemini protocol seen by this HTTP client person

#96

Earlier quoted context omitted.

As long as any actual formal standard contains the term "markdown", John Gruber will find a way to torpedo it. https://news.ycombinator.com/item?id=8274870 https://blog.codinghorror.com/responsible-open-source-code-p... https://blog.codinghorror.com/standard-markdown-is-now-commo... https://daringfireball.net/projects/markdown/license

Fine, `text/commonmark`, with a `.md` extension since Gruber doesn’t use that?

[deleted]

Re: The Gemini protocol seen by this HTTP client person

#97
post #39
post #35

What if... Markdown was its own MIME type and browsers rendered it with a default stylesheet? :thinking_emoji:

The standard answer to this is that there's too many variants. I think it should be a thing anyway. If Blink, Webkit and Firefox have compatible implementations there can be some sort of de facto standard and it will be fine for a number of actually useful things, even if it's not perfectly defined to pocket protector standards.

Yes, it could even start as a browser extension.

Re: The Gemini protocol seen by this HTTP client person

#98

does anybody actually use Gemini exclusively, or is it just like Gopher where everybody ends up hosting a HTTP proxy anyway?

I use Gemini with Lagrange, a Gemini GUI browser, as often as I use a normal web browser or RSS reader to read content. But I enjoy it much more. I'm a less-is-more-person, so it's a good fit for me.

Re: The Gemini protocol seen by this HTTP client person

#99

Earlier quoted context omitted.

I have a blog focussed on small entries (tweet length) consisting of Markdown in a fortune file format, that renders +10k items in about 5 seconds. Using Perl. Parsing Markdown is fast enough.

Your 10k items are probably only 2MB. Spending 5s to parse a 2MB text file is very slow, even for Perl. If you are distributing your file to users, that's 5s for each one of them. If you convert it to html and distribute the html file, your user will spend 1s in parsing, tops. This is exactly why I said Markdown makes a very bad interchange format.

Nah, it's 10K items spread over 45 files, 7.5M in total, and the blog engine generates monthly pages etc. Note that I've not bothered with any optimization, I re-render all content after adding one new item.

But I agree MD isn't a good interchange format.

Re: The Gemini protocol seen by this HTTP client person

#100
post #33

Earlier quoted context omitted.

Right but if you want simple why not "just" use markdown (with maybe HTML support cut off?). Why make something subtly-similar-but-incompatble ? If you want protocol to be light and low on bandwidth, why would you not include at least the simplest of caching semantics ? It is just bad design decision after bad design decision

Markdown is not context-free and therefore hard to parse. Caching can be abused for tracking. That's why both are solutions to the problems the Gemini project is trying to solve.

I meant to wrote "That's why both are solutions to the problems the Gemini project is trying to solve." m(
Post reply on HN