Proposal: Simple structured form specification

Katarina Eriksson gmym at
Thu Jan 28 17:00:25 GMT 2021

When this topic have come up in the past, we have concluded that Gemini can
support forms with serial input fields, as opposed to the parallel input
fields people are used to from web forms.

One way to do this is to send status 10 until all the fields are satisfied,
like a CLI. Another way is to have a page with links pointing to one field
at a time.

Johann Galle <johann at> wrote:

> The basic idea is the following: Each form field is presented on a
> separate "page" and the server keeps track of where the client is in the
> form. Ideally the URL (URI/IRI?) contains all the data necessary, thus
> "saving" the data on the client so it might be continued at a later date.
> If the amount of data expected is larger than would fit in the URL, server
> side state with client certificates would be an alternative.

I haven't seen this approach yet, seems just as valid as the other ones.

Now to the different types of input fields. I assume the form's base is
> gemini:// which might display some information about the
> form and the first input field.
> On 27.01.2021 18:37, me at wrote among other things:
>  > # binary
>  > Binary options are best known as checkboxes on the web. They're simple
> on/off toggles. How they are displayed is up to the client
> A check box can be simply implemented with two links for yes and no like
> this for example:
> ```
> Does Gemini need forms?
> => 0/ No, it does not.
> => 1/ Yes, it does.
> ```

Asking a question like this is not a good example for showing off
checkboxes but another way is to send this:
10 Does Gemini need forms? [yes/no]
...and repeat until the user supply a valid answer.

Multiple choice checkboxes can be combined into one input:
10 My server supports: [c: CGI, v: virtual host, s: sessions]
...and the user can answer "sv" or "cs" or "v" or whatever other valid


 > # choice

This refers to a single choice among a list of things.

 > <= choice Which of these protocols are we using?

 > <= choice gemini
>  > <= choice gopher
>  > <= choice HTTP
> This could be implemented just like a checkbox, just with more options.
> Coincidentally the syntax is very similar to the one proposed.
> ```
> Which of these protocols are we using?
> => gemini/ gemini
> => gopher/ gopher
> => http/ HTTP
> ```

This would be:
10 Which of these protocols are we using? [gemini/gopher/http]
``` that same example. Though, I do like the links better.

 > # submit
>  > Finally, submit. This one's easy:
> ... because it is not necessary. The server will just show you the result
> or take the respective action after the last form field is filled. Maybe a
> final checkbox of "Are you sure" would be nice to let the user know that
> this will result in some action.

Or just "Confirm sending this information"

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Gemini mailing list