It's the first of March, my smol friends! Do you know that that means? It means that the announcement for this year's Remote Outdoor Off-Grid Phlogging Challenge, aka ROOPHLOCH, is six months from now. Further, it means that the announcement for last year's ROOPHLOCH is six months behind us. Today, right now, is the furthest point on the calendar from ROOPHLOCH. Which means if somebody wanted to start, gasp, a *second* annual smol community challenge, and wanted to make sure people could participate in both it *and* ROOPHLOCH every year with the absolute minimum possible risk of burning out on self-imposed computing obligations, today would be exactly the correct date on which to start that second challenge! Hmm...
On an extremely related note, I am delighted to announce that today marks the beginning of the inaugural OFFLine-FIRst SOftware CHallenge, or OFFLFIRSOCH. That's right, I managed to come up with an *even worse* name! This may not even be my final form. In my head OFFLFIRSOCH is pronounced "Awful Fur Sock" (perhaps it's made of KangaROO PHur?). Yep, that's gross, but be grateful I didn't choose the obvious alternative involving discarded internal organs...
How do you participate in OFFLFIRSOCH? It's simple. During the month of March, you need to develop and share some piece of software which is offline-first. By this I mean it either makes no use of the internet whatsoever and happily functions entirely offline without even being aware that anything "unusual" is happening, or else it does make use of the internet but is fundamentally designed around the assumption that the internet is not always available and maintains 90% or more of its functionality when used offline, and will continue to do so no matter whether it gets internet access once per week, once per month, once per year or even longer. You can release your software however it pleases you and make a post in your phlog and/or your gemlog announcing its existence and pointing people at it. Send me a link to your post, and I'll compile a list at the end of the month, ROOPHLOCH style. That's it.
Now, just like ROOPHLOCH, the qualifying bar is deliberately placed very low. You can qualify for having participated in ROOPHLOCH by taking your laptop into your backyard and using your home WiFi, and plenty of people do in fact do that, and that's fine because it is supposed to be easy and fun and inclusive, the more the merrier. But the "spirit of the thing" is to aim for something a little more than that. The more remote the better, the less reliance on permanent infrastructure the better, etc. The same is true of OFFLFIRSOCH. Sure, technically speaking, you could write an implementation of "Fizz Buzz" which was offline-first, but that's not exactly fun or interesting or useful or inspiring because, well, all "Fizz Buzz" implementations are offline-first and that's entirely unremarkable and nobody expects anything else (please don't email me to let me know of some "Fizz Buzz as a Service" implementation you may be aware of, my head is *happily* in the sand on this).
The spirit of OFFLFIRSOCH is to identify those tasks which you routinely use some online service for, not because the task is in any fundamental way one which needs to be done online, but just because that is the path of least resistance. It's a symbolic push back against the absurdity and perversity of the present state of affairs where, for example, the default expectation is if you want to use a computer to convert a temperature from Celsius to Fahrenheit, you won't ask *your* computer to do that calculation for you (heaven forbid!), but you will use your computer to ask some other computer, possibly on the literal other side of the world, to do the calculation on your behalf and then forward you the answer. It's not just unit conversions, but all kinds of things. Search engines, even the non-Google ones, have gotten tremendously good at allowing you to type in all kinds of questions in relatively natural language and get answers. Sometimes those questions are time-sensitive and reaching out to the internet makes sense. Sometimes they are the result of a trivial calculation which would not unduly tax a 25 year old computer and require as input only constant or relatively constant information which would occupy less than one percent of one percent of the smallest hard drive likely to be found on a modern computer. In those cases you *can* solve the the problem by reaching out to the internet, but doing so is an offence before God, it is degrading to the computer and it is corrosive to the user's soul.
99 humans out of 100 would laugh or scoff or roll their eyes or simply fail to even comprehend at that sentiment, but if you are reading this on Gopher or Gemini then I trust that I don't actually need to labour this point terribly hard with you. Outsourcing trivial functionality to the 'net in the name of convenience makes our computing experience slower than it needs to be, more energy and infrastructure intensive than it needs to be, it makes us needlessly dependent upon services which could (and very often do) vanish without warning, and because no sane person would actually pay for a timezone conversion or a distance-between-cities calculation or anything like that, yet it does cost money to run a permanently online server to provide these things, it means we are almost always sending these requests to parties with an existential need to exploit us in any way possible for any scrap of potential profit. It's gross and we all know it, but we do it anyway (me very much included) because, hey, we just wanna know the answer, and it's three seconds away, and it would sure take more than three seconds to do the work to give our computers the ability to give us the answer directly. Well, OFFLFIRSOCH month is the month we sit down and do that work and share the results and help each other slowly but surely snip those pointless tethers and push our computers a little further away from being "fat thin clients" and a little closer toward being actual genuine computers which know things and can do things and stand on their own two feet.
I've taken aim at search engine convenience functions here because they are an easy target, but there's nothing special about them and your OFFLFIRSOCH project doesn't need to attempt to replace one. Do you have an account at some web app which you use in an entirely non-social fashion just to keep track of books you've read or want to read, or things you've eaten, or to manage a TODO list? You could probably (not necessarily, not always, but often) get most of that functionality from an offline program that worked against an SQLite file on a local disk. Have you ever resorted to using some sketchy website to do a file format conversion or to break a PDF file into multiple pages because you got fed up trying to figure out the correct sequence of arcane switches to throw at some high-powered Swiss army knife style that you know is supposed to be able to do it? You or somebody else could write a simple thin wrapper around that program to provide it with an easier, friendly, more humane interface for the user who just wants to use it occasionally without memorising its internal implementation details. Do you use a website to play sounds at some regular interval as a mindfulness aid or to implement some kind of productivity regimen like the Pomodoro technique? This is also entirely straightforward to do offline.
The spirit of OFFLFIRSOCH, in short, is not to write a pointlessly offline-first program just for sake of writing one, but to identify something which you yourself actually do online at least semi-regularly which you know full well could be done offline, and to make that happen. If you can't think of such a thing this month, then you'll at least be primed to keep an eye out through the coming year for potential projects for next year. If you can think of such a thing but you do not have the programming skills to try to fix them, write a post about it and maybe a friendly neighbourhood hacker will take up your cause. I'll include links to "help wanted" posts like this at the end of this post if you let me know about 'em.
Are there requirements on software licensing? No. This is supposed to be easy and fun and inclusive and I don't want to get dragged into making decisions on what counts as "really Free software" or as to whether putting software in the public domain is a good idea or not. That's a first-class one-way ticket to Nofunville. I am taking it for granted that if you hear about OFFLFIRSOCH in the first place and think it's a good idea you are probably going to release your software in a way which is less awful than 95% of other software in the world, so that's good enough for me.
Are there restrictions on programming language or target platform? No. But of course, one of the reasons we have ended up in the situation where the easiest way to solve so many small, simple problems is by going online is because "there's always a browser" available and you don't need to install anything. The more difficult your program is to install anywhere somebody would like to install it, the less effective an antidote it is against pointless onlineism. So it's also in the spirit of OFFLFIRSOCH to prefer small dependency graphs, to use cross-platform languages/libraries/frameworks, to make minimal assumptions about operating system resources, etc. If you are hip to the permacomputing concept of a "bedrock platform", it makes a lot of sense to target one of those.
Are there requirements on completeness? Look, obviously it would make no sense to say that you are not allowed to fix bugs or add features after March 31st, but the idea is the your program should be close enough to complete by the end of the month to be genuinely useful without further development. We are only talking a month here, so don't get overly ambitious. Most online convenience tools are not really so complicated that replacing them in a month is unrealistic! Pick one small, simple problem and tackle it well. If you are finished half way through the month, that is fine. Resist the urge to add bells and whistles just because there is time. Solve the problem and walk away. If you really wanna keep hacking, start a second project.
Are there further questions? Email me, and I will update this post.
As per ROOPHLOCH, I will make a post at the end of the month linking to a persistent public list of all qualifying programs I have been made aware of.
A final acknowledgement: the seed of the idea for OFFLFIRSOCH was planted in my mind years ago when former Geminaut (and author of the Amphora client) makeworld made a toot about how they wondered if they were the last person on Earth who remembered that the `units` command line utility for unit conversions existed. Thanks for the idea, makeworld!