Skip Navigation
General Programming Discussion @lemmy.ml

Fighting human trafficking with self-contained applications

lwn.net

Fighting human trafficking with self-contained applications

Found this article interesting. Some (technological) highlights for me:

She initially wrote simple Python scripts to help with chain-of-custody problems. Those scripts worked on her machine, but she had trouble delivering the software to the people who actually need it.

Yeah, Python, Java etc. are quite portable in theory, but we also always ship the runtime along with it at $DAYJOB, because we don't want to deal with different runtime versions and users failing to install them properly. And since the runtime is compiled for specific platforms, we effectively have non-portable artifacts anyways.

Deuson's first attempt at distributing her software was to bundle it using Kubernetes. That sort of worked, but it turned out to be hard to get it installed in police departments. Opening ports in the firewall is also often prohibitively hard. "Getting software into these environments is really difficult."

Eventually, she decided that the only way to make this work would be to write a single, standalone executable that does everything locally. It would need to be able to run on ancient desktop computers, in a variety of environments, without external dependencies. That's why she ultimately chose Rust to write FolSum.

I feel like our industry poured tons of effort into making things deployable via Kubernetes, but there's still an absurd amount of niches, where this just does not make sense. Always interesting to hear about yet another such niche...

One thing that users really liked about the Rust version of the application was that it starts quickly, she said. Lots of commercial software is big and bulky, and takes a while to start up, leaving users staring at splash screens. FolSum starts up almost as soon as the user releases the mouse button.

Yep, I never quite buy it when this is deemed unimportant in commercial software development. The chance of your software running all the time is really low. And if it's not running all the time, I need to start it before I can use it. If I need to wait a minute for that, that takes me out of my workflow and I'll kind of hate your software for it.

It turns out that non-technical users like the approach that she has called "GUI as docs", where the application puts the explanation of what it does right next to the individual buttons that do those things. Several users have told her that they wished other software was written like this, to her bafflement. For-profit software is often a forest of features, which makes it hard to find the specific thing one needs, especially if the tool is only rarely used, she said.

I've been looking to take that kind of approach for our GUI at $DAYJOB, too. Our software is not either something that users use all the time. They might not look at it for months at a time. It's ridiculous to assume that they will remember all the concepts, just as ridiculous as it is to expect them to look at a completely separate manual every time. So, just dotting help texts around the place seems like a good idea.

1 comments