Title: What if Internet stops? How to rebuild an offline federated
       infrastructure using OpenBSD
       Author: Solène
       Date: 21 October 2021
       Tags: openbsd distributed opensource nocloud
       Description: 
       
       # Introduction
       
       What if we lose Internet tomorrow and we stop building computers?  What
       would you want on your computer in the eventuality we would still have
       *some* power available to run it?
       
       I find it to be an interesting exercise in the continuity of my old
       laptop challenge.
       
       # Bootstrapping
       
       My biggest point would be that my computer could be used to replicate
       itself to other computer owners, give them the data so they can spread
       it again.  Data copied over and over will be a lot more resilient than
       a single copy with a few local backups (local as in same city at best
       because there is no Internet).  
       
       Because most people's computers relying on the Internet to have data
       turned into useless bricks, I think everyone would be glad to be part
       of an useful infrastructure that can replicate and extend.
       
       # Essentials
       
       I think I would have to argue this is very useful to have computers and
       knowledge they can carry if we are short on electricity for running
       computers.  We would want science knowledge (medicine, chemistry,
       physics, mathematics) but also history and other topics in the long
       run.  We would also require maps of the local region/country to make
       long term plans and help decisions and planning to build
       infrastructures (pipes, roads, lines).  We would require software to
       display but also edit these data.
       
       Here is a list of sources I would keep synced on my computer.
       
       * wikipedia dumps (by topics so it's lighter to distribute)
       * openstreetmap local maps
       * OpenBSD source code
       * OpenBSD ports distfiles
       * kiwix and openstreetmap android APK files
       
       The wikipedia dumps in zim format are very practical to run an offline
       wikipedia, we would require some OpenBSD programs to make it work but
       we would like more people to have them, Android tablets and phones are
       everywhere, small and doesn't draw much battery, I'd distribute the
       wikipedia dumps along with a kiwix APK file to view them without
       requiring a computer.  Keeping the sources of the Android programs
       would be a wise decision too.
       
       As for maps, we can download areas on openstreetmap and rework them
       with Qgis on OpenBSD and redistribute maps and a compatible viewer for
       Android devices with the OSMand~ free software app.
       
       It would be important to keep the data set rather small, I think under
       100 GB because it would be complicated to have a 500GB requirement for
       setting up a new machine that can re-propagate the data set.
       
       If I would ever need to do that, the first time would be to make
       serious backups of the data set using multiples copies on hard drives
       that I would I hand to different people.  Once the propagation process
       is done, it matters less because I could still gather the data
       somewhere.
       
 (HTM) Kiwix compatible data sets (including Wikipedia)
 (HTM) Android Kiwix app on F-droid
 (HTM) Android OSMand~ app for OSM maps on F-droid
       
       # Why OpenBSD?
       
       I'd choose OpenBSD because it's a system I know well, but also because
       it's easy to hack on it to make changes on the kernel.  If we ever need
       to connect a computer to an industrial machine, I'd rather try to port
       if on OpenBSD.
       
       This is also true for the ports library, with all the distfiles it's
       possible to rebuild packages for multiple architectures, allowing to
       use older computers that are not amd64, but also easily patching
       distfiles to fix issues or add new features.  Carrying packages without
       their sources would be a huge mistake, you will have a set of binary
       blobs that can't evolve.
       
       OpenBSD is also easy to install and it works fine most of the time. 
       I'd imagine automatic installation process from USB or even from PXE,
       and then share all the data so other people can propagate installation
       and data again.
       
       This would also work with another system of course, the point is to
       keep the sources of the system and of its package to be able to rebuild
       the system for older supported architecture but also be able to enhance
       and work on the sources for bug fixing and new features.
       
       # Distributing
       
       I think a very nice solution would be to use Git, there are plugins to
       handle binary data so the repository doesn't grow over time.  Git is
       decentralized, you can get updates from someone who receives an update
       from someone else and git can also report if someone messed with the
       history.
       
       We could imagine some well known places running a local server with a
       WiFi hotspot that can receive updates from someone allowed to (using
       ssh+git) push updates to a git repository.  There could be repositories
       for various topics like: news, system update, culture (music, videos,
       readings), maybe some kind of social network like twtxt.  Anyone could
       come and sync their local git repository to get the news and updates,
       and be able to spread it again.
       
 (HTM) twtxt project github page
       
       # Conclusion
       
       This is often a topic I have in mind when I think at why we are using
       computers and what makes them useful.  In this theoretic future which
       is not "post-apocalyptic" but just something went wrong and we have a
       LOT of computers that become useless.  I just want to prove that
       computers can still be useful without the Internet but you just need to
       understand their genuine purpose.
       
       I'd be interested into what others would do, please let me know if you
       want to write on that topic :)