Notes on computing philosophy2020-04-05
I have been concerned with the perspective of technologists for some time. There is a blindness to repeating the wheel - I do not believe new ideas have been embraced for a long time: we’re still using UNIX based operating systems (rooted in the age of time-sharing) and, likely for similar reasons, the von Neumann architecture. This is at a time when parallel and “multi” computing is increasingly called upon in our daily lives. Many of us have not just one personal computer; we have laptops, smart-phones, tablets, desktops, single-board computers and embedded devices etc. Yet, each of these duplicates the Von Neumann architecture and has their own state which, at an abstract level, fragments our digital existences into many silos.
Centralized software-as-a-service and web technologies tout to alleviate this fragmentation by turning the suite of personal computing devices into “thin-clients” of “
time-shared systems” - often referred to euphemistically as “The Cloud”. There is a certain irony in this repeat of history but it’s certainly more dark than comical:
- We worry about privacy more than ever yet entrust our computing and data with someone else
- We worry about security yet operate in obscurity on many levels (closed-source software running in unknown locations on unknown hardware… I could go on)
The term “service as a software substitute” as propriated by the FSF has never felt more relevant.
Many great ideas were lost, under-utilized or eschewed in favour of “the shiny and new” mainly, due to commercial interests. In a previous post I suggested that we should focus on what is fundamentally important. Re-assessing how computers play their role in our lives should be a priority since we rely on them so much. I believe computers should compliment our lives rather than detract (on all levels). For me, this means a low mental overhead (systems are harder than ever to maintain and reason about); technology that serves the user, not commercial interests (e.g. free software, open hardware). This means, focussing on the software commons along with incremental systems re-design component-wise. I believe this will require a change of perspective on the part of the “enterprise” software developer as well as a truly “open-source” community; currently, the landscape appears to be poisoned by commercial interests as well as “elitist” hackers vying for personal success.
There are a few key ingredients that may help us become closer to this vision:
- Building blocks that can be easily and safely composed to create useful programs (think in terms of UNIX pipes and Haskell-like IO)
- An architecture shift towards personal networks of computing resources - they should have the capability of exchanging data with other people but this should be under control of the user)