Heylo!

My name is haetae (all lowercase). tae for short if you want to be friendly. I use he/him pronouns.

I've been hard at work with the fanfic archive project on atproto. If you don't know what that is, here's what it is:

GitHub - haetae-bit/fanfic-atproto: experimenting with atproto and decentralized fanfics. tangled.sh mirror: https://tangled.sh/@haetae.tngl.sh/fanfic-atproto
experimenting with atproto and decentralized fanfics. tangled.sh mirror: https://tangled.sh/@haetae.tngl.sh/fanfic-atproto - haetae-bit/fanfic-atproto
https://github.com/haetae-bit/fanfic-atproto

Basically this came about as "what if AO3 could be built on atproto"?

Never hacked on atproto, so I decided to jump in headfirst.

Some of the hurdles I ran into was OAuth implementation and I could not wrap my head around it. I tried making it work with (at the time) experimental sessions API on Astro before but that didn't pan out, simply because I Sure As Fuck Didn't Know A Goddamn Thing(tm) and gave up.

Which is why I decided to try FujoCoded's authproto plugin this time around! (It's still got rough edges, but it's usable right now.)

This really enabled me to start the first real work for the fanfic archive. Adding and updating records to a user's PDS work (sort of)! But the problem is, as always, building a good user experience and user interface.

What would a really good rich text editor look like? How can I land on an actually good editing experience but still stay focused on the vision?

There's already a plethora of options: Quill, Slate, TinyMCE, etc, but many times I've run into rough edges because rich text editors:

  • ... are only designed for one UI framework in mind

    • (often it's React or Vue, rarely found anything that worked in Svelte)

  • Documentation is nightmarish

  • Building on top of, or customizing the editor isn't intuitive, encouraged, or (more often the case) kind of verbose and feels bad

  • Have their own ancient language that I have to decipher, aka, opinionated JSON structures that declare the structure of a document

I'm lazy. I just want to shove the editor component in and hope it works, but that doesn't usually happen. And I need to figure out how to make the editing experience accessible to everyone--not just make it look good on mobile devices--but truly enable fans of all bodies to create and share freaky, weird, loving works of their own.

That means the following is non-negotiable:

  • Keyboard navigation

  • Screen reader support

  • Large font size options

  • Easy to use toolbar

There's probably way more stuff that I need to research, but even screen reader support should be a basic given but so often overlooked. This accessibility shit is hard!! It takes time to understand, and even then I feel like I've only really brushed the surface.

Anyway. I'm sure more people are excited about the backend stuff.

For now, the flow of publishing a potential fan work goes like this:

Log in -> Create an account -> Write text in a special textbox

After writing text in a special textbox, you have two choices:

Option 1: DO NOT CHECK "Publish to PDS"

It's a toggle you manually switch on before you hit "Post". Your fic gets stored in the archive's database that doesn't connect to the atproto. It's completely divorced from atproto entirely and lives on the archive. If the archive goes down, so too does your fic.

Currently, as of this writing, all data is public on atproto. This option essentially sidesteps the privacy problem by refusing to write to atproto at all.

This is really the only way I know how to make sure your data technically stays private. I know there are people working to make private data happen on atproto, but I'm not nearly as smart to figure it out. (I barely figured out how to make new records!)

Option 2: Check "Publish to PDS"

This means your fic is out in the world, ready to be consumed by others on atproto.

More specifically, your fic is posted to your PDS. Other sites may try to "hide" or shadowban you, but other sites are free to display your fic as written without censoring you. At the end of the day, however, your fic still exists and can be viewed by anyone on atproto (as long as your PDS isn't owned by BlueSky, I suppose, but I digress).

Your fic stays with you even if you decide the archive isn't right for it and you want to move to a different archive.

Option 3: ???

I'm considering stuff like having different types of chapters for fics. Maybe you could have a thread fic with all the chapters being BlueSky posts. Maybe you could even have a fic with Leaflet documents as chapters!?!?! 👀 The main problem is figuring out how to render rich text facets and that's, uh. Terrifying.

At the end of the day, I don't feel like these are the best solutions. This archive is still very much a WIP and the architecture is ??? strange. I consider myself somewhere on the scale of "better than beginner, worse than a mid-level programmer" since most of what I learned was self-taught and through sheer stubbornness. Hacking around on atproto has been exciting, frightening, but mostly a positive experience.

It's been such an honor to get feedback, attention, and support on this project. Every day I fight back against the fear threatening to consume my life by building, hacking, drawing, writing, and aggressively yapping about things that bring me joy. I'm really happy to add this project to the mix.

Maybe there'll be another devlog? No promises though.

Okay yapping over. Find peace and love and joy wherever you can find them. Also fuck fascism!