💾 Archived View for gemini.ctrl-c.club › ~stack › gemlog › 2022-05-25.spartan.input.gmi captured on 2023-07-22 at 17:10:46. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2022-05-26)

-=-=-=-=-=-=-

About the =: input prompt...

TLDR: I did not mean to write another anti-Gemini rant... I am really happy for our little network's existence, and I use Gemini pretty much exclusively, hardly ever hitting http servers. It's just so ****ing annoying sometimes!

The author of

Spartan Should Not Use text/gemini

correctly points out that the spartan-flavored-gemtext is different enough from normal gemtext to have a different mime type.

First of all what is the =: prompt? It looks just like a => line syntactically, but clicking on it brings up a text-input field which is sent to the url on completion.

This is a wonderful thing as it eliminates a dumb-ass round-trip in Gemini. Every input field in Gemini needs an extra exchange with the server. The first one with no data gets an 'I need data' response which pops up an input field; the second one, with data, actually submits that data. Multiply by rounds of tcp handshaking and key exchange/verification, and you have a bit of useless traffic here.

That is just so stupid that my head hurts. But I suppose Gemini was conceived for static blogs, and any sort of response or uploading is greatly discouraged in gemtext.

A pet peeve: while there are only a handful of kinds of lines in gemtext, each one is designated in a uniquely different and confusing way: one, two, or three starting characters; there may or may not be a space after such character(s); and there is a global mode for block quotes. There are basically 6 things, and each one is a little different, making it just friggin' annoying to write a state machine.

Contrast it with Gopher, where the first character definitively provides the context for the rest of the data. Gemini was supposed to be a 'better gopher', right? So why can't I just read the first character dispatch on it? Does 'modern' need to be synonymous with 'stupidly convoluted'?

Here is a gopher/gemtext-like format, in which the first character on each line defines the type of the line:

@... link
>... quote
#... headings (may be followed by more # for multilevel)

`... multiline quote; anything that follows ` becomes the end delimiter.
maybe = for an =: input field, because I like it.
<space> or any other unused character: normal text;
        initial space may be undisplayed if indented paragraphs turn you off. 

Now was it that hard? I didn't even think it through -- just typed the first thing that came to mind (like most of what I write), and it's already an order of magnitude better than Gemtext! As I like to say, I wish I had whatever solderpunk was smoking at the time. I am not kidding, I would like some.

Gemtext is OK for serving simple static blogs, especially if you believe that plain text with no highlighting must be _rigorously enforced_, and links must be on their own lines. Spartan, with its symmetrical upload/download spec, is actually much better for all kinds of things that require input. But the Gemini protocol does not limit us to gemtext -- you could even serve html over Gemini if anyone wanted such an atrocity.

Perhaps now that the network has been bootstrapped with the promise of 'write a client in a weekend' [hah!], we can expect more sophisticated formats to be incorporated into browsers.

I love Gemini for the community it attracts, but the protocol is staggeringly idiotic. Some say it's intentional, to stunt commercialism. But making the developer's life tedious and painful is not helpful to the cause. Even if it's for one weekend.

Gemini, in a funny way, is 'the worst of' protocol, taking the worst of Gopher, https, and Markdown. Somehow it works, but so did spitoons until people decided that they were gross, and no one really needs to spit all the time.

I will therefore ask anyone who is coming up with the next revolutionary protocol: don't just randomly throw shit at the wall. If you are improving an existing protocol, keep the good parts. If you are stripping down an existing format, remove the complicated parts that were necessary in the past but no longer apply. Just think about what it's like to use it, to write a server-based application (because we need those), or to implement a real browser, not just something that spits text to stdout.

You may say "If you are so smart, why isn't everyone using your protocol, genius?" Simple: alienating everyone by being right is never rewarded by our society. Everyone just thinks you are an asshole. Even when they realize, later on, that you were right, they will never say 'hey, you were right'. I know from experience! Experiences, in plural.

And on that note, I am signing off.

home

index.