Category: Tech

Block Comments by EricJ on mst3kinfo.com

If you're a longtime reader of Satellite News (mst3kinfo.com) like me, you know that it's got a pretty good comments section, except for two things:

  1. A particularly obnoxious and persistent troll by the name of EricJ who insists on pissing in everyone's cornflakes; and
  2. A bunch of other posters with poor self-control who insist on responding to him.

And so, in the tradition of my Hide Techdirt Comments script, I've written a userscript that will block EricJ and replies that quote him. Works with Greasemonkey, Tampermonkey, and presumably any other similar userscript plugins that may be out there.

If there's anybody else who bothers you, you can add other usernames to the blacklistedUsers array, too.

And ordinarily, I wouldn't even name the troll I was talking about, because the entire point here is that you shouldn't give trolls the attention they crave -- but I figure you know, this post might prove useful to other Satellite News commenters, so I should probably put his name in it so that maybe somebody will find it while searching for a way to block all comments from, and replies to, The Original EricJ on mst3kinfo.com.

Enjoy.

// ==UserScript==
// @name          Hide Satellite News Comments
// @namespace     http://corporate-sellout.com
// @description	  Hide comments on mst3kinfo.com, based on user
// @include       http://www.mst3kinfo.com/?p=*
// @require       http://www.mst3kinfo.com/wp-includes/js/jquery/jquery.js
// ==/UserScript==

// List of users whose comments you want to hide --
// you can add more names to this list, but let's be honest, you want to block EricJ.
const blacklistedUsers = [
  'The Original EricJ'
];

const $ = jQuery;

// Comment class
// Constructor
function Comment(node) {
  this.node = node;
  this.nameBlock = $('.comment-author > .fn > a', this.node);
  this.name = this.nameBlock.text();
  this.quotedUserBlock = $('a[href^="#comment"]', this.node);
  
  this.quotedUser = this.quotedUserBlock.length === 1
    ? this.quotedUserBlock.text()
    : '';
}

// Functions
Comment.prototype = {
  constructor: Comment,
  
  check: function() {
    if(
      blacklistedUsers.includes(this.name)
      || (this.quotedUser !== '' && blacklistedUsers.includes(this.quotedUser))
    ) {
      this.node.remove();
      return true;
    }
    return false;
  }
};

$('.comment').each(function() {
  const cmt = new Comment($(this));
  cmt.check();
});

License

I'm not a lawyer, but my opinion as a programmer is that this script is too short, simple, and obvious to be copyrightable. As such, I claim no copyright, and offer no license, because none is needed. Use it however you want, with the standard disclaimer that it comes with absolutely no warranty.

Year of the GNU/Linux Smartphone?

I don't much care for Apple's phone ecosystem or Google's.

I've got an old Nexus 5, and it's running LineageOS, an alternative version of Android that doesn't include proprietary Google code. Wherever possible, I use open-source software from F-Droid; where I still need the occasional proprietary app, I use Amazon's app store or Yalp Store, a program which can pull binaries from the Play Store without requiring the Play Store to be installed.

It works pretty well, for the most part, but my phone's showing its age. It doesn't support LineageOS 15, and the regular updates to 14 have slowed to monthly security patches. On top of that, I recently had an issue with the power button and had to take it in for repairs.

But I don't want to get a new Android phone. The reason I fixed my Nexus 5 instead of replacing it is that there are some alternatives coming later this year that are neither Android nor iOS, and I want to wait and see what happens with those.

Before I go any farther, I'm going to get into a note about nomenclature.

There's an operating system that most people call Linux. More precisely, it uses a kernel called Linux and a collection of userland programs called GNU. The makers of GNU ask that people call the operating system GNU/Linux; here are a few links that explain their reasoning:

GNU founder Richard Stallman's reasons for calling the OS "GNU/Linux" are primarily ideological, but there is a practical reason to call it that, too: Google has released two operating systems that use the Linux kernel but not the GNU userland. Those operating systems are Android and ChromeOS.

So if I say "a Linux phone," that includes Android. But if I say "a GNU/Linux phone," I'm explicitly talking about a phone that doesn't run Android.

With that explanation out of the way, I want to talk about GNU/Linux phones.

The most mature GNU/Linux phone OS is Sailfish, a descendant of Nokia and Intel's now-defunct MeeGo developed by a Finnish company called Jolla. I've looked into Sailfish OS, but its device support is very limited, and the OS has proprietary components. Given that I'm trying to get away from proprietary software as much as I can, I don't see Sailfish as an improvement over LineageOS.

There's also Ubuntu Touch. While Ubuntu parent Canonical is no longer developing Ubuntu Touch, a community called UBports has continued development.

I tried Ubuntu Touch on my Nexus 5 back in 2017. I was impressed by how mature it was and how much I could do with it -- but I couldn't get it to work with Sprint service. I posted a help request on the forums; nobody ever responded. It's been some time and it's possible that whatever issue I was having does not exist in the current version -- but I'm not in a hurry to try again.

I did recently buy a OnePlus One which I'm testing UT out on, and it's really coming along. There are definitely some pain points (the keyboard is terrible), but if I had to use it as a daily driver, I could. Provided I could get it to work with my wireless network.

Course, if I want Ubuntu Touch to get better, that's something I can help out with myself. It's an open-source project, and I'm a computer programmer. I can contribute code myself, and the only thing stopping me from doing it is sitting down and taking the time to do it. I gotta figure at least some of the keyboard design problems are things I could figure out how to fix.

But there are other alternatives besides Ubuntu Touch, too.

postmarketOS is a phone OS based on Alpine Linux and Plasma Mobile. It looks promising, but it's still in alpha; a Nexus 5 running postmarketOS can make phone calls, but the audio doesn't work.

But perhaps most interestingly, there are phones coming out later this year that will run GNU/Linux distros out of the box.

The Purism Librem 5 is an upcoming GNU/Linux phone focused on free/open-source software, privacy, and security; it's built on PureOS, which uses the GNOME desktop environment, but also plans to support Plasma and Ubuntu Touch. It's currently scheduled for release in Q3 2019, though it's been delayed twice already, so that date could slip again.

The biggest barrier is the price. Freedom, as they say, isn't free; the Librem 5 doesn't have the most impressive specs, but it costs $650 for a preorder and will cost $700 after launch. And I'm sure not going to preorder a phone with an untested operating system before any of the reviews are in.

While I greatly appreciate what Purism is doing, $700 is a lot to ask.

That's why I'm more interested in the PinePhone, another forthcoming GNU/Linux phone (this one based on Plasma) expected to sell for $150.

For that price, I don't expect a high-end phone. PINE64 makes low-end single-board computers; think Raspberry Pi -- so I expect this will be pretty close to a Raspberry Pi with a screen attached to it. And for $150, I don't expect it to be a particularly good screen.

But for that price, it's sure tempting to try it out; I'm not expecting a great phone, but I'd be very impressed if it's even an adequate phone. I'll be keeping an eye on this one.

There are a few other entrants here. Necunos Solutions has a mobile device coming that's based on GNU/Linux and Plasma Mobile -- but I wouldn't call it a phone, because it doesn't have a cellular modem. At 1200 euros, it seems more like an expensive boondoggle than a real contender -- but every open-source project helps upstream, and at minimum, the Necunos Mobile should contribute some useful code that other projects can use.

There's also last year's Gemini, an oldschool-style clamshell phone with a full hardware keyboard that's designed for Android but also supports a GNU/Linux dualboot. That said, it looks like it's still pretty early days for GNU/Linux support, and Xfce and LXQT sure don't look like desktops I want to use with a touchscreen.

Ultimately, I think this is a pretty exciting time. With the Librem 5 and the PinePhone hopefully coming this year, UBports getting better all the time, and postmarketOS, er, approaching the point where you should be able to make a phone call and hear the person on the other end, I'm hoping this may be the year that GNU/Linux becomes usable as a daily driver. Not for end users; it's certainly not going to be as fully-featured or easy-to-use as desktop Linux has become (my grandpa uses Linux Mint). But for the sort of power users who were running GNU/Linux on their desktop 15 or 20 years ago. Guys like me.

Fingers crossed. Especially for the PinePhone. Hope my Nexus 5 holds out until then.

Fauxpen Source

Back in December, Bryan Cantrill wrote a pretty good article titled Open source confronts its midlife crisis. He discusses a particular problem that's started cropping up over the past year or so: companies deciding that free software/open source licenses are unfair, and modifying them so that they're no longer free/open-source.

It's the same old problem we've been seeing since the start of the Free Software movement: how can you make a profit giving your software away for free? How can you stay in business if somebody else can just take your software and resell it without giving you a cut?

There's a growing trend toward answering that question with "Change the license so they can't do that."

One particular example is the inaccurately-named Commons Clause, which is a clause you can attach to some other license; here it is in its entirety:

"Commons Clause" License Condition v1.0

The Software is provided to you by the Licensor under the License, as defined below, subject to the following condition.

Without limiting other conditions in the License, the grant of rights under the License will not include, and the License does not grant to you, the right to Sell the Software.

For purposes of the foregoing, “Sell” means practicing any or all of the rights granted to you under the License to provide to third parties, for a fee or other consideration (including without limitation fees for hosting or consulting/ support services related to the Software), a product or service whose value derives, entirely or substantially, from the functionality of the Software. Any license notice or attribution required by the License must also include this Commons Clause License Condition notice.

The Free Software Foundation has added the Commons Clause to its license list under "Nonfree Software Licenses". In its update notes, the FSF explained the move:

We added the Commons Clause to our list of nonfree licenses. Not a stand-alone license in and of itself, it is meant to be added to an existing free license to prevent using the work commercially, rendering the work nonfree. It's particularly nasty given that the name, and the fact that it is attached to pre-existing free licenses, may make it seem as if the work is still free software.

Cantrill called out other nonfree licenses too, including Confluent's Community License. Confluent's Jay Kreps objected:

We actually aren’t trying to "co-opt" the community or open source terminology. We tried really hard both in the license and in the blog post to be honest and upfront. Whether you like Confluent's license or not, you have to agree it is exceptionally permissive and the software has a pretty great community of users. How do you describe a license that lets you run, modify, fork, and redistribute the code and do virtually anything other than offer a competing SaaS offering of the product?

I describe it as "Not open source."

"Open source" is not a generic term. It doesn't just mean that you can look at a program's source code. It's a term of art, subject to the Open Source Definition. And the definition includes section 6:

6. No Discrimination Against Fields of Endeavor

The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.

I'm not a lawyer, but I'm pretty sure "a competing SaaS offering" counts as a field of endeavor.

Bruce Perens, who wrote the OSD, explains more in a blog post titled When Licenses Discriminate. It's a relatively short post, so I'm going to quote it in its entirety:

A long time ago, well-meaning people at the University of California, Berkeley created a license for their SPICE electronic simulation software that prohibited use by the Police of South Africa. This was, of course, during Apartheid.

Years later, Apartheid ended. The Police of South Africa now included Blacks and Whites with the same duties and powers. And they were still prohibited from using Berkeley SPICE. Getting the University of California to change the license, so that the software could be carried in Debian as "Free Software", was impossible at the time.

I took this example (among others) and wrote into the Open Source Definition (then the Debian Free Software Guidelines) that licenses could not discriminate against persons or groups, or against fields of endeavor.

This implements a major principle of Free Software. Freedom means Freedom for Everyone, not Freedom For People I Approve Of. Even when those folks abuse the freedom of others.

Someone recently created a license that discriminates against companies that have contracts with the U.S. Immigration and Customs Enforcement (ICE), a division of the Department of Homeland Security. Ironically, this is called "Moral Programming" or "Moral Licensing". I have to object to it on moral grounds.

I don't approve of the recent conduct of ICE under the direction of Donald Trump and his gang. Far, far from it. I am happy to say so, to participate in protests, and most importantly, I will not vote Republican in upcoming elections.

But if you insist on denying them the right to run your software in your license, please be careful not to call it Open Source or Free Software. Because your license will not comply with the Open Source Definition or the Four Freedoms of the Free Software Foundation. Which protect Freedom for everyone.

There's another license that's been getting some attention lately: MongoDB's Server Side Public License. It's based on the GNU Affero General Public License (which in turn is based on the GNU General Public License), but it makes a significant change. Here's Section 13 of the Affero GPL:

13. Remote Network Interaction; Use with the GNU General Public License.

Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph.

Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License.

Here's the modified version in the SSPL:

13. Offering the Program as a Service.

If you make the functionality of the Program or a modified version available to third parties as a service, you must make the Service Source Code available via network download to everyone at no charge, under the terms of this License. Making the functionality of the Program or modified version available to third parties as a service includes, without limitation, enabling third parties to interact with the functionality of the Program or modified version remotely through a computer network, offering a service the value of which entirely or primarily derives from the value of the Program or modified version, or offering a service that accomplishes for users the primary purpose of the Program or modified version.

"Service Source Code" means the Corresponding Source for the Program or the modified version, and the Corresponding Source for all programs that you use to make the Program or modified version available as a service, including, without limitation, management software, user interfaces, application program interfaces, automation software, monitoring software, backup software, storage software and hosting software, all such that a user could run an instance of the service using the Service Source Code you make available.

That's some pretty dry legalese, but if you've made it this far, I suppose you're interested in reading about technical differences in free software licenses. So here goes:

If you take a program that's licensed under the Affero GPL, modify it, and make that modified version available to run over a network, you have to license your modified version under the Affero GPL.

Whereas under the SSPL, if you use MongoDB as part of a service package you offer to third parties, you have to release the entire package under the SSPL.

While MongoDB is couching this in the language of the GPL and copyleft, its goal seems more inline with the Commons Clause. It doesn't actually expect anyone to use MongoDB as part of a package and then release the entire software stack under the SSPL; it expects the terms of the SSPL to be so onerous that companies just pay MongoDB to license the software without the SSPL.

What's the point of all this?

It gets back to that earlier question: how do you make money on software you give away for free?

One of the traditional answers to that question has been that you charge for support. That was the idea behind MongoDB: they'd give the software away for free, but charge for support.

That may have been a viable business strategy a decade ago, but the market has changed. More and more companies are choosing not to run their own servers on-site, but instead to use Amazon Web Services. And that disrupts the traditional "pay for service" model -- because now companies are using MongoDB, and they're paying for service, but they're not paying MongoDB for service, they're paying Amazon for it.

Clearly the bean-counters at MongoDB saw this as a problem, and so they wrote a license that they hoped would force Amazon to pay them to continue using their software.

It didn't work. Amazon responded by creating a competing database format called DocumentDB. As soon as Amazon announced the project, MongoDB's stock dropped nearly 15 points. Whoops.

Meanwhile, neither the Free Software Foundation nor the Open Source Initiative has reached an official verdict yet on whether the SSPL is a free/open-source license, but it's under review, and Bruce Perens has his doubts.

First of all, he notes that it almost certainly violates the FSF's copyright on the AGPL; just because it's a license that allows redistribution of modified versions of software doesn't mean that it allows redistribution of modified versions of the text of the license.

The issue of the license text being infringing of FSF's copyright needs to be addressed. I doubt FSF is going to give permission for this use of their text. There is a possible 17 USC 102(b) argument, but most sources (Nimmer, Adams) disagree, and I don't know of any case law. This might require a full rewrite, and IMO OSI would face a risk of being a contributory infringer simply by hosting a copy of the current text on their site. The legal ambiguity of that might be sufficient reason for rejection.

And in the same post, he suggests it might violate sections 6 and 9 of the OSD. I've already quoted #6; here's the text of #9:

9. License Must Not Restrict Other Software

The license must not place restrictions on other software that is distributed along with the licensed software. For example, the license must not insist that all other programs distributed on the same medium must be open-source software.

And here's what Perens has to say about the SSPL:

I am most concerned with the second paragraph of section 13, and its conflict with OSD #9 and #6. The definition of how those pieces are coupled needs to be tighter. Management software, backup software, etc. may be used as part of the offering of a service, but they don't create a derivative work, nor are they combined into the same program. So, we get a restriction on works that are simply aggregated together (#9) or a restriction on use of the program if the data is backed up using a non-Open-Source backup program (#6).

In a later post, and with deep apologies, Perens backs off the Section 9 claims and states that the SSPL violates the spirit of Section 9, but not the letter.

The OSD terms were not written for software-as-a-service. OSD #9 very clearly states

The license must not place restrictions on other software that is *distributed* along with the licensed software. For example, the license must not insist that all other programs *distributed on the same medium* must be open-source software.

Since software-as-a-service software is not distributed, OSD #9 doesn't apply. Sorry. The document was written for another time and I could not predict today's conditions.

Regardless, even if it doesn't violate #9, it would nonetheless appear to violate #6. At any rate, Red Hat and its community version, Fedora, think so; they've rejected the SSPL and will be removing MongoDB from their software repositories. The Debian maintainers don't even think a strict analysis of the Debian Free Software Guidelines is necessary; it clearly violates the spirit of the DFSG, and that's good enough for exclusion from Debian.

Here's the thing: a change in license can kill a project. XFree86 was a much more essential package than MongoDB, and its owners made a much more minor change to its license. But that was enough to completely destroy the project. A previous version, with the old license, was forked as X.Org, and within a matter of months every Linux and BSD release had switched.

MongoDB is well along that path. The company has since introduced SSPL v2 in the hopes that it will prove more acceptable than v1, but MongoDB itself is still published under v1.

Maybe v2 will prove more acceptable. Maybe MongoDB won't end up like XFree86 and it'll end up like, say, KDE instead -- a project which initially used a nonfree license but then switched to a free license and continues to be widely used. Those are MongoDB's options: make your license acceptable to the free/open-source community, or fade into irrelevance as everybody switches to a fork. Time will tell which path MongoDB ultimately takes -- and what impact that has on the rest of this new crop of projects trying to pass off proprietary licenses as free ones.

School of Wizardry

I've been listening to Jeremy Parish's interview with Robert Woodhead, the co-creator of Wizardry. It's a great interview and recommended.

I think about Wizardry sometimes. I first played it on the Mac.

If you pull up the original Wizardry on archive.org, or if you go looking for screenshots, here's the kind of thing you can expect to see:

Wizardry for Mac with lineart dungeon graphics
Via Hardcore Gaming 101, which has a great comparison of the various editions of the game.

You can get more detailed maze graphics by maximizing the window, but at 512x342 that comes at the cost of having to move other windows on top of each other to fit:

Wizardry for Mac with detailed dungeon graphics
I took this screenshot myself.

Of course, if you want to get fancy, you can try emulating a later version of MacOS with a higher resolution, and then you'll have plenty of room. Like these madmen here:

At any rate, I've gone back and tried some of the other versions of Wizardry, but I still think the Mac version is the best, with its GUI and its more detailed graphics. It's not perfect -- look how small the maze window is, even at its larger size; and why does the Castle window need to be visible when you're in the maze? -- but the game is well-suited for a point-and-click, drag-and-drop interface.

The first five Wizardry games aren't currently sold for modern systems, but GOG and Steam both sell Wizardry 6 bundled with DOSbox. So why not sell the Mac versions of the earlier games and bundle them with Mini vMac? I guess I'm not sure what the legality is of distributing old versions of the MacOS; they might need a license from Apple in addition to getting one from whatever company owns Wizardry these days.

I've also often wondered why nobody's ever remade the original Wizardry for modern computers, taking the Mac version as a base and adding quality-of-life improvements. The closest thing I've ever seen is a Japanese remake of the first three games called Wizardry: Llylgamyn Saga that was released for Windows (as well as PlayStation and Saturn) in 1998.

Wizardry: Llylgamyn Saga for Windows
Via Hardcore Gaming 101

Llylgamyn Saga is not quite what I'm talking about; I tried it a few years back and my impression was that it was a Windows port of a console game and its interface felt like it. It simply didn't handle as smoothly with a mouse as the Mac version.

What I'd like to see? Remake the original game. Use touchscreen devices as the primary platform. Copy Etrian Odyssey's mechanic of using the touchscreen to map the dungeon as you go, the way we had to use graph paper in the old days.

Etrian Odyssey Untold 2
Etrian Odyssey Untold 2
Via Jeremy Parish -- him again! -- at USgamer

Using half a phone screen wouldn't be so different from EO using the DS/3DS touchscreen. The biggest immediate hurdle I can think of is fat fingers: Etrian Odyssey is designed for a stylus; drawing with a finger would mean the grid squares would have to be larger. Pinch-to-zoom would be a good idea, or just a toggle to zoom the map in or out. Build to accommodate different resolutions; there's no reason a tablet user should be stuck with a map that's sized for a phone. Of course you could hide the map during combat, menu navigation, in town -- anywhere where it's not necessary. Use a point-and-click, drag-and-drop interface similar to the Mac version; when you go into town, you can drag-and-drop characters between the active party and the reserves.

Add some modern quality-of-life improvements, too. Obviously the weapons shop should behave like it would in a modern RPG: compare a highlighted weapon to the weapon a character currently has equipped. (If it'll fit onscreen, show how it compares to the weapons every character has equipped.)

And allow users to toggle the oldschool rules. Let them play with original inscrutable spell names, or with simple, plain-English ones. Allow them to disable characters aging on a class change, or the possibility of a teleport spell going wrong and permakilling the entire party. Hell, allow a mode where players can navigate through the maps they've made and point to the square they want to teleport to, or even set waypoints so they don't have to do that every time. Maybe even allow them the option of seeing monsters, treasure chests, and other points of interest before walking into them.

Once you've rebuilt the first game in this new engine, it wouldn't be hard to do the second and third. 4-7 would require more work but would be possible. Probably not 8, as it abandons the grid format in favor of free movement.

Hell, open it up. Since I'm dreaming anyway, I might as well say open-source the whole thing -- but failing that, at least release a level editor.

Maybe the best way to go about this would be for a fan group to start by creating a game that's Wizardry-like but noninfringing -- similar D&D-style rules, similar generic fantasy races, classes, and monsters, but different maps, spells, enemy behaviors, etc. -- and then, once they've released a finished game, make an offer to whoever it is who owns the Wizardry copyrights these days to port the original games to the new engine.

A man can dream.

Wii U Softmod Tips

I've spent the past week and a half softmodding my Wii U and ripping my library to it.

There are a few reasons for this -- the primary one being that the copy of Breath of the Wild that I bought used worked for about the first ten hours of the game and then quit reading.

Another reason is, it'll be nice to be able to put all my discs in a box somewhere and get some shelf space back.

The guide at wiiu.guide is a great walkthrough for softmodding your Wii U. But there are a few details I had to figure out myself, and I'm going to share them here.

First of all, here's the hardware I used:

A 1TB Western Digital Elements USB3 hard drive. This is excessive; I have 11 games installed on it and they only take up about 90 GB of space. However, I happened to have it lying around unused (I'd bought it for my grandma as a backup drive and discovered, when I went over to her house, that she already had a backup drive), so that's what I went with.

A 64GB Sandisk microSD card with SD adapter.

Here are a few things I discovered along the way:

It's probably a good idea to repartition and reformat the SD card before you get started. I found that mine had a few MB of unpartitioned space at the beginning, and I got an error with the NAND backup program saying it wasn't a FAT32 disk.

Also, make sure the FS type is C. That's FAT32. I used mkdosfs and wound up with 7 (ExFAT).

Something to note about the hard drive: I didn't need the Y-connector that wiiu.guide recommends, but I did need to plug it into one of the USB ports on the back of the console (I went with the top one). When I plugged it into one of the front USB ports, it would frequently hang on long file copies. When I plugged it into the top back port, it worked fine.

Copy all your save data before you rip any games. By this I mean, as soon as you format the hard drive to Wii U format, go into Wii Settings and Data Management, and copy all your save data. (It's safer to copy it than to move it; if you want to delete it from your NAND, wait until you've made sure it works first. A NAND backup and SaveMii backups are probably a good idea too, just to make sure you don't lose anything.)

This is totally counterintuitive, but here's how it works: save data on the NAND works for disc games (and, presumably, games stored on the NAND, though I haven't verified this), but games installed on the hard drive will completely ignore it. If you've got Breath of the Wild installed on your hard drive, and a saved game and a few gigs of updates installed on the NAND, then when you fire up Breath of the Wild it will behave as if it's being run for the first time. It will try to download updates, and start you out at the beginning. If you want a game that's installed on your hard drive to see your updates and your saves, then they have to be stored on the hard drive too, not the NAND.

And, even more counterintuitively, you have to copy the saves first. If you install the game on your hard drive and then copy the save data over, the save data will overwrite the game on the hard drive and you'll have to reinstall it. But if you copy the save data and then install the game, the game won't overwrite the save; the save will still be there and the first time you run the game off the hard drive, all your save data, updates, and DLC will be there, ready to go.

Hope that helps somebody. It would have saved me a lot of extra hours if I'd known that stuff before I started instead of having to figure it out for myself.

Android Without Google

In my last couple of posts, I've talked a bit about the drawbacks of iOS and Android, but acknowledged I've found the alternatives lacking. Ultimately, I went back to Android -- but not stock Android.

Android -- at least, the base OS -- is free/open-source software. As such, there are many different variations of Android available.

Replicant is the only Android variation endorsed by the GNU Project; it seeks to provide an Android experience with only free/open software. Unfortunately, it has drawbacks: it has a very limited number of supported devices, the most recent of which is the Samsung Galaxy Tab 3, which was released in 2013. Replicant itself isn't quite that outdated; the latest version is 6.0, based on Android 6.0 Marshmallow (2015). And even though Replicant itself is free, it still requires proprietary firmware in most cases.

I've ultimately settled on LineageOS, an Android distribution descended from the previous CyanogenMod project.

You can install Google Services and Apps (Gapps) on top of LineageOS, but on my latest installation, I opted not to do that. I get most of my Android software from F-Droid, a free software repository.

I do run a few proprietary apps; the Amazon App Store is one source, and there's a program called Yalp Store (you can get it from F-Droid) that lets you download apps from the Google Play Store without installing Gapps -- though keep in mind that does violate Google's terms of service.

Someone also recently recommended microG to me; it's a free re-implementation of Google Services. I haven't tried it out yet, but it looks promising.

All in all, I was surprised by just how easy it ended up being running an Android-based OS without Google's proprietary apps and services. That's easy for values of "easy" that include being comfortable flashing your phone, of course, but so far it's worked out pretty well for me.

I'd sure like to see one of those alternatives get a better foothold, though. More competition is good for everybody, especially if that competition comes from free software.

Android Alternatives

Yesterday I talked a little bit about Ubuntu Touch, a would-be alternative smartphone OS based on GNU/Linux (that is to say, the Linux kernel and GNU userland, as opposed to Android, which is based on the Linux kernel and Google's own userland).

There are other phone OS's out there, too.

Jolla's Sailfish is another GNU/Linux-based OS, based on Nokia's abandoned MeeGo platform. It's the most mature of the lot, but supports a limited number of devices. I haven't tried it because the port for my phone, the Nexus 5, hasn't been updated since 2015. But it appears to have pretty good support for Sony Xperia phones, and it runs Android apps through a compatibility layer, though my understanding is that that compatibility layer is proprietary, drains the battery significantly, and doesn't have full compatibility.

Other than iOS, Android, and, to a lesser extent, Windows Phone, Ubuntu Touch, and Sailfish, there aren't a lot of mobile OS's that are ready for prime-time. KDE's Plasma Mobile is still in early stages; the steps for setting it up on a Nexus 5 indicate that it's strictly for developers right now.

GNOME doesn't have much of a mobile presence at this time, either, though Purism has announced that its upcoming Librem 5 phone will feature a GNOME desktop (with Plasma as an alternative option).

There's also LuneOS, a fork of Palm/HP's webOS (which, like Android, is based on the Linux kernel but not the GNU userland). It's still early days too.

I also just ran across postmarketOS, whose homepage says "The project is at very early stages of development and is not usable for most users yet." (Boldface in original.)

One of the biggest problems facing all these projects is the proliferation of different Android devices, most of which rely on proprietary firmware for hardware support. There is a project in the works that should help with the hardware support issues (though not with the inherent problems of proprietary firmware); it's called Halium, and it should make development much easier for all these projects.

In the meantime, though? You're probably stuck with iOS or Android -- Apple's walled garden or Google's spyware.

There are ways to run Android without Google services or proprietary software. I'll get to that tomorrow.

The Sorry State of Smartphones

It's disappointing that the smartphone market has turned into a choice between two OS's: iOS's walled-garden approach where Apple decides what software you're allowed to run on the phone that you ostensibly own, and Android's spyware panopticon security nightmare.

There are a few alternatives, none of them very good.

A few months ago, I tried switching from Android to Ubuntu Touch. Canonical abandoned Ubuntu Touch a few months back, but it's still under development by a small community-based group called UBports.

Here's what I wrote at the time (originally posted on Brontoforumus, 2017-07-03):


It's a pretty different idiom from Android (no ubiquitous three buttons at the bottom of the screen, though their functionality is there; swipe from the left edge of the screen to get a dock, from the right edge to get a Windows 7-style list of open programs, and the Back button is handled at the app level), but I could get used to it, and the list of available apps seemed sufficient for my day-to-day use.

The only real problem was that the phone didn't work.

I fucked around with the settings for awhile but all I managed to accomplish was to change what it said under "carrier" from "Sprint" to "none".

So I decided to give LineageOS another shot. (Well, technically my first time using it as LineageOS, but I used it plenty when it was Cyanogenmod.) It appears that I've mostly fixed the Sprint issues I had with it before.

But I thought Ubuntu was pretty impressive, and I intend to give it another shot someday. Maybe once they finish updating it to a 16.04 base.


I should probably update my post about getting Sprint to work on LineageOS (then CyanogenMod); I need to update the title and the links, and add the last step that finally got it (mostly) working.

I've managed to do okay without Gapps, too -- but maybe I'll get to that another time.

Net Neutrality Roundup #2

Yesterday I discussed Ajit Pai's plan to dismantle the FCC's net neutrality regulations, his disingenuous justifications for doing so, and the inevitability of lawsuits challenging the change in court. We left off on Tim Wu's observation that Pai is doing this in opposition to the vast majority of public opinion.

The FCC comment period concerning the net neutrality repeal saw 22 million comments; it received a greater response than any other FCC proposal in history.

While Pai has openly acknowledged that he doesn't care about the quantity of pro-Title II comments, he has also, disingenuously, drawn a false equivalence between the number of pro- comments and the number of anti- comments. Jon Brodkin at Ars Technica notes:

Pai [...] released a "Myth vs. Fact" sheet that claims public comments to the FCC don't show significant support for net neutrality. Pai's office called it a "myth" that commenters "overwhelmingly want the FCC to preserve and protect net neutrality," arguing that fraudulent comments far outnumber legitimate ones.

That's true largely because the FCC imposed no real restrictions on comment uploads and took no steps to remove fraudulent comments from the record. But analyses of comments show that about 98 or 99 percent of "unique" comments oppose the net neutrality repeal.

That last link goes to an article by Jeff Kao at Hackernoon titled More than a Million Pro-Repeal Net Neutrality Comments were Likely Faked. Here are a couple lines from the abstract:

My research found at least 1.3 million fake pro-repeal comments, with suspicions about many more. In fact, the sum of fake pro-repeal comments in the proceeding may number in the millions. In this post, I will point out one particularly egregious spambot submission, make the case that there are likely many more pro-repeal spambots yet to be confirmed, and estimate the public position on net neutrality in the “organic” public submissions.

Kao goes on to chart the duplicate versus unique comments:

Chart of trends in FCC comments
Keep-Net Neutrality comments were much more likely to deviate from the form letter, and dominated in the long tail.

From this chart we can see that the pro-repeal comments (there are approximately 8.6 million of them) are much more likely to be exact duplicates (dark red bars) and are submitted in much larger blocks. If even 25% of these pro-repeal comments are found to have been spam, that would still result in more than 2 million faked pro-repeal comments, each with an email address attached. Further verification should be done on the email addresses used to submit these likely spam comments.

On the other hand, comments in favor of net neutrality were more likely to deviate from a form letter (light green, as opposed to dark green bars) and were much more numerous in the long tail. If the type, means of submission, and ‘spamminess’ of comments from both sides were equal, we would expect a roughly even distribution of light and dark, red and green, throughout the bars. This is evidently not the case here.

Kao has gone to more trouble than Pai to try and tell spam comments from legitimate ones. Indeed, New York AG Eric Schneiderman has accused the FCC of stonewalling his investigation into FCC comments using fraudulent names and addresses. And he's not the only one investigating:

Schneiderman is not the first to accuse the FCC of stonewalling investigations into the net neutrality comment system. The FCC's claim that the comment system was temporarily disrupted by DDoS attacks has received lots of attention, but the FCC hasn't provided all the records requested in several Freedom of Information Act (FoIA) requests.

The FCC also told members of Congress that it won't reveal exactly how it plans to prevent future attacks on the public comment system.

A FoIA request from Ars was denied by the FCC due to "an ongoing investigation."

US Senator Ron Wyden (D-Ore.) criticized the FCC for failing to turn over its internal analysis of the DDoS attacks that hit the FCC's public comment system. Senator Brian Schatz (D-Hawaii) and Rep. Frank Pallone (D-N.J.) requested an independent investigation into the DDoS attacks, and the US Government Accountability Office (GAO) has agreed to investigate.

The FCC is also facing a lawsuit alleging that it ignored a FoIA request for data related to bulk comment uploads, which may contain comments falsely attributed to people without their knowledge.

So are there any other ways the FCC's terrible plan is vulnerable to litigation?

Why yes. Yes there are. Because it also prevents states from passing their own net neutrality laws.

And there's legal precedent stating that the FCC can't preempt state laws -- ironically, decided in a case where Tom Wheeler's FCC attempted to prevent states from passing laws against municipal broadband.

These are just some of the avenues of attack Pai has opened himself up to. The question isn't whether there will be lawsuits after the net neutrality repeal; it's how many and how soon.

Net Neutrality Roundup #1

Ajit Pai has announced, expectedly, that he intends to vote to kill the FCC's Title II net neutrality regulations on December 14.

As I've discussed previously, this was a foregone conclusion, but the point was never to change Pai's mind; there are, after all, two whole branches of government besides the one he serves in.

Tim Wu (the man who coined the phrase "Network Neutrality") discusses one of those branches in a recent op/ed in the New York Times called Why the Courts Will Have to Save Net Neutrality.

The problem for Mr. Pai is that government agencies are not free to abruptly reverse longstanding rules on which many have relied without a good reason, such as a change in factual circumstances. A mere change in F.C.C. ideology isn’t enough. As the Supreme Court has said, a federal agency must “examine the relevant data and articulate a satisfactory explanation for its action.” Given that net neutrality rules have been a huge success by most measures, the justification for killing them would have to be very strong.

It isn’t. In fact, it’s very weak. From what we know so far, Mr. Pai’s rationale for eliminating the rules is that cable and phone companies, despite years of healthy profit, need to earn even more money than they already do — that is, that the current rates of return do not yield adequate investment incentives. More specifically, Mr. Pai claims that industry investments have gone down since 2015, the year the Obama administration last strengthened the net neutrality rules.

Setting aside whether industry investments should be the dominant measure of success in internet policy (what about improved access for students? or the emergence of innovations like streaming TV?), Mr. Pai is not examining the facts: Securities and Exchange Commission filings reveal an increase in internet investments since 2015, as the internet advocacy group Free Press has demonstrated.

A popular argument I've seen from anti-Title II trolls on sites like Ars Technica and Techdirt is "Well if we need these rules, how did the Internet do so well before 2015?" (This rhetorical question is usually coupled with sarcastic remarks about former president Barack Obama.)

That question is disingenuous, for a couple of reasons. First, as Wu notes, that's the opposite of how FCC rules get passed and repealed. We already asked and answered the question of why we needed Title II regulations during the public comment period in 2014. The question isn't "Why did we need these rules in 2015?" It's "Why do we no longer need them in 2018?" It's the oldest forum troll trick in the book: "I'm not going to provide supporting evidence for my argument, I'm going to demand that you provide supporting evidence for yours, even though the burden of proof is on me."

The other reason the "How did the Internet ever survive before 2015?" question is disingenuous horseshit is that Pai's not merely rolling back FCC rules to pre-2015 levels, he's rolling them back to pre-2005 levels. Wu's article continues:

But Mr. Pai faces a more serious legal problem. Because he is killing net neutrality outright, not merely weakening it, he will have to explain to a court not just the shift from 2015 but also his reasoning for destroying the basic bans on blocking and throttling, which have been in effect since 2005 and have been relied on extensively by the entire internet ecosystem.

This will be a difficult task. What has changed since 2004 that now makes the blocking or throttling of competitors not a problem? The evidence points strongly in the opposite direction: There is a long history of anticompetitive throttling and blocking — often concealed — that the F.C.C. has had to stop to preserve the health of the internet economy. Examples include AT&T’s efforts to keep Skype off iPhones and the blocking of Google Wallet by Verizon. Services like Skype and Netflix would have met an early death without basic net neutrality protections. Mr. Pai needs to explain why we no longer have to worry about this sort of threat — and “You can trust your cable company” will not suffice.

So let's, just for a moment, play the trolls' game and explain why we need Title II regulations to protect net neutrality.

There's a convenient list of net neutrality violations making the rounds; I don't know where it originated, but I've seen variations on it in a couple of different places: by a poster named JoeDetroit on Techdirt and a poster named Happysin on Ars Technica. Here are both those versions of the list combined and lightly edited:

2005 - Madison River Communications was blocking VOIP services. The FCC put a stop to it.

2005 - Comcast was denying access to P2P services without notifying customers.

2007-2009 - AT&T was having Skype and other VOIPs blocked because they didn't like that there was competition for their cellphones.

2011 - MetroPCS tried to block all streaming except YouTube. They actually sued the FCC over this.

2011-2013 - AT&T, Sprint, and Verizon were blocking access to Google Wallet because it competed with their own wallet apps. This one happened literally months after the trio were busted collaborating with Google to block apps from the Android marketplace.

2012 - Verizon was demanding Google block tethering apps on Android because it let owners avoid their $20 tethering fee. This was despite guaranteeing they wouldn't do that as part of a winning bid on an airwaves auction.

2012 - AT&T tried to block access to FaceTime unless customers paid more money.

2013 - Verizon literally stated that the only thing stopping them from favoring some content providers over other providers were the net neutrality rules in place.

2014 - Netflix & Comcast sign a deal where Netflix will pay Comcast to stop throttling the service. The very next day, streaming problems vanish.

That is, needless to say, not an exhaustive list.

Meanwhile, there's another kind of forum troll, making the rounds like clockwork on every article I've ever seen on this subject: the "What does it matter? Pai's just going to do it anyway; he doesn't care what we think!" troll.

I've already responded to that argument at length (and up at the top of this post -- "two whole branches of government"). Wu reinforces my point:

Moreover, the F.C.C. is acting contrary to public sentiment, which may embolden the judiciary to oppose Mr. Pai. Telecommunications policy does not always attract public attention, but net neutrality does, and polls indicate that 76 percent of Americans support it. The F.C.C., in short, is on the wrong side of the democratic majority.

That's why people left comments on the FCC website. It's why people are writing articles protesting it now, and planning in-person protests for December 7. Lawsuits are inevitable, and clear and constant reminders that Pai threw out the Title II classification against public opinion makes his weak case weaker.

And that's not the only thing. Come back tomorrow for more.