Moving to lower tech
Contents
Introduction
Today i bought a Raspberry
PI Zero v1.3 which is a very small 5$ single-board computer with few I/O, i
plan to gradually use it as my main computing platform for the
years to come instead of a powerful desktop computer.
It will run lightweight operating systems and i will probably
use RISC OS at
first which is a late 80s and 90s OS design, the OS is single-user and employs cooperative multitasking, it is very
lightweight.
A compact 5$ computer with 1GHz single-core
ARM 11 CPU and
512MB RAM
The idea is to empower myself back with a software / hardware
combo tailored to my passion projects which are mainly about
programming (mainly software rendering graphics related stuff) and
DIY stuff.
This hardware / software combo will allow me to enjoy modern
general-purpose computing as well as "retro" computing. The
hardware is also compact enough that i can bring it with me when i
travel.
I also want to do more low-level programming like bare metal
OS development, compilers stuff and hardware tinkering, some of
that is facilitated by the PI due to the 40-pin GPIO.
Parts of the idea is also to gradually shift things that i
used to do on a desktop (or portable) computer to energy efficient
specialized devices such as a mobile phone or a gaming
device.
RISC OS 5, a lightweight ~100 MB (~6 MB
bare) single-user OS that employ cooperative
multitasking
Lower tech ?
Lower tech is related to the low tech philosophy, it is a wider and positive balanced version of the low tech movement, it takes into account the philosophical, environmental and social aspects and oppose the planned obsolescence of objects and question the consumer society, as well as the materialist principles underneath.
This idea (and related ideas like Degrowth) is not new
and was formulated differently by various peoples across recent
history, my actual view is heavily nuanced and influenced by many
peoples and ideas such as permacomputing, the
hacker
culture, especially Jacques Ellul
view of technology, Alexander
Grothendieck and Aurélien
Barrau, also Jean-Marc
Jancovici for why all of this matter for the future.
I especially like the idea of human-scale
computing, "computing" that ones (or a small community)
entirely master from the grounds up.
Why a PI Zero ?
Using a Raspberry PI Zero / RISC OS combo is a step to
reduce the amount of abstraction layers and overall complexity of
the computing platform while increasing its reliability, it also
means way more controls of the platform overall with hardware /
software precisely tailored for my needs that i can hack a bit, it
also use fewer resources.
On the hardware point of view i chose the PI because :
- the board is power efficient with roughly less than 2 Watt consumption most of time
- it has a single-core CPU which is perfectly adapted to RISC OS
because it only use one core
- CPU is an ARM CPU
which is well adapted for RISC OS, it is also RISC
so efficient and elegant
- CPU is clocked to 1GHz which is sufficient for most of my
computing needs, it does not heat up a lot, the RAM amount is also
sufficient
- there is about no wasted I/O
- it is very cheap and has a very small form factor
- supported by many OS
I chose the first version of the PI Zero (not the W version)
because i have no needs for Wi-Fi or Bluetooth, using a
mobile phone as a media / network device or a second dedicated
device is more than enough, i might tinker with insecure OS anyway
so no internet is probably good... There is
still ways to add networking if needed.
I also didn't chose the second version of the PI Zero
due to the quad core CPU, RISC OS can only use one core so it would
have been way overkill. This is the same reason i did not buy a
LapDock
Zero (a portable computer built for RISC OS) although the idea
was attractive.
There are boards such as the Beagle but they are more expensive
and not as elegant on the form factor aspect.
Raspberry
PI Pico is also interesting as a very cheap and energy
efficient computing platform and i may test it in the
future, it is severely limited in I/O and features but there is
alternative boards adding video output, MicroSD slot etc.
making it functional enough to work as a mini desktop computer, the
Pico sounds like quite awesome overall to hack on and for resources
constrained OS development.
Raspberry PI Pico, a tiny board using a
microcontroller
chip with 133 MHz dual-core ARM Cortex-M0+
Anyway, the hardware choice is not perfect and it may evolve
in the future, on the hardware side there is still many issues that
ones should be aware of with those kind of single-board computers
such as all the proprietary parts and opaque / undocumented
components.
There is also the
AgonLight2, a 8-bit computer based on the Zilog eZ80 CPU,
seems to have lots of support with graphics API / BBC BASIC and
Lo-Fi graphics.
But in the end i am eagerly waiting for RISC-V hardware at the
moment which sounds promising and looking to build my own computer
later on which will probably be 8-bit.
Why RISC OS
?
On the software aspect i chose RISC OS at first because
i want to explore it a bit more, it is also tailored to my actual
needs :
- it is lightweight, simple and run well on low-end
systems, it is also accessible and i know its API a bit from
my
experience with Archimedes computers
- can make complete use of most computing resources anytime
due to its 80s architecture (i.e. cooperative multitasking), it
feels a bit like how old-school personal computing used to be; this
means you can crash (and corrupt) the system easily but it is also
part of the empowering fun
- i will be the sole user of the computer so i don't need a
multi-user operating system at all, most modern OS are multi-user
which i tend to dislike for all the complexity it adds (especially
UNIX ones)
- development tools and documentation integrated from the
ground up; BBC BASIC, an amazingly fast and powerful BASIC is
integrated within RISC OS, this also means its multi-pass assembler
is available for any low-level programming (it does not support the
newer ARM instructions though so it is stuck in the
90s)
- RISC OS was specifically
made by Acorn Computers for their ARM-based CPU which are used
by Acorn Archimedes computers which are the late
80s / 90s 32-bit computers i like to tinker with, i can develop
for the Archimedes easily because it uses the same (mostly
unchanged) tools; one of the main reason i chose the Archimedes as
a 32-bit "retro" platform is due to the elegance, simplicity and
power of its design, especially the ARM2
CPU which was eyes opening to me
- i like the RISC OS way of doing things, it is not as
fully featured as a modern OS but it works well enough with a low
complexity architecture
- RISC OS is still being maintained although development is slow
RISC OS drawbacks:
- there is much less software available compared to popular OS
although it still have about 30+ years of programs due to its
80s-90s history
- it is still limited to 32-bit
- still no dual monitor setup on PI (being worked on
though)
- it is not optimized for the target system (i.e. only use a subset of ARM instructions)
- there is no way to use the GPU unless you want to do some very
hacky stuff
- stuck in the 80s / 90s (no worthwhile memory protection, no virtual memory, limited multitasking, 255 files handle maximum etc.), all of this may be hacky to work around although somewhat fun as well!
- it is
not free to build which is a serious drawback to me, sounds
like shady practices also...
RISC OS
experience after a week (update)
So i tried RISC OS 5 on PI Zero for a week and it is as
expected, my conclusion however is that i prefer the old versions
(RISC OS 3) running on Archimedes hardware because it was
definitely more tailored for that era, it felt also way more stable
!
I discovered that the build environment is not free (see
above) which is an absolute deal-breaker to me, also had some
issues with a half-recognized wireless mouse and a non recognized
ETH port (from a USB Hub), i wanted to try to fix the mouse driver
by tinkering with the code but that is how i discovered that the
build environment is not free...
I did some enhancement of my RISC OS low-level
library and framework but also stumbled on very odd behaviors
with Obey / Command files, did many workaround for things that were
working in RO 3 so i guess it was OS bugs.
Here is potential OS bugs i found (this was working fine in RO
3) :
- OS_ChangeDynamicArea seems to undo OS_RemoveCursors; fixed it by calling OS_RemoveCursors after OS_ChangeDynamicArea
- calling an Obey file with a set of two commands (Run filepath and Delete filepath) where filepath is a Command file which have BASIC / TEXTLOAD / SAVE / QUIT commands had very odd scheduling behaviors, i even had a "this file is already open" error when running the Obey file after simplifying the Command file to only have a Echo command, this was fixed by using Filer_Run instead of Run in the Obey file and writing a simple Command file with the Delete command
- i had odd scheduling behaviors when running a Command
file which contained BASIC calls from within BBC BASIC (using
OSCLI) multiple times, the BBC BASIC code was setting up some
environment variables dynamically prior running the Command file
and the Command used them, the result is that the environment
variable never changed (it did in the 'parent' BASIC), it seems to
be related to the fact that the OS is single tasking (unless ones
uses the Wimp multitasking environment) so this is not really a
bug, i didn't try this on RISC OS 3 though, in the end i just
generated the Command file content and called it later from an Obey
file.
There is also a rebooting bug when i plug or unplug the USB
Hub (Atolla USB HUB Network 301), also had this behavior on Plan 9
so it is not the OS i guess, maybe it require too much power.
The OS is very fast and a joy to use due to this, it boot in
few seconds and reboot is of no hassle. (which is kinda important
for that kind of OS :-)
Alternatives i might try
Also tried to run Inferno
but it is a bit harder to try as there is no native builds, seems
anyway that it is basically Plan 9 around a VM, it looks
different though because it uses the Tk toolkit.
Why not GNU/Linux ?
I am not satisfied by GNU/Linux. This was my
main OS since ten years, i love its overall flexibility, massive
support and large choice of distributions but i don't like it much
as a day to day system, it is too busy trying to compete with other
popular OS with its own set of issues, it feels like a maze of
things joined together and i don't want to waste time with
something that is way larger than my needs.
GNU/Linux was also designed as a multi-users system, i think
however that single-user OS cut complexity a lot and i don't see
the point of multi-user base software in current days personal
computing (unless it is really well thought likes on Plan 9...),
most of it can be implemented easily externally if needed. This may
heavily depends on the use case of course but my point is that it
is too often integrated, forced and not easily ignored because it
is part of the original OS design. (probably for business reasons;
systems that needs high reliability and security)
The same thing could be said on the hardware layer by the way
which is perhaps even worse on the complexity case leading to many
security
issues. Modern CPUs have huge amount of layers e.g. microcode,
virtualization, caching, speculative execution, OS easing stuff,
fault / exception handling, power management, security stuff,
several modes... and it is just the tip of the iceberg. Not
necessary a bad things but all of this is generally integrated as a
whole to provide to an eventual use case which may never
happen.
Although old the introductory paper Plan 9 From
Bell Labs outline some of the legacy issues with UNIX (some of
which may still be relevant)
Also, i always preferred BSD
operating systems over Linux systems because they are cleaner
and more consistent (i.e. great documentation and file structure,
ports system, sources cleanliness for OpenBSD) and i am also fond
of the BSD licenses, i did use OpenBSD a few times in the past and
FreeBSD at
work.
GNU/Linux was an okay alternative since then as it allowed me
to enjoy modern gaming (and optimal accelerated graphics) on
desktop.
I also had many practical issues with GNU/Linux such as
computer sleep issues (which works half the time, still the same
issue after upgrading in 2024...) or rotten packages state which
prevent major distribution upgrade, this depends on the
distribution and hardware i guess but overall the health of my
system declined over the years. Still many random crash at startup,
odd behaviors such as system sluggishness and long boot time (i
suspect that all this may be due to NVIDIA driver though) on a
newly installed system in mid 2024...
Might still use a minimal low maintenance GNU/Linux (or BSD)
system in the future but it is not my actual focus, i want to try
things out !
Alternatives i might try
Many advanced and
notable
alternative operating systems exists such as React OS, BeOS/Haiku, Temple OS but they also come with their
own things i dislike: x86 focused, C++ for Haiku (although the
object-oriented API is very clean overall so it is probably just
biased / taste at this point) or severe restrictions for Temple OS
(see
A constructive look at Temple OS for why it is still
interesting), many also does not run natively and are thus mere
toys because they are lacking device
drivers.
There is also interesting projects on the extreme spectrum
such as Collapse OS which is a
minimal OS designed for improvised machines, see also Dusk OS.
Plan 9 experience after a week (update)
Plan 9 is
an operating system that Bell Labs made after Unix to fix
many of its problems and push the idea of "everything as a file" to
its extreme. It is generally seen as a research OS / concept OS,
some of its ideas were studied and were added on other
OS.
So i tried Plan 9 (with 9legacy
distribution image because this is seen as a continuation of
Plan 9) and i am quite satisfied by this OS so far, it felt quite
natural to use although being accustomed to UNIX based OS is
probably of a big help.
The Rio
windowing system is straightforward to use, simple and minimal,
love the fact that the program run in the window it is created
instead of programs creating a window. It is also very hackable so
can be extended easily if ones lack features.
I like that all the window management (creation, destruction,
etc) is handled through the menus available by clicking the mouse
buttons, it still support common stuff like resizing by dragging
the window edges etc.
The usage of a 3 button mouse feels like RISC OS although they
are handled a bit differently, this was quite natural for me to
adopt after RISC OS because it wasn't that foreign.
One of the coolest moment is realizing that you can run any
commands from texts by middle clicking on it (or select + middle
click), seems pretty handy !
Acme text
editor / shell (sorta likes a minimal IDE)
seems pretty cool also although i didn't explore it much yet but
seems to be a great way to write code!
I had some looks at the OS architecture and source code and it
is easy to understand, sane and clean, there is also many tools
available.
Boot is fast (~10 seconds) but not as fast as RISC OS. (RISC
OS being an old-school OS and purposely built for ARM platforms may
be the reason)
Plan 9 isn't low tech at first glance but i think it is anyway
because of its original network-centric goal, minimalism and
overall elegance, it is a distributed OS which can effortlessly execute any program across multiple
hosts on a network using a single
message-oriented protocol so many of the now mess which
handle that through complex custom software is unnecessary on Plan
9, it would be handled effortlessly and uniformly by the OS, Plan 9
can be seen as the time-shared computer ideal of some of the low
tech movement on many of its original concepts.
Plan 9 also has much less CORE complexity than says Linux due
to its carefully thought architecture, this can be seen when
looking at the amount of code of Plan 9 and Linux when they were
comparable.
Conclusion on Plan 9 is that it is a good candidate to use as
a main OS although there is much less software (or even hardware
support) than popular OS of course so it is a bit rough, there is
still some good base amount of hardware support and software that
ease the experience, most stuff i used on RISC OS worked on Plan 9,
there is also no way to consume most media content that peoples may
find on the Internet for example (there is a web browser but it is
kinda primitive) so it is not for everyone probably but if you are
curious or just looking for an elegant, minimal OS and you don't
care much about the media consumption aspect (or not afraid of
doing stuff yourself) i think it may be adequate.
For better hardware support (especially USB Ethernet)
i also tried the 9front
distribution which can be seen as an active version of plan9, seems
it was less stable overall but USB Ethernet adapter
worked at least compared to the vanilla plan9, an easier way to
get connectivity is to use RNDIS which is basically
using a smartphone connection, ones just have to run
ip/ipconfig after enabling RNDIS on Android to make it
work.
There is also a Linux
emulation tool which is able to run Linux/i386 ELF
binaries.
Progressively switching to dedicated devices
Smartphone
Most of what peoples do these days on a computer are related
to work or the internet, combining both most of the time. Most
peoples also use a smartphone as they provide everything needed to
consume massive amount of contents in a comfy device form.
The idea of the smartphone (or tablets) is truly
groundbreaking; a powerful handled general-purpose computer device
connected to the world, it is a bit akin to the tricorder /
communicator device in Star Trek, it provide immediate access to
the world knowledge database, sensors, massive amount of
entertainment, worldwide communication access and more. The boom of
these small devices brought some well appreciated UIs major
rethinking as well.
Star Trek tricorder
device
Phones are generally overpowered and that is okay to me as it
makes perfect sense for this particular device, not because of
gaming actually even though it may be the base motivation (and also
due to the ecosystem high requirements) but because all sort of
heavy content may be consumed (videos, very high resolution images
etc.) and it should perform perfectly to load, present and
manipulate them (to some degree) at any times making sharing as
smooth as possible.
I think of these devices as a perfect fit for internet content
and the consumption of digital content.
Phones are energy efficient, quite reliable and stock Android
always did quite well for me on the software side. On that last
point i think Android does a good job at masking its underlying OS
lineage.
This does not means phones are all perfect, there is many
issues that plague smartphones probably because of how they
originated (and the underlying environment), it could be made way
better such as being more ethical, more repairable, dropping
planned obsolescence, having more decentralized platforms, using
open source principles for both hardware and software, less ads
driven... there is some new EU laws which improve all of this which
is a good thing, we should increase awareness of all these issues
and support better practices and alternative projects.
They could perhaps entirely replace desktop computers (even
for business cases) with more openness by associating them to
peripherals such as displays and interaction devices (keyboards
etc.) so it become some sort of pocket terminal. There is some
hints of that (without openness and a bit different in philosophy
though...) by looking at the recent foldable smartphones, some
manufacturers build multiple screens device with an adaptable form
factor.
I will continue to use my phone as-is until good and
affordable solutions pop up, the projects i am right now monitoring
on this space is the PinePhone and Librem 5.
Gaming
Gaming is no different, it can be addressed by using dedicated
devices (such as handled portable gaming devices) following
individual needs.
There are wonderful compact gaming devices nowadays, powerful
ones like the Steamdeck but also
severely constrained ones like the Arduboy which is credit card sized
(Gamebuino as well) with
peoples doing highly creative stuff despite the limitations. I
especially like all these 1-bit recreation of popular games showing
that nice stuff can be done with extreme simplicity (ones can push
1-bit graphics very far with dither):
Dark & Under, a dungeon crawler game on the
Arduboy
There is also lovely text-mode / ASCII-art looking games such
as Stone
Story RPG with incredible animations, perhaps this sort of
rendering could be pushed quite far with specific device also, a
device that would exploit characters / tiles and 1-bit / 2-bit
rendering would have a quite low hardware complexity ?
Anyway, the point is to progressively use a small amount of
reliable dedicated devices instead of relying on a powerful desktop
computer most of the time. This also has mobility
advantages.
The case of 16-bit /
8-bit computers
Using 16-bit or 8-bit computing platforms is a lovely idea as
well, they are the easiest to build / use and they can be great
vehicles for expression, see all the software made for 8-bit
fantasy computers such as TIC-80 or PICO-8
as an example.
Peoples do highly creative works on these platforms despite
high constraints. See also BBC Micro Bot.
There is also a wide amount of concrete platforms to have fun
with (mostly custom but some like the Mega65 are also available in batch) with
many peoples doing highly creative
work in this space as well.
Again, i also love what the
AgonLight2 board is doing, bundling some modern interfaces
linked to a powerful 8-bit CPU but with late 80s graphics.
The simplicity of some early OS
targeting such computers like CP/M is attractive as
well, uncomplicated single-user single-processing OS, here is an article of why an
OS like this may still matter.
As for old-school 8-bit platform choice
i quite love the COSMAC VIP (1977)
for many
reasons, the RCA 1802 CPU looks
elegant and RISC-like (not devoid of weirdness though) with plenty
registers and a very simple architecture, way simpler than the 6502
(less addressing modes etc.) while having more registers is all
good for me ! Although unrelated i also like that it was used in
early space probes. The other reason is the RCA CDP1861
Video
Display Controller which is equally simple sporting a 64x128
black and white frame-buffer. Another reason is that the CHIP-8 interpreted
language originated from there !
Emulated COSMAC VIP graphics displayed on an old black & white
cathode ray tube TV
back to top