As you may have learnt from my previous posts (blog post and fedi posts), I’m writing a client for lotide named Luna. And you might also have seen me saying it’s using Django as framework and my remark on it being unfitting. I am going to elaborate more on this in this post.
Django is a batteries-included web backend framework. It includes:
- web server
- database connector and ORM
- database migration tool
- admin tool
- command line framework
- templating engines
- internationalization tools
- form handlers
There is a lot more that can be installed as plugins, and some of these tools
can be unplugged from the
INSTALLED_APPS in the settings. However, given
that the default contains so much, it can be troublesome to get a minimal
I started writing this client (with Django) because:
- This project (lotide) seems interesting and I’d like to work with it.
- I don’t like the default client. Not that the default one is bad.
- Unfortunately, I don’t program in Rust, and am not willing to, so contributing directly to hitide is unlikely.
- This web framework (Django) seems popular, and some experience with if is required for some jobs so /shrug
It doesn’t need database handling, or administration, or emailing. I would
definitely have no use for most, if not all of
Django is an overkill for Luna. Using a big tool for small task feels very clumsy, with all the tools you won’t use and tools that you have to use.
As I get quickly annoyed with the generated
manage.py and the lengthy
settings.py getting out of hand, I haven’t worked on the client for quite a
while, and am planning to drop development if no one else is taking over.
I have also tried to rewrite it in Go, but it seems internationalization
support for Go is quite lacking. So, I backed to a more familiar stack using
Quart (with better support for asynchronous programming, though it might be
another overkill) and Jinja (which has somewhat matured internationalization
support) and renamed it to a less common name (Yue) to avoid name
conflict which led me to call Luna’s package
lotide_luna. I’m less motivated
than before, and also have less time, so this will move much more slowly.