the more hardcore lynnesbian fans may note that fedibooks looks rather similar to curious greg (no not , i mean https://cg.lynnesbian.space)
i did take inspiration from that design, which in turn took inspiration from mastodon's web UI. however, i made a few changes, most noticeably to the buttons, to give it its own unique identity. i also decided to go a little bit brutalist (and i really do mean a little bit) by leaving everything with sharp, square edges, flat colours, monotone icons, and so on.
who says programmers can't design frontends?
you may also notice that fedibooks used to be a different project. i've abandoned the old fedibooks and moved to this one instead. in retrospect, the old fedibooks concept was way too ambitious. it was around the time i was considering how to create a simple UI for displaying complex decision trees that i realised i was in too deep.
why create fedibooks? (long)
I've been working on ebooks bots for a long time. My first project, mstdn-ebooks, dates back to October 2018. It's a much less ambitious project than FediBooks, but maintaining and developing it has still been a formidable undertaking. It's changed a lot since the initial version, and has worked very well for a long time.
Using mstdn-ebooks is nowhere near as easy as using FediBooks. There's a long guide you'll need to follow, and you'll have to install some programs like Python and possibly Git to get working. It runs on your own computer, meaning that if you put it into sleep mode, it stops working. Updating it to the latest version is also your responsibility, and the error messages it gives aren't exactly user friendly.
To help with this issue, I decided to create a Patreon where I offered a $2.50 per month tier to host up to three bots for you. I would take care of configuration, maintenance, updating, et cetera. This worked pretty well up until recently.
A new change in Mastodon and Pleroma adds something called authenticated fetches. Reffered to as "authorised mode" by Mastodon, this new feature prevents unauthorised instances and programs from accessing the API. In other words, if instance A blocks instance B, then instance B won't be able to see instance A's public posts anymore. However, this also means mstdn-ebooks can't see your posts. This can be fixed, however, by requesting permission from instance B. So what's the problem?
I would need to ask every single person I run a bot for to click a link I send to them, and then send me back the authentication code they received. This is messy and annoying, and greatly tedious. Furthermore, mstdn-ebooks' code base is starting to show its age (I used to be even worse at programming, believe it or not), and I thought this gave me a good motivation to create a new project.
When FediBooks needs permission from instance B, all you need to do is click "authorise". No copy and pasting codes and sending them in a Patreon DM. This is much cleaner and easier for the end user, which is what this is all about!
FediBooks is one of the biggest projects I've ever taken on, and it's been wonderful working on it. I hope you enjoy it!
hmm what if someone tries to make a bot that learns from someone with #NoBot in their profile
when you ask me a question like "why pour all this time and energy into creating a free service" the answer always boils down to "i want to make people happy"
that's all there is to it really. my current dream job (not that i'm really capable of working) is a computer science lecturer, because i've seen how dry and boring compsci lectures are and i think i can do better. i want people to learn and have a good time doing it!
if i'm making other people happy, i'm almost always happy! i just need to remember to not let that get in the way of my own health.
looking over this SQL is writing is making me feel very Powerful
i could change fedibooks to only allow one user per instance and all it would take is a single word
i could cause privacy issues and wasted disk space by just deleting one rule
i could change a single column's data type and break pleroma compatibility
a difficult thing to determine is how high should i set the post length limit
my instance has it set to 65535 to ensure i never run into issues, masto defaults to 500, pleroma defaults to 5000
i guess this is supposed to be a microblogging platform so it doesn't make too much sense to allow them to be overly large, and that does technically expose me to some jerk filling my DB with posts that are gigabytes long
65535 it is
the SQL is (probably) finished and it is beautiful
531 (significant) lines of HTML, 328 lines of python, 174 lines of CSS, 76 lines of SQL, 1 tired bune
according to this arbitrary chart i'm about halfway done for fedibooks' first release
it's been a while i last updated this thread, because it's also been a while since i did any major work on fedibooks. i've kinda pushed myself way too hard on it and i'm taking it more slowly now.
that said, i do have some new features to show off! firstly, fedibooks is now capable of scraping user posts. this is one of the key steps towards implementing full ebooks functionality. the first screenshot shows that fedibooks has successfully scraped all 63 of this account's posts.
secondly, there's now a nifty little bug report form for those of us without github accounts, shown in the second screenshot.
there are a few minor features left now, and one major feature - replying. once that's done, fedibooks will be complete.
unfortunately, testing the reply functionality requires me to actually deploy fedibooks to a website, since i can't test it with localhost. this means it's going to be a bit of a hassle to implement.
however, i've looked at what needs to be done for reply functionality, and it seems pretty easy with web push - mastodon will automatically send a request to fedibooks with some info, which fedibooks can then reply to. it should be pretty simple 0u0
i want to implement reply functionality and bot settings, and then i'll release the first version of fedibooks for all to use!
i'm about to start testing the reply functionality for fedibooks 0u0
fedibooks is now live, by the way! i've disabled signups for now, but in the mean time, you can explore the site: https://fedibooks.com/
well i've run into a bit of an issue...
the bot creation process works on my small laptop and pet's laptop, but not on my big laptop. i have no idea why, it's the same code and everything, and my small laptop has the same firefox addons as the big one. i'm reading over the code and i really don't see how this bug works... and why does it only happen on one laptop??
okay i found the issue
this specific install of firefox wants the favicon.ico, and when it can't find it, it requests fedibooks' home page
because your browser is requesting the home page, fedibooks assumes you've finished creating the bot, and resets your progress counter thingy to 1.
this breaks multi-step forms.
okay!! fedibooks is now live and in what you might call early access.
i don't know how well it's going to hold up, because i haven't been able to do much serious testing on it, but i guess we'll all find out together!!
@lynnesbian one amazing bune who has worked so hard and made simething so great. I'm proud of you 💜❤💜❤
@lynnesbian Take as much time as you need to, lynne. Taking care of yourself comes first. Congrats on your progress!
@lynnesbian lynne nO
@lynnesbian super proud of you! gosh!
@lynnesbian congratulations! What a fantastic service
@lynnesbian Congrats!!! 👏🏻👏🏻👏🏻
@lynnesbian i know something else that will be coming soon
@lynnesbian my paycheck!
its not lewd
@lynnesbian coming sune
I might actually sign up for a fedibooks bot...
what's self hosting going to be like compared to e-books? easier? harder? about the same?
@mal it's gonna be a lot easier! you won't need to download or install everything, the whole thing is done through the website. everything from replies to post frequency can be set without editing config files or anything like that. it'll be hosted on my server, so you don't need to keep your laptop running 24/7
oh ok, I misunderstood, I though since you were discontinuing the patreon thing that fedibooks was a self hosted thing, gotcha, this is cool though! I'm really glad it sounds to be nearly ready for prime time!
@lynnesbian try it on another computer and see what happens
@lynnesbian im the dumb tech person so i wont b able to help at all but r there like diferent specs
what kimd of error is it do u kno
@lynnesbian dumb question... Does it work in incognito mode on all 3?
@lynnesbian good catch that's an odd one.
@lynnesbian hmm, I think provided you put a check in to see the version of firefox being run and ask people to update if they're on it, then it's not an issue?
@lynnesbian can you just.... give it a favicon.ico?
@lynnesbian if you haven’t found out yet, the Right Way to solve this is to make your forms POST and check for POST requests - this is essentially why different methods exist (GET requests should in theory never change server side state)
@halcy it is a post form, but the progress is tracked by a cookie
@lynnesbian good luck with the fix, whatever you end up doing!
@lynnesbian reading this makes me scream internally
I hate webdev
@lynnesbian http get shouldn’t have side effects. find some ofher way to advance the counter
@lynnesbian that is, if you’ve got a multistep process, it should only advance with a form post. that’s application state change, and having that anywhere near GET always causes problems similar to yours because pretty much all software assumes GET is safe to do and won’t change application state.
@lynnesbian this story is a classic:
@espectalll should be fixed!
@lynnesbian it is, thanks!
@lynnesbian my wife is goddamn incredible
@lynnesbian That's, great, I'll have to try it out after work.
@lynnesbian I'm getting a 502 bad gateway
@SunSaint should be fixed now
@lynnesbian ok thank you thank you thank you
@email@example.com's anti-chud pro-skub instance for funtimes