Dropserver Progress - July and August 2024
This is the progress report for Dropserver for July and August 2024. Here is last month’s report.
Work on Tailscale integration is ongoing, but before heading off on vacation I took some time to improve a Dropserver app that I use daily.
Work on the ShoppingList App for Dropserver
I finally put a bit of polish into the Shopping List app for Dropserver and released it:
https://shoppinglist.olivierforget.net/
My wife and I had been using an earlier version of this for well over a year now and it was finally time to make it better.
When working on home-cooked apps, I like to use them without making changes for long periods of time. After so many months, it’s quite clear what needs to get worked on. When you work on your little app once per year, you make the best of that time by working on the things that really make a difference.
The result is a leaner app that performs the tasks it needs to and nothing else. No time to build up bloat.
Among the issues I tackled this time:
- made it a PWA (essential for an app that is used daily)
- improved search for items
- make it much easier to add an item in an ad-hoc way
- add selectable filter to the items list (all items, check stock items, items to buy)
- UI tweaks and more
Already my wife is much happier with this version (win!). I am also pretty happy with where it’s at, but I can already see the outlines of the next things I need to add. However I won’t touch it for several months, and if I still feel the same then, I’ll go ahead and add those.
Tailscale Integration in ds-host
As mentioned before, integrating Tailscale means changing lots of things in Dropserver. There are lots of assumptions baked into the Dropserver code that get blown apart when working with a tailnet. As such, a lot of the work of integrating tailscale is backing out of those assumptions. This is a good thing overall. The Dropserver code will be more flexible and able to adapt to new features down the line thanks to the work happening now.
One specific thing that has to change is the schema of the appspace meta DB. It needs to support one appspace user signing in to the appspace using completely different identifiers (one is a tailscale ID, the other might be their Dropserver ID or email address). Since it’s the first time I change this schema I have to sort out how when and where these databases get migrated. I started work on this in June and finished in August (see commits b320d6e and 8f5ab79).
With that work done, I turned my attention to tsnet
, the embeddable tailscale library, and the vast array of methods and types that might deliver the information I’m looking for from the tailnet:
- is the appspace connected to the tailnet?
- is it “logged in”? Or does the user need to visit a tailscale URL to authenticate the appspace (which happens if no Auth Key is used.)
- who are the peers of this appspace node, and who among them can be considered users? (Meaning: who can I show in the appspace’s list of users and who gets authorized when a request arrives?)
Some of this was not completely straightforward to sort out, but I’m happy to say I made good progress, and I’m starting to look at putting all this together in an implementation.
Deno 2.0 Heating Up
A lot of activity on some issues I subscribe to on Deno’s Github project. It appears they’re getting ready to ship Deno 2.0.
My most desperately needed feature is allow-net-fetch or something like it. The Deno crew looked at it and deemed it was not a breaking change, therefore it will not make it in 2.0. However they seem to say they get the use case for this? So maybe later? For now more waiting…
I don’t know if they’ll make changes to --allow-net
for 2.0. It would be wild if they didn’t. If ever there was a thing to change in the CLI it’s that set of permissions. See my post about allowing outgoing net requests. Also see this issue about how the net permissions don’t distinguish between listen and dial.
When the first release candidates for Deno 2.0 come out I will likely pause my work on Tailscale integration to make sure Dropserver works with Deno 2! So expect that to happen.
It’s no bad thing. I have a few little fixes and improvements I can ship along with 2.0 support. And tailscale integration is going to run long, so a release will be in order anyways.
Moving Forwards Slowly But Surely
Since I got back from my trip in early August, I can’t say I’ve been super productive. I’m actually at about 60% productivity (based on the number of Pomodoros I complete per week) and a lot of that is spent working on non-Dropserver stuff.
So things are moving slowly, but they’re moving. Hopefully I can rev things up a bit now that the kids are back in school.
Til the next one..