This is a story of the development of Gaptap for Linux.
As operating systems get security updates and other kinds of patches, your own instance will similarly develop a ‘gap’ – you’re lagging behind. Depending on how the updates have been set up, there’s
There’s a few underlying causes which are making the gap wider. Blame you, blame me. We resist change. We’d like to be in peace, undisturbed. Believe me, everyone’s been there.
It was post-Christmas holidays, 2018. Perfect environment to gobble some code. I was actually thrilled once again by ‘dialog’, a tool that makes it ~somewhat comfortable to create retro-look ASCII character menus. That is, emphasis on the word somewhat.
This used to be and still is a major issue; the longer you do not update your OS, the bigger a attack window the adversaries (bad guys) get.
With a lot of hobby programming projects, I’ve found that there’s a really fascinating phenomena. Programming is an art, where you want to skip – or fast forward – to the results. But the road is one that doesn’t let you simply skip parts. You will touch tough.
I had a vision, perhaps fueled even by the sheer retro appeal of ‘dialog’, of managing Ubuntu software packages powerfully. The most interesting part is to make things click in the “backend” logic, but a practical part of making something useful and stick to the users, is making it feel good. Linux CLI software is known to be a bit scruffy, and bare. It’s ok – part of the philosophy. But with Gaptap I wanted to dress it up with a specific slick, though character-based user interface. A program called dialog seems to fit perfectly. It takes a lot of the rote work away, giving a parametrized system that
“Run, tap a key, let the program do its magic. You’re done. All simple and nice.”
What, where, how, why?
Ubuntu Linux is composed by the Linux kernel; often also a graphical user interface (Gnome / others), and a lot of other software packages. Keeping the packages up to date is crucial for security. Vulnerabilities are bugs in software that have known exploits. An exploit means that someone can use the software to gain information from your machine, possibly without even you knowing it.
The packages are commonly kept up to date by aptitude – a (real) package manager. Word ‘real’ in the sense that what I am developing is merely sugar on top of real functionality. With Gaptap, I want to make things more accessible and casual. Software updates should be a walk in the park.
What’s the role of package managers?
Deep down in the technical sense, package managers are fairly complex piece of software that keep track of installed software, resolve dependencies, offer solutions to user – all in an aim to keep the whole selection of software as stable and secure as possible. Early in the prehistory of operating systems this aspect of management was completely overlooked.
Package managers are often divided roughly into a backend and frontend. The backend is the really heavy-lifter, while frontend offers human users sensible choices. Some frontends are creamed with nice graphics, while others are not. In Linux-world, it’s often the results, speed, consistency and repeatability that matter over the aeshetics.
On top of aptitude there’s apt which is said to be a “front-end”. apt supports the familiar commands like
apt install pine
With Gaptap, I would either directly be driving aptitude or piggy-backing on apt. Future will show.
Basic idea of Gaptap
- make a dynamic list of upgradeable packages
- show the list appropriately: paginated and formatted, on-screen
- allow user to choose updates in a intuitive way: cursor keys + Space
- support quickly quitting the app with Esc and/or “Q” key (quit)
- when user confirms choices, gaptap forms a “execution line”
- the execution line gets passed down to bash (interpreter)
- results is captured back to Gaptap so it knows what is going on
The challenge that users face is that of change resistance. We’d like to just keep churning as-is, uninterrupted. Updates can be a curse word for many. Ubuntu and other Linux flavors have done a great job with the whole update cycle. Linux has far surpassed rivals in ease of updating, and also in the non-invasive nature of the update process.
Whereas some other operating systems are notorious for showing mind-boggling numbers in blatantly unmotivating window, Linux does a great job.
Gaptap started with a rather simple goal: make Linux software updates even better. Simple. Fast. Powerful.