πΎ Archived View for bbs.geminispace.org βΊ s βΊ Geminispace βΊ 17900 captured on 2024-07-09 at 02:16:33. Gemini links have been rewritten to link to archived content
β¬ οΈ Previous capture (2024-06-20)
-=-=-=-=-=-=-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ βββ»ββββΊβ³βΈβββΈβββ ββββββ» ββββββΈβ» β»β»β» β»β»βββ»βββΈ βββ«β β β β£βΈ βββ β ββββ« β£β³ββ£βΈ βββββββββββ«ββΊβ βΉ βΉβββ βΉ βββΈβββ ββββΉ βΉ βΉββΈβββΈββ βΉββ βΉβΉ βΉβββ βββββββββΈβ»β» βββΈβ» β»β» βΊβ³βΈβ» β»ββββββΈ β£ββ«ββββ ββ β β ββ β β ββ£β³ββ£βΈ βΉ βΉββββββΈβΉβΉ βββΈββββββΈ βΉ ββββΉββΈβββΈ (with illustrations borrowed from @mozz ^[mozz-ascii])
Gemini is famously a text-first protocol, one that improved upon Gopher by shifting to UTF-8 encoded gemtext.
That being said, there remains a lot we can do to improve text culture.
The purpose of this document is to briefly outline the general features of what ASCII is, should be, and could be. It is not complete. Follow up these leads with your own investigations.
ASCII, like fascism, is a term whose popularity is not matched by any specific definition. Technologicaly-minded purists like to hairsplit in debates upon the knife of 7-bit ASCII. But everybody knows ASCII is much more than that. We need a general picture. That is the purpose of this section.
ASCII is a culture that began with 1960s-70s maniframe computing, through early 80s Internet and BBSing, and declined from the mid-90s WWW-browser era.
It was the way people communicated. It was decorated by ASCII art, sometimes colored by ANSI codes.
Many of the core Internet protocols were designed around ASCII.
It's about the way ASCII characters look individually and as a whole.
ASCII are characters set strictly to a grid, with every character fitting in a specific place on the screen. The fonts are monospace to facilitate this. There are no proportional width fonts.
ASCII is comprised of characters originally from Western languages adapted from Latin.
There is 7-bit ASCII, which is technically important.
But there are also the ASCII characters introduced by the many code- and ISO-pages.
This is an often overlooked but crucial aspect of the ASCII /experience/.
ASCII uses the keyboard as an interface, and is restricted to characters reproducible from the keyboard.
This necessarily means that ASCII is not a unified experience. But it also means that some characters in UTF-8 are /not/ ASCII, not only because they do not belong to the original standard, or to any code page. But also because they are not immediately accessible via the keyboard interface, but require specialized and complex keystrokes.
It makes a difference, for example, that Gruber's Markdown uses characters like `*` and `_` and not `π` and `βͺ`. It means that Markdown can be part of the physical process of writing, rather than a meta-process involving complex keystrokes or cutting and pasting.
ASCII includes no vector or raster images.
Instead, ASCII includes graphical glyphs, which can be used to create images in ASCII.
Although many of these are not available immediately from the keyboard, they are considered ASCII because they are an important part of ASCII culture, particularly ASCII and ANSI art and animations. They do represent a meta-process, typicaly using specialized software like ACiDraw that makes these characters more available.^[ACiDDraw]
__.--. ____ ! /`___ \/ / / _\/ _\ _.' _ /_ _ ___ _____|> _/ ( - ( /[ \ _/ | __/\ \_ /_______\ n_ / _ \ / / / _ \_.' / / / \ (_n_n_n_) /^`) ___\ _/ \| / _.-" / ____/ _ __\ \ | |> _/_`__ ``\ / /_ /_/ _"- / _ ___/ __ (_)| _! \ /^\,-/_,/\_ -\--"-._ __|> \_ - \ _ - __ ____ / | _/ | - '__[__//_'__/\_\-.^--/__\___\ _\__. / / / ` \_/ _ - '- __ _/[n_||_n___!_!_!__[_n_ t__] / \_ (_) _.-``/ \ __ - / \_ - [ \__,[_|==-\_____\\\-Y//`!/////` \ - __/ / __/ | ) /_) \ \___/ /!___/|\\\' ``, ``. `\ ---' ___/ - /'-/ ____/ -' -' /` _,,^%%\\\\'__, ``/ `|``|^,_ /_.-----.__/_ / _ .-.___/ _.^^^%%^ ^%%^%,, ``- " `^/%%%%," \__! ______/ ,%%%^%%%%^^^%%%%%^^%%%,,, ``%``\%%^^`%, |> _%%^^%%%^%%%%~%%%%%^^%%%%%%%%^`%`%'\%%%^^7========c ,%%%^%%%%%%%%%^"````^^^`%~%%%%%^^%%%%'%%%^^![][][][]| ,`%%%%%^^^^%%%%%^``` ___```%%^^^%%%^^^^.%%\`` _ .-""-.( /`^%mozz%%^^^^%^`_.--/ ``\_ `\` ``` ````|%^\``|/ _ _/! __// ``\ `^^` / `/ ``/ ``\ `| ___ ``%%^``^.-'`y ``\__ ________ / '-`\`' _`` ``/ `/ ``\ ` / `\_ ``'%%^/ `| `/ `'-, ______ "''/___]--'"-------'--[____.----^---/_____`\------'--`^"---^--'''"`-^ -^-
The place where all the above happens is the terminal, the place we need to make our home.
Why do we need to make the terminal our home? Because it is the simplest interface where plaintext can be transmitted and consumed. It is therefore /the beginning/ and /the foundation/ of our freedom. Historically, this much is obvious. It is just a matter of fact. But people have forgotten their history. They are trapped on the top floor of the teetering skyscrapers of proportional width font infrastructure, owned and operated by governments and mega-corporations who have /proved/ they do not hesitate to tune their technologies to exploit and manipulate us.
The terminal, by comparison, is like living in the desert. It is a space where the truth can be fashioned, principly because conditions keep things simple and straightforward. This simple existence is what we need to embrace. And we embrace it when we operate out of the terminal, where we can come to appreciate the true taste of water.
An aside: We need to stop thinking about Gemini as a protocol, and begin thinking about it as a terminal-based culture. It isn't the fault of Gemini that nobody has revolutionized the terminal browser. It's our fault for migrating Gemini culture back to the GUI and the proportional-width font browser (Lagrange). I'm happy we have such a professionally made and supported browser. But I would also be happy to leave it behind, if a suitable alternative made itself available. Unfortunately, too many developers look down upon the terminal. Either it is treated as a method for getting easy results, or as a comical dinosaur.
In the first instance we find Gemini browsers that are happy to color Gemtext and pretty much leave it at that. Innovations in the interface are limited and haphazard. Most projects are left incomplete. We see a general lack of sustained energy in the terminal app arena as nobody views the terminal as important, necessary, least of all /glorious/.
As for the second group, which views the terminal as a comical dinosaur, we get /no/ terminal applications. We get nothing.
ASCII Culture foregrounds text and is therefore more intimately related to core intellectual documents -- books, articles, essays -- that form the backbone of our civilization than what is on offer in the Dying Overworld -- attention-grabbing, shocking or anger-inducing indexical images and videos.^[indexical]
It cannot be over-emphasized how important text culture is. It keeps us reading and writing. Without indexical images and video at the ready, we have to work to creatively reconstruct the scene using text descriptions. It raises the bar for participation. Text is true medicine in a culture of quackery.
() |.----.| __ _.-^""^-._ ||.''.|| -.| _______ .'| `````` |'. ||'7.'|| || |.----- |` !__________! `| |'----'| || ||````` '<`____________`>' | ____ | || ||`` , || ||.==.|| || || - L\-[\---------|| ||| ||| |! _ _.--._'| s s s s .-"""-.'| _^-/`. ||| -,-""-._ 'r-'(_ / | \)!________ ( /. .\ )! / _ \^| ||| (/_ _ ] ) /' _ . \_/ '\' --------- ' _A_ \\ . -' !-=-.| \'/' `-' | ' _a r/ '.__y !." ___ ". ! q_ ___.' \-. !__.(o \_.\-. |!. "--`777 ! `.__ .====-. ^ ___ LLLLn` || __ _.-._-".-====. ^'__."\| | ."_ /")| | o| _ _ !r/" 'n ("\ |! LLL/ _ \! _ _ ! \ ! ""\/ /\ |\~/.-||-| |-||'__ | --------- 6` ' 7` || | |/||'-._ ! |\ ' ! \ '/|: || | | ||---"./ ===- _ '^_/ _."|| | | ||\ /| | \ `". _'--. || | | || `\777___|~|__,___|_.-'||\| | || '._."|| || \ `""` `` \.||_| |/|| ")--- '-'- ^-, ' || | | || / || || \ _ \|'-' '-'| \_/''"'"'"'"'"''`._. |!_! '-'| __/__|| |:<"_._____ /" '\ | .---. | ./________________.\ | _____ |.-----:| || ||! \\||__[ || ".___ _.--. || | || || || ||! \||< _\_|| ____.____7 <%>c__-'"____ ||_,__>|| !' '' !| \ ||| l-||"_..--'|| !| || ( '' mozz "" !|-._ || _|!
Since ASCII historically leans heavily into Latin-derived languages, to include other languages ASCII has to learn to live in a UTF-8 World.
Since UTF-8 was designed around the idea of respecting 7-bit ASCII, the answer is superficially yes. But UTF-8 has many more characters than ASCII, most of which were not part of ASCII culture historically. The "everything, everywhere, all at once" of UTF-8 at first appears in tension with the particularity of ASCII. My view is that ASCII culture has to adapt, by taking on new forms of expression. But it is also inherently conservative, because ASCII, at the end of the day, is about what we can type, and that is determined by which characters our keyboards make available to us. So ASCII culture is not likely to radically change, even if it has to adapt.
I think of it like vinyl records. To be considered a vinyl release, an album must be pressed onto a plastic disc, and stored in a paper / cardboard sleeve featuring some outward presentation. But any kind of music can be pressed to vinyl. I believe, or I hope, that any language and any expression can be presented through ASCII culture, not only English or Latin-derived languages.
UTF-8 is the most popular interpretation of Unicode which maps every character in every human language (and much more) to specific numbers.
Let's define "UTF-8 /World/" as the entire technical stack responsible for making the world's languages presentable on computer screens, including terminals.
These innovations take us beyond the classic Dec vt-100 that revolutionized the 80s.
The hallmark of ASCII is simplicity. Adapting to non-Latin languages introduces many complications.
First, the grid is no longer precisely the grid, because many languages do not obey Latin's 'one character per grid' logic. Some languages compose different elements into a single character, or have elements that span grid spaces. These issues cannot be solved by having a single character for each permutation, as that would involve perhaps thousands of characters per language. The terminal can't just print a single, grid-aligned character, but has to compose various elements /across/ grid spaces.
Second, many languages run right-to-left (RTL), like Arabic and Hebrew. To address this, other technologies have been introduced. Solving these problems has introduced complications. It also introduces security issues, such as the RTL character being used to clandestinely overwrite text, giving the reader a false impression of the actual content of the file.^[RTL-vuln]
And so on. (There are more and more complicated issues.)
We have a decision to make:
I believe the latter, with security caveats, is the only viable solution. But that means getting intimate with UTF-8, and all its complexity for the terminal.
There is a casual attitude toward information security in Gemini, just as there is a casual attitude toward the privacy implications of the protocol itself -- which, after all, operates in much the same way as the rest of Clearnet, via DNS, and providing no special features that ensure anonymity. The security guarantees of Geminispace amounts to "At least it's not HTTP/S", which is hardly convincing.
And so, too, there is a general lack of concern about software written /for/ Geminispace. I have not seen any serious discussion about protocol or software security in Geminispace. The general view is that browsers and servers be /easy/ to compose, not that they should be secure. (Perhaps these discussions are taking place elsewhere.)
Allied protocols, too, are not designed especially with security in mind. Misfin, for example, promises email over Geminispace, but as far as I know offers no innovations -- beyond TOFU, which it borrows from Gemini -- that solve the core issues with the existing SMTP protocol. It's a toy that's destined to break under sustained usage, just as SMTP broke.
In many ways, Geminispace offers the public a step backwards -- into a pastoral world view before the Eternal September when protocols were simple and people were friendly, before the trolls and the spammers arrived. But that is incredibly naive.
The reality is we are locked in an information war, today with governments and Big Tech, and tomorrow with AI. If our protocols and software are not supremely secure, they will be compromised, and we will lose everything we fought to defend.
Everything we make for Geminispace /must/ be secure by design and by default.
If the goal of writing new software in a new protocol is security, we cannot casually adopt all available solutions. We have to address the security implications of complexity of the post-ASCII world.
For example, how do we deal with the issue of clandestine RTL overwrites implicit in the design of UTF-8? One solution is to require 7-bit ASCII for important configuration files and code. But that resolves the issue by excluding world languages, in particularly RTL languages like Arabic and Hebrew. Another solution is to introduce special characters into the presented text wherever LTR/RTL codes are being introduced, so that the end-user is aware of them.
Another issue is that ANSI cursor codes introduce a vulnerability similar to the LTR/RTL codes of UFT-8: cursor codes can present misleading text to the reader of a text file.^[ANSI-vuln] While we want the benefits of ANSI color in our terminal, it seems we also have to scrub certain ANSI codes to make secure software. It's one reason why I'd like to move away from ANSI color codes. We should be able to use color in the terminal without wondering what else is sneaking in the back door.
What is required, then, especially if we fully embrace color and the UTF-8 World, is consciousness about the security implications of taking on complexity, with tools developed to detect and mitigate threats. These must be made available to everyone as secure executables, not tucked away in a language-specific library. We need applications that scan files for various issues, including embedded Javascript, and other threats.
The only language I know of that qualifies for this purpose is Rust. Java is similarly memory-safe, but requires the Javascript runtime environment to run.
But, let's be honest. /Anything is better than nothing./
____________________________________________________________________ |-\ \ \ \ \V | |= \ \__\ \ \ /| |`\ \ ,__, , \ \| || |`=`.\ ."-._\/ \\/| / \ V || |.`=`=\ _(!) ."`'. v yy `l\|/ / ` ` Y ,| | `.`=`\"`k^j-+(! ) `-"<"` , |\Y y-` ` ` __ | | | | `.`=\ \ \ HY /-/._._`, \ / \|,j/,/ `` _.aAAAAa| |\| | "^""'^"'"",\ |`\ ` Y \ X Y y `` _.aAA _.--n-| ||| | """`'^Y/"` \ Y \//_.-n-._AAAA _" `. | ||| |`. \aaaaAAAAaaAAa\|||//_______\ _." [] `-| ||| |=-\._ "'"'"'\AAAAAAAAAAAAA\|| | |"_____,r-r-r| |/| |._=-.`\-/._ '"'''\_~~~~~~~~~~~_\|<'--AAA-A'-r-r-`__.-''| | |```--\_Y=`=``-.._ '"''\_~~~~~~,-` ```-,_ _.-`.^. | i| |``'``.\|`-..._=`=`'--.._ "''\----^-----------'`_.-` Y i--i--i/i| |'`'`'`^|`.___-/`-/..=`=``-. \__ `--- _i--i|/i--i--i -| |-.``/--/._=------, ``--..\ \___ `-i--i| __,.| |--------' ``-.:_--.._ \____ ``````` _.-| | `--.__--.._ \____ `---| | `-.._`'--.__ \_____ | |_____________________________________________________\______________| mozz
We need a document format made for text in the terminal. Gemtext is a good start, but it can be improved upon.
We need more ASCII art and decorations in our documents.
We need more ASCII /artists/.
We need a modern ASCII composer. We have text editors and we have ASCII art software (with limited functionality), but we don't have an easy to use text /composer/ that marries text and ASCII art layout work. For example, we should be able to add an ASCII image to a text, and have text wrap around the image. I have never seen this capability decades after it became a norm in proportional width font software like Microsoft Word. A composer would have a way of interacting with an ASCII library, so that it's easy to preview and insert ASCII decorations. How about layers? How about color fill? How about boxes with text inside? How about changing the opacity of text, or making it more or less contrasty, or adding customized syntax highlighting with something simple like CSS? How about line wrapping at custom margins? (The most obvious lost-cost solution, customizing Emacs is not acceptable. Emacs is an insecure front-end for Lisp. What we need is a bullet proof limosine.)
We need a better /color/ ASCII image format that evolves beyond ANSI codes. An obvious solution is to adopt the HTML color code convention which features two styles:
ANSI codes
Isn't it obvious that we need a better solution?
We need a better animated ASCII image format that improves upon cursor-based animation formats of the past.
We need an ASCII podcasting format, marrying audio with full-copy documents (not fragments).
We need an ASCII video format. (This doesn't go against the principle of text-first because ASCII video isn't indexical.)
We need a modern ASCII media editor that puts all the above together.
We need new allied protocols that leverage these new formats.
All of this has to be designed with security in mind, to avoid the errors of the past.
The world moved on from ASCII in the mid-90s. To modernize ASCII and revitalize ASCII culture, we need fresh insights into old problems, and the development of new ideas.
We need more software that (a) leverages, elevates, and improves upon ASCII culture and its techniques, and (b) adapts to the UTF-8 World with (c) eyes open to the contemporary (and threatening) security landscape.
There is a risk that the energy of Geminispace will peter out, leaving ASCII culture once again decomposing in its grave. None of us should take this opportunity lightly. It may be the last any of us get to lead a considerable portion of the online world away from the existing Orwellian Internet infrastructure. It means that we have to move fast -- /and fix things/.
[mozz-ascii]:
[indexical]:
[ACiDDraw]:
[RTL-vuln]:
βTrojan Sourceβ Attack Abuses Unicode to Inject Vulnerabilities Into Code (2021)
Is Unicode Considered Harmful? (2021)
[ANSI-vuln]:
Donβt Trust This Title: Abusing Terminal Emulators with ANSI Escape Characters (2022)
A Blast From the Past: Executing Code in Terminal Emulators via Escape Sequences (2014)
TERMINAL EMULATOR SECURITY ISSUES (2003)
Disable ANSI escape codes (2023)
ansi-cursor-position vulnerabilities (2019)
Jun 13 Β· 4 weeks ago Β· π mozz, uyasga, pkitz
π meidam Β· Jun 13 at 21:48:
Wow, this must have taken a while to post on here
π istvan Β· Jun 13 at 23:13:
Unicode superseded ASCII because a good chunk of the world's languages cannot be written in ASCII.
As more users came online you saw every region's operating system running in a different codepage that broke everything else. As the Internet userbase became truly global, Unicode was the answer.
With how much Unicode has opened up text art possibilities and solved communication problems, asking people to go back to a mojibake-first approach and have to spend 2 minutes playing guess the character encoding on each document is a hard sell.
You might as well plea for everyone to go back to ATASCII or PETSCII.
πΉοΈ skyjake [...] Β· Jun 14 at 03:47:
@meidam It was posted via Titan as a single "long text" upload.
βοΈ Morgan Β· Jun 14 at 06:20:
Quite a post, thank you :)
I think of Gemini as more of sitting by a lake enjoying the sunset than any kind of war. There's a lot to enjoy, people are enjoying it ... if others are passionate and want to build new things, great! But it doesn't detract from the enjoyment. In the lake metaphor I guess that's some people windsurfing? :)
Lots of people here seem to like consoles, TUIs, ASCII art ... the shell is one of my personal top tools. But the <other> two windows I always have open when working are VSCode and Chrome, which for me are also top tools. I don't see Gemini as a callback to an earlier age, it's a great tool right now that lives side by side with others :)
I've written about big tech vs Gemini on my Gemlog, the tl;dr is that there is not really any "vs" ... big tech does not know or care that Gemini exists; check again if it ever reaches ten million users. (But really, 100 million is the lowest they can usually count). Which is fine. Governments? Probably the same, unless Gemini turns into some kind of crime ring, in which case, okay, security will get more important ;)
π drh3xx Β· Jun 14 at 07:41:
I've never really used ANSI colouring in terminal. Didn't realise how inefficient large colour space representation was! Wow! That definately needs a better alternative. Maybe some state machine to switch between following data in stream is utf8 text vs colour command vs font change? Could enforce ltf <-> rtl transition rules too. Maybe push a stack ptr at transition and move cursor to end of buffer/next row on switch to rtl and have checks that a write will not cause current ptr to cross that pushed ptr boundary?
βοΈ tenno-seremel Β· Jun 14 at 11:11:
Interpretation of ASCII art is hard for me, TBH. At least at the letter size Iβm using. UTFβ8 is a must, of course. As for setting text colorsβ¦ Iβd rather not have this feature as that usually doesnβt work great with colors Iβve set for myself. Or at least it should be easily strippable from text.
π» mediocregopher [...] Β· Jun 14 at 13:56:
"Securing ASCII Culture" has a very jingoist ring to it, that framing is a pretty big turn-off from me.
What exactly is being secured, and from whom? You talk about very hypothetical security concerns, but what is the actual threat model? "Secure" is extremely relative, there's no such thing as perfectly secure, only "secure enough", and to understand "enough" you need to discuss what is being secured and from whom.
Is the concern that UTF-8 parsers in use by clients are vulnerable to some kind of exploit based on input? Or that users can be tricked into clicking/reading/inputting something they didn't mean to by way of weird unicode nonsense?
β freezr Β· Jun 14 at 15:23:
Incredible effort very appreciated. πππ
I love ASCII but I don't believe that Gemini is made for ASCII or terminal only... As a matter of fact I love using Lagrange, whether is on desktop or my mobile. I use exclusively TUI tools to write and upload my gemlogs but it is more for convenience that for any other particular reason...
π istvan Β· Jun 14 at 17:19:
@mediocregopher So I'm not the only one who noticed how much this sounded like something I'd read on /pol/.
β freezr Β· Jun 15 at 04:13:
I found this on the Fediverse, I think it is relatedβ¦
β https://hpjansson.org/chafa/
π stack Β· Jun 21 at 12:32:
There is a point to be made that smallnets may be local. If ASCII works for your audience, why not. In spite of what they teach the kids these days, inclusiveness is a form of premature optimization and niche solutions are often best when infinite money is not available.