Comment by π stack
Re: "So theoretically, if a Gemini app had a well defined API,β¦"
True. The text entry interface in Android version is incredibly baroque. I am so used to it, but I wouldn't want to explain it to my mother.
Apr 05 Β· 5 weeks ago
25 Later Comments β
π¦ zzo38 Β· Apr 06 at 00:47:
You can serve files of any type with Gemini (and upload files of any type with Titan), so it would be possible to e.g. have a URL for accessing the data in DER format, or ZIP format, or another format. However, similar to what others say, you should (if possible) try to ensure that specialized software is not required for all functions, so that it will be optional.
(Similarly, access other other protocols such as Gopher, SSH, Scorpion, HTTP, etc is also possible if desired (which it might not be, or maybe you will e.g. allow Gopher but only for read-only access), but in those cases you should also ensure it does not degrade the use with Gemini, if possible (which is not always the case). Also, you should avoid relying on a specific implementation (such as Lagrange), regardless of the protocol.)
(Furthermore, you should ensure that the API is documented, and should avoid the use of undocumented APIs.)
(Another furthermore, Gemini is not good for all kind of apps (this is true of the protocol as well as of the file format, but not always in the same ways of each), although sometimes it is suitable for some uses of a service but not all. For example, Gemini is not very good for live chat and other similar kind of interactive stuff, although you might serve the logs using Gemini.)
π gritty [OP] Β· Apr 06 at 01:22:
thanks all. @skyjake hit what I was getting at - drop down menus, radio buttons, panes, etc. I can't program Android, but it sounds like as long as there are no app-only features, it's feasible. Assuming Gemini sticks around for a while I'm making a prediction someone will do this.
example 2: a capsule host that makes their own android or iOS friendly app to create, edit, and browse other capsules on that server / domain.
π stack Β· Apr 06 at 01:32:
@zzo38 I think we are considering the he opposite, an alternative way to browse gemtext.
π gritty [OP] Β· Apr 06 at 01:41:
last example: spellbinding could have a nyt spelling bee type input and display interface.
π stack Β· Apr 06 at 02:20:
I could just make an Android spellbinding app that gets the game once and plays locally. It doesn't need to be Gemini protocol...
The whole point for me was to push the limits of Gemini proper
π gritty [OP] Β· Apr 06 at 05:18:
@stack I get that, but you wouldn't have anyone to play against. text based Gemini users could play android based users.
anyways, it was just a thought experiment
π Moonlight Β· Apr 06 at 10:47:
Already there is the Titan protocol which only some clients implement, which simplifies uploading on this BBS. I'd like to think Gemini as a protocol would survive these optional extras.
π stack Β· Apr 06 at 12:36:
I've thought about it before...
Last time I wrote an Android app it was very unpleasant. Between Google tooling, Java, and the declarative GUI it felt mostly like filling out tax forms for days.
π lars_the_bear Β· Apr 06 at 18:03:
Android... ugh. I've been programming for a living since 1985 and, of all the platforms I've had to work on, Android sucks the hardest. It's worse than Windows 1.1. The way that Android apps have constantly to interrogate the platform, and be willing to respond to its whims, reminds me of programming for the Atari ST.
I don't know if any of the new tooling makes it any easier -- I lost the motivation to keep coding for it years ago.
π stack Β· Apr 06 at 19:03:
Yes. Not a fan of GEM either. I just ignored it an built software that took over the machine -- easy as it had no co-processors or anything... Just a 68000 with a bitmapped display.
𦦠ainent · Apr 07 at 14:47:
I havenβt done anything with it, but Iβve been tossing the idea around in my head for a few years now:
β ainent.xyz/gemlog/2022-09-06-native-applications-over-gemini.gmi
It would be fun to build a native front end for BBS. It would require BBS to be architected for it though.
Donβt read this as a volunteer to build, because I just donβt have the time for another project.
π stack Β· Apr 07 at 15:20:
It's a lot more practical than HTML as an embedded networking protocol.
π¦ zzo38 Β· Apr 07 at 19:13:
@ainent I am unable to access that server; it does not work for me
𦦠ainent · Apr 07 at 20:07:
@zzo38 What happens when you try to access it? And which browser are you on?
It loads on my end. It does only work over IPv4, though. If your network or app prefers v6 then it wonβt load.
π¦ zzo38 Β· Apr 07 at 22:10:
I do not have version 6 internet. I can access that host and port, although the connection then does not work. (Does it require TLS 1.3? I do not have TLS 1.3 on my computer.)
π norayr Β· Apr 08 at 00:15:
there was a multi-user chat that worked in gemini browser and used the gemini endless streaming feature.
are there sources? or where is it deployed?
audio calls will not work over gemini because you can't do streaming as client but as server.
well you can have server and software that streams aidio from your mic and be part of vpn with real server and other party.
other party also streams audio.
server is connected to both od you as client, and you both connect to server as clients and receive streams of each other.
πΈ bluesman Β· Apr 08 at 00:31:
@norayr I think you're referring to AuraGem Live Chat. It's actually running at the moment (some of those services have been down).
𦦠ainent · Apr 08 at 02:14:
@zzo38
Last I tested, TLS 1.2 worked but I added a note to test it again to my backlog. In the meantime, hereβs the text of the post:
# Native Applications over Gemini
Disclaimer: This is not an official proposal nor is it an attempt at extending the protocol. Just throwing some thoughts out there.
Lately I've been pondering the idea of native applications (GUI, TUI, platform irrelevant) over Gemini. They could look and feel identically to a native application, only the backend would be accessed over gemini:// instead of http://. Gemini can serve any file type, so the responses could have a MIME type of application/json or application/xml, etc. This would allow for more customized applications than simply dynamic text/gemini via a browser, with all the benefits of Gemini. The downside would be less room for user input, because of the limit on Gemini URL lengths, but that could be mitigated with the Titan protocol.
Has anyone else thought of this, or implemented anything?
π¦ zzo38 Β· Apr 08 at 03:40:
What you describe would work (like it would with HTTP, except the different headers); you might have a different URL for the that purpose (so that Gemini text can still be accessed as well), and multiple implementations would be possible (so it should be documented). (Also it is my opinion that DER is a generally better format compared with JSON or XML, although you could use any format.) (Also: Scorpion protocol has a "I" request type, and for some uses it would be helpful, such as for two-way streaming. Furthermore, if you need user authentication, then regardless of which protocol you use, using X.509 client certificates has many benefits, depending on what your requirements are.)
𦦠ainent · Apr 08 at 04:24:
although you could use any format.
Yeah the format is an implementation detail as Gemini supports arbitrary MIME types.
Also it is my opinion that DER is a generally better format compared with JSON or XML
Could you elaborate? My experience with DER is quite limited. Are they usable for non-certificates?
π¦ zzo38 Β· Apr 08 at 04:41:
Yes; DER can be used for many kinds of structured data, and not only for X.509 certificates. If my nonstandard types are added, then its data types is a superset of that of JSON (in this case, the only nonstandard type used is the key/value list type; the rest of the JSON types are standard ASN.1 types). I wrote a implementation in C (although other implementations exist, in C and other programming languages, but many of the implementations have some flaws in my opinion). My "Super ZZ Zero" game engine uses DER in many parts, and so does some other things I had been working on.
π skyjake [mod...] Β· Apr 08 at 05:53:
@zzo38 I'm curious: why would you use DER, with nonstandard extensions, when there's the well-established BSON? The latter seems a more pragmatic choice for structured binary data.
π» eugene Β· Apr 08 at 10:01:
...and if we're talking established standards, why not CBOR?
π¦ zzo38 Β· Apr 08 at 17:00:
One advantage of DER is consistent framing. Another is that I think the data types are better; there is a OID type and relative OID type, as well as octet string and bit string, and unlimited length of integers, and it does not insist that you use Unicode. BSON, CBOR, etc try to make it better but end up not doing so and are inferior. Note that you do not need to use all of the types, nor need to implement all of them even if dealing with a file that uses them.
@norayr
β https://github.com/michael-lazar/jetforce/blob/master/examples/chatroom.py
Original Post
So theoretically, if a Gemini app had a well defined API, one could make a phone app to interface with just that Gemini app/capsule, correct? So for instance, a graphics based UI on your phone that pulled from a BBS/Bubble API. It goes against the spirit of Gemini I think, but I just had the thought in my head.