Breaking changes for 4.x (Third-Party Lexicons) (original) (raw)

TL;DR: I'm removing third-party lexicon bindings from FishyFlip itself and making it easier to generate them yourself.

Hey folks,

I'm planning on doing a 4.x version line for FishyFlip. I plan to streamline the Source Generation functions of ffsourcegen and make it a shippable component. I don't know the exact form yet (as a standalone program, a Roslyn source generator, a combination of both) but as part of it, I plan to make a major change to the third-party lexicons I currently bundle as part of FishyFlip. Namely, I want to get rid of them.

I currently bind the Bluesky atproto repo for the base level bindings (I.E what's necessary to use Bluesky at all) and third-party websites that run on ATProtocol. By bundling them in, it increases the amount of churn in releases (since any one of the libraries I bind for could update at any time, even if nothing else does, meaning you need to do a release even if one component changes) and the lexicons I bind to don't always validate propertly. The ATProtocol Lexicon system is very flexible, trying to create a C# Source Generator against it is difficult on its own, but how the other lexicons are written led me to add hacks and other things to ffsourcegen that makes it harder to maintain. The Bluesky atproto repo, apart from one instance that has since been fixed, has never given me issues and maintains its compatibility.

So my hope is to get rid of these bindings, clean up ffsourcegen, keep using it internally for atproto and properly maintain it for others to use if they want to write code against other, third-party, lexicons for their apps, without needing to rely on me doing it as part of FishyFlip. Also, checking GitHub, I believe I'm one of the few people who have ever tried writing anything against one of these bindings anyway.