Perkify - Introduction

Written by Rich Morin.

Contents: (hide) (show)

Path:  AreasContentOverviews

Precis:  introduction to Perkify (VM-based Perkian)

Perkify provides a convenient and unintrusive way to add open source software to personal computers running Linux, macOS, or Windows. The Perkify distribution provides thousands of command-line tools and support libraries, offers the prospect of personal web servers, and more. To keep up with additions, discussions, and updates, subscribe to the Perkify mailing list at (

Original Motivation

The open source community has produced a wealth of software, much of which could be of use to the visually disabled. For example, there are text-based applications for processing audio, documents, images, and more. There are also a number of specialized programs that are intended to assist blind and/or visually-impaired users.

Unfortunately, installing and configuring this software presents a largely impassable barrier to entry for many users. Issues of library and operating system incompatibility can make it difficult or even impossible to install packages. Worse, the attempt to install software can destabilize the operating system, causing existing software to malfunction. Even when everything goes “as designed”, the process tends to be confusing, tedious, and time consuming.

The Perkian Project has been cataloging and evaluating accessibility-focused (and more generally, text-based) software, in the hope of making it more widely available. Eventually, Perkian may be released as a Linux distribution for mobile phones, subnotebook computers, etc. In the meanwhile, Perkify provides a way to add this software to personal computers.

Note: The LightHouse Labs talk page is adapted from a short presentation I gave at the SF LightHouse in May 2019. The first part discusses Pete’s Alley; the second part discusses Perkian and describes the general approach taken in Perkify.

The Text-Based Camel

Once one lets the nose of the text-based camel into the tent, keeping the rest of the beast outside can be a challenge. Indeed, we seem to have invited the whole caravan inside. However, if the result is our desired “well-equipped workshop, just down the hall”, maybe that’s OK…

Project Approach

The Perkify distribution begins life as a copy of Ubuntu, a “batteries included” version of Linux that is intended for end users. Specifically, we start with Vagrant’s current, official Ubuntu “box”, which uses Virtual Box as a “provider”. At this writing, the vagrant init command looks like this:

$ vagrant init bento/ubuntu-19.04 --box-version 201906.18.0

Then, using Debian’s Advanced Package Toolkit (APT), we explicitly install a “wish list” of a few hundred packages. APT then satisfies thousands of dependencies and recommendations. All told, the current release (0.2.0, at this writing) includes about 4000 packages and compresses to about nine GB. This means that you’ll need 20-30 GB of free disk space to install this release (and future releases may be even larger).

Although we make sure that none of our APT installations “fails”, it’s very unlikely that every package is properly configured. In particular, packages which require access to I/O hardware are unikely to work at the moment. (See Perkify - Issues for details.) However, we do have a release that folks can download and try out. So, come on in; the water’s (erm) wet…

Virtual Machines

Because Perkify’s approach is based on virtual machine (VM) technology, a short primer may be in order. VMs allow software to pretend that it is running in a different environment than the host computer provides. This lets it sidestep various kinds of operating system incompatibilities, including different kernels, file system layouts, libraries, and utilities.

Specifically, we use Virtual Box, a hypervisor-based virtual machine monitor. This lets our Ubuntu-based VM run as an isolated “guest OS”, avoiding unintended interactions with the “host OS”. Vagrant, an advanced tool for VM management, allows all interaction to be performed via the command line. Keyboards can work wonders, in the right hands:

In Star Trek IV: The Voyage Home, Chief Engineer Scotty
is trying to use a first-generation (ca. 1986) Macintosh.

Scotty: “Computer?”, …, “Computer?”, …

Dr. McCoy hands him the (boxy, single-button) mouse.
Scotty: “Ahhh… Hello, Computer”

Dr. Nichols (perplexed, but helpful): “Just use the keyboard.”
Scotty: “The keyboard… How quaint!”

Scotty types furiously for a bit, then leans back, satisfied…
Dr. Nichols (astonished): “Transparent Aluminum ?!?!?”

Great Moments in Star Trek History - Hello, Computer (video)

Usage Overview

Once the Perkify VM is installed and running, it can be accessed in various ways. However, the most common modes will be command line and web access. In either case, the VM acts like a mostly-independent Linux box (with customizable amounts of file sharing).

Command line access lets the user obtain an interactive shell session on the VM. All of the normal Linux commands (e.g., cd, ls, pwd) are available, along with thousands of added commands. Web access supports browser sessions on personal web servers running in the VM. X11 access supports GUI-based applications (aka clients) which run in the VM but display in an X11 server on the host.

Note: By default, virtual machine access is limited to the host OS. This can also be customized, allowing access from other computers, cell phones, etc. Please exercise suitable amounts of care: web access can be controlled pretty easily, but you probably don’t want to allow command-line access for everyone within range of your computer’s Wi-Fi signal!

Getting Started

The Perkify - Install page describes the steps needed to install Perkify and its prerequisites. Once things are working, you can move on Perkify’s Usage, Configuration, Package Index, and Package List pages.

At some point, be sure to check out the Perkify - Index page. It’s an informal, hand-edited index of pages on Pete’s Alley that are related to Perkify. Finally, to keep up with announcements and discussion on Perkify, be sure to join the mailing list.

To be continued…