Perfect is the enemy of good

2021-05-02


If you haven't noticed, Moonlander has not had a new commit in 2 weeks. That's because I was working on something else that I am temporarily calling "Valalander", a "re-write" of Moonlander in Vala.


Moonlander
Valalander

Even that is, however, very slowly developed.

Why?


Because I wanted it to be perfect.


Obviously, no software can be perfect. All software is buggy, yada yada, but Moonlander has some very obvious bugs that I did not want to introduce again.


For example, you cannot scroll if your cursor is over to the side of the text, or you can't CTRL+A a page and have the entire page copied (code blocks will not be copied)


More importantly, it is not accessible to screen readers or similar software.


How would one fix these? Well, I think I have three ways of solving these problems:


Approach 1: Give up and use a web view


This is the easy way out, and is the current approach Valalander takes, though I am still thinking about possibly changing it.


The downsides of a web view is obvious. A huge behemoth of code that does way more than you'll ever need and eats resources like there's no tomorrow.


(WebKit actually doesn't seem to eat all that much so far, but I wish it was, like, NetSurf or something. Do they even have an embeddable GTK widget? I wish!)


The upsides are that, well, it'll probably work, though my current implementation is a bit off as I haven't grasped WebKit2GTK's API yet and am only using it as a dumb HTML viewer.


Approach 2: Give up on GTK, render and manage things myself


Remember what happened to the original Moonlander? Yeah. I don't think I can manage doing this anytime soon.


It's just a whole bunch of work to re-write literally everything and even then it won't feel as native and as polished as the rest of the UI, so why even bother?


Also, this will most likely make everything _worse_ as I am sure GTK devs have thought a lot more about how things interact than I'd have.


Approach 3: Give up on caring about all this


I could just stop caring, and put everything in a vertical box and call it a day. This will totally screw up some stuff like text selection, (you won't be able to select more than one paragraph at a time!) but it should be reasonably accessible (assuming Gtk's TextViews are accessible in the first place, they might not be) and reasonably clean in terms of implementation.


So What?


I don't know what I should do. All approaches have their drawbacks, and while the current Moonlander's approach is just about enough for me, It's not for everyone (for example: anyone who needs accessibility software), and that's not good, and definitely not perfect, in my opinion.


🐺 · CC BY-SA 4.0 · me@ecmelberk.com