Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add guppy:// v0.4 support #288

Merged
merged 5 commits into from
Nov 9, 2023
Merged

Add guppy:// v0.4 support #288

merged 5 commits into from
Nov 9, 2023

Conversation

dimkr
Copy link
Contributor

@dimkr dimkr commented Nov 5, 2023

Protocol is described in gemini://gemini.dimakrasner.com/guppy-v0.4.gmi (or guppy://gemini.dimakrasner.com/guppy-v0.4.gmi).

It would be super nice to have it supported in Kristall, because without great clients there won't be great servers.

@mikejzx
Copy link
Contributor

mikejzx commented Nov 5, 2023 via email

@dimkr
Copy link
Contributor Author

dimkr commented Nov 6, 2023

This idea reminds me to some extent of Solderpunk's ramblings on a hypothetical "Mercury" protocol in 2020

Yes, this is pretty much Gemini but without TLS, without TCP and with less status codes.

the supposed "benefits" are not anything that most users are going to care about:

With super weak or old hardware that can't do TLS with EC in reasonable time, your main options are Gopher and Spartan. The former has its well known limitations and requirements (no MIME types, word wrapping, ...), while the latter is limited to ASCII and adds some complexity in the client side because of the extra gemtext line type.

Guppy is meant to be an unencrypted protocol that allows super fast transfer of small documents (no TCP or TLS handshake) and heavy code reuse in an existing Gemini client (same document format, subset of status codes).

one is best off just sticking with the more well-known Gopher and serving plain text and gophermaps.

I agree, although IMO this argument is more relevant in a tiny Gemini or Gopher client that's marketed as a tiny one (like gplaces, where Guppy support is in a side branch for now), and less relevant in one that uses Qt and has general quality of life features like configurable formatting (and happens to support >= 3 protocols already). In addition, the protocol implementation isn't that complex, and unlike Gopher, doesn't need its own URL parsing or document parsing code: a Gemini+Gopher client is way more "complex" than a Gemini+Guppy client.

IMO the idea of a lightweight alternative to Gemini that doesn't suffer from the limitations of Gopher has merit, but this idea can't be tested in the real world (and become "well-known") without software that supports this protocol.

@ikskuh
Copy link
Owner

ikskuh commented Nov 6, 2023

Imho guppy seems like a nice addition, especially for small hardware. It's definitly in the defined goal of Kristall to support such protocols, so i'm happy to merge this.

@dimkr Can you adjust the code to the rest of the Kristall codebase? Especially do no one-liner-ifs, but use at least line breaks here, better use curly braces, also do not use stacked assignments, but split them up into several lines.

C++17 if-with-decl is fine

@dimkr
Copy link
Contributor Author

dimkr commented Nov 6, 2023

Can you adjust the code to the rest of the Kristall codebase?

Will do.

I'm not a native C++ speaker, far from it, but I'll learn from existing code.

@dimkr
Copy link
Contributor Author

dimkr commented Nov 9, 2023

@MasterQ32 Please take a second look

@ikskuh ikskuh merged commit b2fac23 into ikskuh:master Nov 9, 2023
2 of 3 checks passed
@dimkr
Copy link
Contributor Author

dimkr commented Nov 9, 2023

@MasterQ32 Thank you so much!

@ikskuh
Copy link
Owner

ikskuh commented Nov 9, 2023

Is there already a list/index of guppy sites?

@dimkr
Copy link
Contributor Author

dimkr commented Nov 9, 2023

Is there already a list/index of guppy sites?

Not yet, currently there's just guppy://hd.206267.xyz and guppy://gemini.dimakrasner.com. My plan is to build a homepage of some sort, with a list of sites, clients and servers.

@dimkr
Copy link
Contributor Author

dimkr commented Nov 9, 2023

@MasterQ32 Created guppy://guppy.000090000.xyz

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants