New Direction Needed: Computers Suck.

First published, August 2016.

Computers, mobile phones, tablets and other smart devices all suck. 'Whoa!' I hear you say, but it's true. Sure, they are almost ubiquitous in the developed world at least, and they are often invaluable for communications, entertainment, learning and productivity. Often times they don't work too bad either. So what is the problem?

There are two big problems as I see things currently. First, that progress is unnecessarily and severely stunted, both technologically and socially, as a result in part of an over abundance of really old tech. Second, that the impact of this technology on privacy and freedom is much talked about but increasingly under fire.

Stunted Technology

There seems to be a deficit of good ideas making it to the user experience of contemporary technology. Desktop computer interfaces in particular are still heavily grounded in the early days of computing. Windows, menus, toolbars, icons, cursors and the like were all readily available for personal computing by the late 1980s (the original Apple Macintosh was at least one personally familiar and relatively mature example of such concepts.)

Considered in the context of this article, the mobile space has experienced some relatively mild innovation. This is probably a result of touch and gestures replacing the computer mouse. Such devices still borrow heavily from the desktop platform.

Both mobile and desktop share an 'application centric' paradigm. The use of the term 'app' to describe programs that can be downloaded or purchased for your computing device is a conspicuous manifestation of this mode. If you want to check your email, you open your email app. If you want to send a text message, you open your messages app. If you want to watch a movie, you open your favorite movie app. The major players (Apple and Google) were both sporting _millions_ of apps at time of writing.

Basically, aside from sometimes more responsive graphics, a little extra eyecandy and a few more features, the essential user-facing functions of computing devices have actually changed very little in almost thirty years.

A chief annoyance for me personally has been the lack of obvious innovation in file-systems. If you do anything significant with your computer, being able to save and organise your work is essential. Whilst the underlying technology in this area has advanced significantly, I'm still forced to organise everything hierarchically from the bottom up. The introduction of desktop search in major operating system distributions has not liberated me from this burden. Nor are such search capabilities particularly mature. The Mac 'smart folders' feature was still routinely crashing on me under light use in version 11 ('El Capitan') of Apple's operating system.

Window management is another nuisance. This annoyance is highlighted by the number of add-ons and new features at one time or another whose sole purpose is to assist in this task; minimisation/maximisation, multiple desktops and full-screen mode are all prime examples. Linux provides some hope here with a proliferation of tiled and stacking window managers. Though you still have to be confident enough and have the time to find and install such a gem.

When we do get changes, we often seem to go backwards. Take for instance the humble scrollbar. We have had them for decades, yet now with the advent of touch they're completely disappearing. Often you can no longer tell at a glance where you are in a document, nor for example whether you've finished reading it. Although I don't object to having thinner scrollbars on touch and small-screened mobile devices, do we really have to take a usability back-step by removing them all together? (This guy has a particularly amusing post lamenting the disappearance of scrollbars).

By far my biggest gripe with modern software is the proliferation of bloat. At the mention of 'bloat', most 'office suites', desktop environments (Windows, Mac and Linux) and web browsers immediately spring to mind. In 1996, I could run a reasonably capable web browser including unwanted support for JavaScript _and_ Java, along-side an email client, a word processor, perhaps a small game and my desktop environment on a computer with less than one-hundred megabytes of what would now be considered geriatric memory. It mightn't have been smooth with all that, but it worked. A few months ago, just prior to ditching macOS for good, my computer was already using about 10x the amount of high-speed memory before it had even loaded anything other than my desktop environment. Even if I boot Debian linux to a console on my laptop - with no graphical user interface whatsoever - I'm still using twice the memory the little old Mac was back in 1996 doing all those things.

Now, I wasn't born yesterday. I've been programming computers in some form for over 25 years and much of my more recent work has been in C, that arcane and unforgiving language of operating systems, device drivers and kernel hackers. I realise that today we have Unicode, accelerated 2D graphics and cool languages like Python. And using a little bit more space for buffers to improve system performance when we have so much memory seems a perfectly sane thing to do. None of that stuff, however, justifies such a stark constrast. Modern systems are bloated beyond belief.

All that software bloat has a number of dire implications, some of which I will go into later.

Yet I have not even begun to talk about user interface bloat. Just as the software itself has become gross, so too, much of what passes today for a user interface. As a human being, I have limited I/O bandwidth. The brain and body do amazing things, but there are some things for which I'm just not suited. Maintaining focus on my writing when there are icons bouncing up and down, things flashing, and a litany of buttons adorning the edges of the screen that would make the controls for a nuclear powerplant blush is, well difficult at times. You do not have to look far to figure that other people have also experienced this problem. Many tools for writers and graphic artists alike often have a full-screen clutter-free mode, wherein all non-essential buttons, toolbars, widgets and menus, are temporarily vanished from screen leaving the content as focus of attention. With the distractions minimised, the user is hopefully more able to concentrate. There are enough distractions in everyday life without your computer adding more to the fray.

Computer user interfaces have a long way to go, and in my opinion, quite a bit of catching up to do. Whilst there are some promising noises as things such as speech recognition and facial recognition become more mature and mainstream, there is much to be concerned about.

Social Implications

I can't help but wonder if the proliferation of distractions and the diet of junk that we 'feed' our bloated digital workspaces isn't just a reflection of a much deeper illness. Society as a whole seems either too distracted or at least sufficently pacified, so as to remain frighteningly ineffective at countering injustice, oppression, inequality, intolerance and other conditions that are sadly very much a part of the fabric of our society today.

Could it be that what we feed our technology is having serious flow on repercussions for our humanity? Complex systems like computers and societies often develop feedback behaviours. When we are delivered millions of 'apps' is it any wonder that we appear to have lost our focus on what is actually important? Can we really expect to be innovative and imaginative, when our children grow up socialised into a clearly capitalist, materialist, consumerist mindset?

What Freedom?

Free society is under seige. The very tools that have the potential to support the oppressed, to strengthen our defenses against tyrany and to chart an innovative, equitable and peaceful future are under threat, and being used against such just causes. There is a battle being fought and it is important that we don't easily or quietly relinquish our civil liberties or stand idle whilst governments commit atrocities in our name.

The tools that people often rely upon to network, discuss, raise awareness, organise and counter oppressive, invasive and tyranical systems are often produced and run by organisations that are themselves symptomatic of the disease. Large corporations are either actively or inadvertantly (and probably both) producing proprietary software and devices that leave users open to massive potential for identity theft, data loss, sabotage and unauthorised surveilance by just about anyone with the interest and the skillset. The scale of mass, worldwide government surveilance (much of which uncovered by the whistleblower Edward Snowden) is unprecedented.

Free software, most symbolic the GNU project and Linux kernel, provides a real opportunity and platform for significant positive cultural change. It provides tools which unlike their proprietary counterparts are subject to review by many eyes and the security benefit that comes with that opportunity. It provides the potential for users to shape the technology to their needs, rather than having what remains of their creativity (after socialisation) beaten into submission by conformance to someone else's ideas about how things should be done. It provides a fantastic opportunity for learning from others. It provides real opportunity to people who are beginning life on a very uneven playing field, rediculously skewed in favor of the wealthiest few in society.

The GNU project and the Free Software Foundation have provided considerable direction and leadership on this front. Essentially the freedoms advocated by such proponents of free software give you the right to deal in free software as you see fit. In practice, licenses such as the GNU General Public License and more permissive examples such as the so-called BSD License are all similar in this regard, with the few restrictions that are imposed intended primarily to promote the continued existence of free software and to ensure a software author is at least credited for their contribution to a particular application.

Despite the efforts of such organisations, free software is in danger. Ironically, the free software community itself is just as much at fault as anyone else. The proliferation of choice of software has an unintended consequence that effort is diffused amongst many projects. The open nature of free software enables many eyes, but also allows projects to fall victim to the second system effect or to become feature-laden monstrosities over time. Most strangely of all, in an effort to 'fit in' on the desktop, the free desktop seems to have become too obsessed on the past, on conformance with long-established interface paradigms. Rather than vocally challenging these old paradigms (as discussed earlier), the emphasis has been on imitation.

With already substantial external pressures (cultural, economic, corporate and state), it is imperative that such internal impediments are minimised. My particular expertise are in software, so it is with this objective in mind, that I examine the freedoms articulated by that venerable pillar of software freedom, the Free Software Foundation. The four freedoms outlined by the FSF are a good start, but frankly they don't go far enough.

Lets start with the first: "The freedom to run the program as you wish, for any purpose (freedom 0)". This is one of the most concisely articulated and useful. Aside from the obvious implications for the end-user, however, it also suggests that we should develop software whose design is intrinsically concise, well documented and flexible. Software authors need to develop applications and tools so that end-users have the potential to easily recombine and reconfigure the software in ways that the original author did not necessarily intend or imagine.

Small modular tools, solid documentation, standards support (where appropriate; de facto and formal) and scripability are all attributes that should be considered as software matures.

I believe that ease of installation, configuration and use should extend to the average computer user, not just programmers. As programmers, it is too easy to assume that everyone can cope with layers of abstraction, cryptic shell commands and configuration issues.

What I find is a mixture. Overall, however, there is a lot of pretty ordinary software when examined from a more naive user's perspective. You are not really free to "run the program as you wish, for any purpose" if you cannot understand it, let alone get it installed. Even a single simple misconfiguration or compile error is often going to be 'game over' for the naive user. RTFM (read the fucking manual) doesn't quite cut it guys. Whilst I acknowledge there has been much work done in the past decade in this area, there is still much to be done.

The second freedom articulated by the FSF, essentially, the freedom to study and modify the functioning of the software, necessitates accessible source code. GNU clearly at the spirit of this freedom by defining 'source code' as "the preferred form of the work for making modifications" (GNU GPL version 3). Distributing deliberately obfuscated source code runs contrary to the spirit of this freedom, and the terms of their General Public License (GPL).

There is source code and there is source code; aside from different coding styles, there may be substantial differences in code readability between authors and organisations even within the same programming language. It is the position of the author that we should not stop merely at a human readable source form, but insist on software whose implementation is relatively clear and comprehensible. Really, what use to me is the source code if there are several hundred thousand lines of it, no internal documentation and the readability is like legalese and often far worse? It is worth noting that I am not the first person to espouse such ideals. Knuth's TeX typesetting system indirectly promotes a form of programming dubbed 'Literate Programming', where code and documentation are woven together with much akin to a good novel or poem. Whilst code is still written and maintained by humans, the aesthetics and readability of said code ought to be as important as it's availability. Whilst not everyone would necessarily consider themselves an artist, when availability is effortless, surely some effort should be made to make software source code truely accessible?

New Direction

It is in this vein that I find myself advocating a much more minimalist philosophy for software development. Software should be both physically smaller, and provide generally smaller, neater user interaction paradigms. There is no need for free software to remain rooted in the desktop environments of the past, and no fun in it either.

I am optimistic that if we all put our heads together, we can make something truely pristine. So I will be putting my own proposals down forthwith. Personal areas of interest include:

Cool Projects

suckless - these guys have the right idea when it comes to software bloat. Although some would consider their perspective a little extreme, it also highlights what is possible and what we could be doing so much better. Their work is aimed at power users, however, and there is a need for a happy medium between this extreme and the unnecessary bloat of products like LibreOffice, and poor old X11.

A motherfucking website. - if you'll pardon the language, this website is illustrative of a more minimalist, functional philosophy applied to the world wide web

Single-file public domain libraries for C

Small GUI toolkit for C

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.