Starting another week

Real life makes a lot of things hard to achieve and I feel quite exhausted after last weeks. But there were also many good news last week: Someone finally escaped the danger of death and is back at home with good chances for complete recovery. My soul got another pardon. I should get the required signatures for my new Debian key. IceCat got a new maintainer and may become properly maintained. One of the Firefox security plugins finally started working for me. I got a bunch of interesting software tips. I’ve found a way to replace some proprietary software devices with free software ones at my home. Some important work got done in time.

I’m sure the following days won’t be easy and the bad part of the world will continue to undermine useful activities. But listening to good news can help us proving that life is still maintainable and there is even some progress.

Debian GNU/Linux on Android

Android tablets are useful portable devices. Unfortunately Android makes them less useful than they could be. There are several problems with Android, one of them being lack of applications. While there are free Android applications for many common tasks, they are typically not suitable for serious work and many applications are completely missing, most notably (real) Emacs.

But it’s possible to partially overcome the problem by installing GNU/Linux in a chroot environment on Android, making an Android tablet a poor man’s substitute for a laptop on occasional traveling. Here’s what I’ve found about running Debian GNU/Linux on Android after some experiments and testing a couple of alternatives:

  • Get a Bluetooth or other hardware keyboard. The software keyboards take screen space, are not suitable for touch typing and are especially uncomfortable to use with X.
  • Install XSDL X server, available also on Google Play. The other Android X Server, available on F-Droid, doesn’t work very well, nor the free VNC servers I tried.
  • Install GNURoot, together with one of its root images, available from Google Play. GNURoot environment works very well for many tasks, as long as you don’t need real root access.
  • Start the X server, start GNURoot, install your favorite Debian packages, set DISPLAY to localhost:0, run your favorite window manager and the applications you need. The X environment is slow but useable.
  • If you need real root access, you can use Lil’ Debi, available on F-Droid. But there are some limitations: Your Android must be rooted (obviously), the file system size is limited to about 2 GB and I couldn’t connect to the X server under user other than root.

Installing an alternative ROM on Google Nexus 10

Enough is enough. I don’t like how the stock Android installation treats its users and I finally decided to replace it on my Google Nexus 10 with something else. The reasonable choices were CyanogenMod, AOKP and OmniROM. I decided to install AOKP.

Installation instructions looked like installing an alternative ROM on Nexus is a completely easy (and safe) process. It wasn’t that easy though, there is some missing and misleading information in those installation instructions. Due to it, I got a bit scared about three times during the process and had to search the Web for solutions. Thanks to all those kind people who post instructions, answers and solutions I was able to complete the installation successfully. So here is another short guide summarizing how to install an alternative ROM on current (4.4) stock Nexus 10, based on my own experience:

  • Accept that by following these or other similar instructions you can brick your device, lose warranty, etc.
  • Backup everything on your tablet you want to retain. All data may get deleted during the installation.
  • Install Android SDK on your PC. You need it to get working adb and fastboot.
  • On your PC, download TWRP recovery image for your device. You can use ClockworkMod as well, I chose TWRP so that I could contingently install OmniROM without replacing the recovery again.
  • Download the desired ROM and Google applications (if you want them) and put them to /sdcard/ directory on your tablet.
  • Enable developer’s setting on the tablet: Go to settings, device information and tap several times on the build number, until you see the message about being a developer.
  • Go back in settings, enter the developer’s settings and enable USB debugging.
  • Connect the tablet to your PC via a USB cable. The tablet should indicate that you’re in USB developer’s mode.
  • Check that sudo adb devices (use adb binary from Android SDK) shows your tablet on your PC. Note it’s important to run adb as root for the first time. It starts a server process on the first invocation and if that starts under an ordinary user, adb functions may not work even under root later.
  • If there is something strange in adb devices output, such as no entry at all, question marks or a message about permissions, then there is something wrong with your setup.
  • Run adb reboot bootloader. The tablet reboots and enters bootloader menu.
  • Run sudo fastboot oem unlock (use fastboot binary from Android SDK). The tablet should reboot, with unlocked lock displayed under “Google”.
  • Perhaps the tablet gets stuck on the boot. It looks scary, but it can (hopefully) be fixed following the next instructions. If the tablet boots normally, skip a few next instructions and continue with “re-enable USB debugging”.
  • Long press Power + Volume Up + Volume Down to restart the tablet and to enter the boot menu.
  • Select “recovery mode” using the volume buttons and press Power. An Android robot with a triangle appears after a short while.
  • Shortly tap Power + Volume Up (the volume key on the right). A menu appears.
  • Select “wipe data” and wait until it finishes.
  • Select “reboot” and the tablet should reboot fine now. Your data is lost (no problem as that will happen during the installation anyway) and the tablet must be set up as when it was started for the first time after you had bought it.
  • Re-enable USB debugging in developer’s settings.
  • Run adb reboot bootloader to enter the bootloader.
  • Run sudo fastboot flash recovery RECOVERY-IMAGE.zip (if you decided to use TWRP then RECOVERY-IMAGE should be something like openrecovery-twrp-*-manta.img).
  • Select “power off” on the tablet.
  • Long press Power + Volume Up + Volume Down to power the tablet on and to enter the boot menu. Don’t start the tablet normally otherwise the installed recovery may get replaced with the original one during the boot.
  • Select “recovery mode” and you should be in TWRP now.
  • Perform “Backup” in TWRP to backup the original system.
  • Perform “Wipe” in TWRP.
  • If your installation .zip files are not in /sdcard, you can upload them now using adb push YOUR-DOWNLOADED-ROM-FILE.zip /sdcard/ from PC.
  • Perform “Install” in TWRP for your ROM (and Google applications, if you want them) zip files.
  • Perform “Reboot” in TWRP.
  • Hopefully the new system starts now and you are freed from the Google restrictions.

Many thanks to all those who develop alternative Android installations with improved user freedom!

Really afraid of Mozilla

A week after the International Day Against DRM, Mozilla has announced that it accepts the W3C DRM proposal and will actively support DRM on the Web. So we’ve lost another battle against DRM. All major Web browsers now officially accept DRM on the Web.

I find the following Mozilla explanation scary: “Every other major browser vendor has already implemented EME, and as it becomes the norm, we want to avoid the possibility that people will be unable to access key Internet content such as streaming Hollywood movies via Firefox. We also do not want to create a situation where Firefox users must use other browsers for key Internet activities.”

I don’t consider Hollywood movies being “key Internet content” and I don’t want to access any DRM content in Firefox. Whenever I need to use DRM or a similar broken system, I do so on platforms where privacy and security are already compromised (such as Google Android or proprietary operating systems).

So what’s the problem when using DRM in Firefox is going to be voluntary? For first, Hollywood demanded to put control on the users and the W3C and all the creators of major Web browsers have accepted that. For second, Mozilla has recently demonstrated several times that freedom is not very high among its priorities: It promotes non-free add-ons (without informing users about their licenses on mobile platforms), it failed to resist the outrage of political lobbyists and now it supports DRM. We all know the situations when we have to make hard choices and make decisions we are not proud of, because of our cowardice, lack of alternative choices or because we think we do the least evil. It’s a dangerous game we don’t want to play but we can’t avoid it. And it can lead us to crossing all limits.

When Mozilla says that “every other major browser has already done that and it becomes the norm” I’m alerted. The fact is that every other major browser is designed to serve interests of its creator and not the interests of the users. This is the primary reason I use Firefox and not another major browser. But when Mozilla conforms to what other major browsers do and what is “the norm” then what’s the difference? I have to ask some serious questions such as whether Mozilla will sell users’ data or whether it will close some parts of its source code or will switch to a hostile license when that looks like an effective way to fulfill “interests of Firefox users” and to save the market share. My answer is such things may happen. So I can’t trust Mozilla anymore. (As a precaution I disabled sending Firefox reports to Mozilla from my mobile devices and of course I use my own Firefox sync server instead of the one provided by Mozilla.)

Retracting from certain principles typically doesn’t bring the expected good. When my country was sacrificed to Hitler, it was applauded as saving the world peace. The next year World War II has started. When Netscape offered its proprietary Web browser as free meal, users have accepted it instead of making a free Web browser. Some years later Netscape has lost the war of browsers and turning to the Mozilla project has saved us from the worst in the last minute. The years of Netscape dominance had nevertheless made serious damages to free software which I hoped were recently finally recovered. But I was mistaken, we actually tightly depend on a single free software product apparently ready to sacrifice the principles of freedom just to conform to “the norms” and retain some users. Maybe Mozilla changes its attitude and instead of making definite steps against user freedom and vague claims about supporting it it will act in the opposite way. But maybe things get worse and we must be prepared for that. It’s time to start preparing for the worst, i.e. loosing the last free major Web browser.

We need a major free Web browser, sufficiently separated from direct commercial interests and with high respect to users’ freedom and privacy. We should start with properly maintaining a freedom aware branch of Firefox (perhaps the GNU IceCat project, the GNU version of Firefox, might be a good start). In case more bad things happen with Mozilla we should be ready to start a complete Firefox fork. Otherwise we may end up with a completely proprietary Web.