Re: chat over gemini (or, let's play with streaming text)

Sorry, I didn't mean to knock on a fun hacking project. I hope you have
fun. :)

I can see the draw of gemtext's line orientation in streaming chat systems.
Maybe it would be a good fit for IRC also?

Chris

On Tue, Oct 5, 2021 at 11:24 AM Omar Polo <op@omarpolo.com> wrote:

>
> Chris McGee <newton688@gmail.com> writes:
>
> > I feel that using Gemini for things where other established protocols
> are better designed for the task is a path to it becoming just
> > another web protocol that tries to do everything, poorly. A much better
> model might be something like Unix where you have tools
> > that do their thing well and also work together well.
>
> I agree with that, there are surely better way to chat!
>
> I was mostly trying to get some fun with the streaming ability of
> text/gemini, and the chat was the first thing I could think of, and also
> the easiest to implement (it's crap written in less than 50 lines of
> shell, including blanks.)  It's more of a demonstration of how easy and
> useful streaming pages can be.
>
> Thinking of text/gemini as a (possibly) "infinite" stream of lines is an
> interesting perks of gemini, and can unlock the creation of simple, yet
> very powerful applications.  Think of a fediverse instance over gemini,
> or maybe station, with a "feed" page that streams toots/posts.  Or a
> news site that streams live events.
>
> Now, not every capsule needs to stream pages of course, but I was mostly
> trying to bring up the point again, and see if it stimulates someone
> to create something more useful. ;-)
>
> > Having said that, I wonder if Gemtext would be a decent marking down
> content in a chat system, such as IRC, or in a great many
> > other places in a Gemini fediverse. Line orientation could be a nice
> feature there.
> >
> > On Mon, Oct 4, 2021 at 2:45 PM Omar Polo <op@omarpolo.com> wrote:
> >
> >  Hello,
> >
> >  One of the things that I love about text/gemini is how it's easy to
> >  parse, and being it line-based it's also really easy to stream it.  When
> >  I started working on telescope, the idea of being able to stream content
> >  was present in the design of the parser from the first draft -- it also
> >  fit nicely with separation in multiple processes (one process does the
> >  fetching, another one the rendering, and messages are sent from one proc
> >  to the other.)  But other than knowing from the code that it should
> >  work, I never played with this aspect of text/gemini.
> >
> >  Fast forward various months, I've just watched the "Why gemini" video by
> >  Tomasino and I got an urge to build something with streaming text.  I'm
> >  attaching a very, very simple CGI script that streams text/gemini to
> >  build an interactive chatroom.
> >
> >  The idea is similar to the one presented by solderpunk in "A vision for
> >  gemini applications"
> >
> >  gemini://
> gemini.circumlunar.space/users/solderpunk/gemlog/a-vision-for-gemini-applications.gmi
> >
> >  and, frankly, I'm quite disappointed nobody has built something like
> >  this before.  (or at least I haven't been able to find it.  I know
> >  kensanata has made some experiments with a mush, but I haven't played
> >  with it (yet))
> >
> >  The idea is to provide two pages: one that accepts input via the
> >  response code 10 and appends to a file, the second is a literal `tail
> >  -f'.  Simple, but it works, and it's immediate.  As soon as someone
> >  sends something, all the clients reading from `tail -f' gets the
> >  message.
> >
> >  (the various `tail -f' gets eventually killed by a SIGPIPE when the
> >  client closes the connection and the server closes the script stdout.
> >  It could take a while due to the buffering, but can be worked out.  I
> >  don't know if servers are expected to kill the spawned scripts -- I
> >  don't recall anything from the RFC -- but I'm probably wrong.  gmid
> >  anyway doesn't kill the scripts, it let UNIX do its things with signals.
> >  Feature or bug?  dunno.)
> >
> >  It doesn't require a client certificates, but uses the subject of it if
> >  provided.  There's a check that can be de-commented to enforce the usage
> >  of client certificates.
> >
> >  I'm hosting a demo at
> >
> >          gemini://gemini.omarpolo.com/cgi/lets-chat
> >
> >  but I don't promise to keep it online.  It's a quick-n-dirty script
> >  (less than 50 lines of -hopefully- portable sh), probably filled with
> >  bugs, wrote only to be a demonstration.  I don't want to moderate it
> >  if/when people write things.  It's really easy to host it locally, for
> >  e.g. using gmid (disclaimer: I'm the author)
> >
> >          $ gmid -x '*' .
> >
> >  from the same directory where you saved the script.
> >
> >  It seems to work with Telescope, Tinmop and Lagrange.  Kristall and
> >  Amfora don't seem to support streaming, or maybe I have an old version.
> >  Elpher doesn't stream by design.
> >
> >  I hope this inspires someone to build amazing things with the streaming
> >  capability of text/gemini.  There are a lot of possibilities, for
> >  instance capsules like station could stream the feed, or the
> >  notification page; it could be better than clients continously
> >  refreshing the page.  Think of it like some sort of "websockets" but for
> >  humans ;)
> >
> >  Gemini clients could "ring" or use some other kind of mechanism to
> >  inform the user that more content is available in a page (for
> >  e.g. Telescope adds a `!'  before the tab title.)
> >
> >  Cheers,
> >
> >  Omar Polo
> >
> >  P.S.: this is also a partial reply to the talkat spec.  I love seeing
> >  what creative things folks are building, and I really hope the best for
> >  mbays and their idea (if I got the paternity correctly :P), but I also
> >  like the idea of doing these sort of things over gemini.  On one hand I
> >  don't want to push gemini over its boundaries, on the other I love doing
> >  that :)
>
>

---

Previous in thread (10 of 12): 🗣️ mbays (mbays (a) sdf.org)

Next in thread (12 of 12): 🗣️ Anna “CyberTailor” (cyber (a) sysrq.in)

View entire thread.