Leaving Apple’s Nursing Home
This series is about replacing a MacBook Air with an equally beautiful Freedom Software laptop. It is also about setting up a Freedom Software laptop for the kind of user who wants it to Just Work with the least possible involvement and no interest in how it works.
Part 1 of this series was about the rationale and the hardware.
Part 2: Software
Our leaving Apple is, fortunately for us, much easier than for someone who has both feet firmly planted in Apple’s walled garden.
This particular laptop was being used more like an old-fashioned stand-alone computer than a portal to Apple services. Finding and switching to alternative Freedom Software apps will not be too much of a hurdle.
- What Operating System?
- What Replacement Apps?
- What to Configure
- Practise the Configuration
What Operating System?
We’re going for something mainstream and stable and familiar. We’re not going for 100% hard-core freedom such as LibreBoot and Trisquel, important though they are. While there are several good options, for me (long time Ubuntu fan) it’s probably going to be one of:
- Ubuntu, in its default Gnome form — the most common, generic Linux; stable and widely known and supported.
- Ubuntu, with customisations (e.g. a MacOS-like launcher).
- Elementary OS — slick, MacOS-inspired style; based on Ubuntu; generally great for beginners, especially from MacOS; but perhaps too quirky and too niche (compared with Ubuntu) to be the best choice for this situation. (Here’s a review.)
- PureOS — slick; made with great dedication to software and phone freedom; likely too new, quirky and niche (compared with Ubuntu) to be the best choice for this situation.
- Ubuntu Budgie — MacOS-like style.
- Ubuntu MATE — supports MacOS-like, Windows-like and Ubuntu-like layouts; but I’m wary it may not offer the best modern simplicity and future, being based on older Gnome2.
For Ubuntu customisations, we might be looking at just installing a MacOS-like dock such as Dash to Dock. My philosophy is not to care much about the non-functional visual elements of a design, such as its colour theme and icon style and type fonts. Where to find things (apps, settings, files) is more important. Aesthetics do matter too, and the MacOS dock with its icons standing on a reflective surface and unfolding and bouncing is undoubtedly beautiful. However if placed at the bottom of the screen it has a serious flaw which is that vertical screen space is tight on a laptop screen, and for tasks like writing a document or programming, even just reading a web page, windows should use the maximum height available. Even with options to maximize a window or auto-hide the dock, side docking is a better arrangement.
What Replacement Apps?
Replacement user apps:
- email (Apple Mail)
- –> MailSpring (FOSS desktop UI, like web mail UI, for IMAP mail accounts)
- –> Thunderbird? (for recovering local-only (POP) mail from Apple Mail)
- web browser (Safari)
- –> Firefox
- photos (Apple Photos)
- –> Shotwell?
- Zotero reference manager
- –> Zotero also works in Linux
- access to network-shared documents folder
- –> SMB share: also works in Linux
- backup (TimeMachine)
- –> Borgmatic (efficient external backup)
- –> Cronopete? (friendly UI but limited, internal?)
- –> TimeShift? (for system configuration)
What to Configure
- gmail account
- other account
- create Firefox account
- plugin: Bitwarden
- plugin: Adblock Plus
- plugin: Zotero
- machine name, user name, …
- remote admin
- xdmcp or rdp or xspice?
- backup: Borgmatic
- backup: TimeShift?
- online accounts (Ubuntu config)
- Ubuntu One (needed for Livepatch)
- Google account?
- our self-hosted Nextcloud (calendar, address book, …)
- external accounts (manually)
- our shared documents folder (NFS/SMB share): open & bookmark
- install hplip (for HP printers), hplip-gui (esp. useful for scanner)
- connect to our local and network printer(s)
- lock / power
- appearance, …
- remove unwanted apps
- games, favourites, …
Additional Apps Wanted
- share with phone
- share among users
Practise the Configuration
The goal is to configure a laptop that is ready to use, not one where the user will need to configure everything bit by bit as they start using it.
We can practice setting everything up, before doing it for real. The practice run is going to involve lots of manual work and trial and error. We can document it, and try to automate parts of it, to help make the real configuration quick and smooth.
For the practice run, we can use dummy accounts wherever we connect to external systems. For example, create an external email account that is not using the user’s real email address or password. We don’t want the user’s real email to be spammed with all our configuration attempts, certainly not the trial and error.
When it comes to the final real configuration, the user will have to be involved. Their real email account will receive various configuration emails and they will have to create and store some new passwords. The user will have to choose whether they want to be involved hands-on in this, choosing their own passwords etc., or whether they want us to do it all for them, depending on their attitude. This is that part that needs to go quickly and smoothly.
What to use for a test environment?
- additional user account on own system
- virtual machine (VM)
We could practise some of the configuration inside an additional user account on our own laptop, assuming we use a similar enough operating system and don’t mind installing the required apps on it. That is a good start. Better would be to create a VM and then we would be able to practice every part of the set up, except for any hardware that is not available on the VM such as perhaps a fingerprint reader or a printer.
We will surely need to fix and adjust the configuration afterwards. Remote admin access will be useful, if the user is willing. There are broadly speaking two levels to choose from, depending on the user’s relationship to the admin:
- remote desktop (via e.g. VNC):
- the user needs to be already logged in and accepts our connection at their discretion;
- the user can watch what the admin is doing, though they might well not understand it;
- the admin can thereby access the user’s data and account settings in the same way the user would;
- the admin may access system configuration (via sudo).
- remote log-in, by command-line (via SSH) and/or graphical (via e.g. XDMCP):
- the user need not be involved nor see it;
- the admin has the same control as if they had the machine physically, which means full access to the system configuration, and, depending on how the system was set up (encryption), likely also access to the user’s own data and account settings, to be used with the user’s consent, of course.