Category: Tech

So I Guess I'm an Evercade Guy Now

When I first read about the Evercade, I didn't see much to get excited about — another retro gaming device with old Atari and Namco games you can already get in plenty of other places, and despite "-rcade" in the name it didn't actually have any arcade games, only console ports of them. Like, it might be something fun to get my nephew if it didn't cost quite so much, but I didn't think it was for me.

Times have changed. Those early Namco and Atari collections aren't really representative of where the Evercade is today — in fact, they've not even in production anymore.

Stuart Gipp's done a good job of covering the Evercade over at Retronauts; he's called attention to it as a system that often highlights weird or obscure retro titles, not just the obvious stuff. And when he interviewed a couple of the folks at Blaze Entertainment in an episode of the podcast, I decided I should probably get me one.

So I got three.

But I'll get to that in a future post. For now, let's talk about the Evercade.

Why (or why not) Evercade?

The Evercade is a gaming device primarily focused on emulation and retro-gaming.

Thing is, there are plenty of those. I have an Analogue Pocket. Hell, I've got a Steam Deck, which isn't emulation-focused but is pretty damn great as a handheld emulation device. Those both cost a lot more than the Evercade, but you can get an Abernic handheld around the same price point and load it up with ROMs.

So what sets the Evercade apart?

Does going legit matter to you?

I'm going to leave aside the indie games and native ports for now (we'll get to them down at the bottom) and just talk about the retro ROMs you can buy for Evercade.

You can find all these ROMs on the Internet. You want a complete dump of every NES game or whatever, they're not hard to find.

But a lot of the retro games on Evercade aren't available anywhere else legally.

Now, let's be real: in the vast majority of cases, buying 30-year-old games isn't going to support any of the people who actually worked on them. But you are showing the publishers there's a demand for games like these, and giving them an incentive to release more.

Does curation matter to you?

So these ain't exactly Digital Eclipse releases here. They are, for the most part (but not always!) pretty barebones collections of ROMs that, as I understand it, run in Retroarch. There's a description and box art for each game, you can use savestates and a few simple screen filters, and depending on which version of the Evercade you have, you may or may not be able to remap the buttons. (Which you will usually want to do, because the default mappings are mostly terrible.)

But nonetheless, people put thought into what to include in each collection. Most Evercade carts make for a pretty fascinating and diverse lineup of games from different times and different genres and, often, different systems. And, given the choice between multiple releases of the same game, the one they pick usually shows a certain amount of care — for example, as Gipp notes, Interplay Collection 1 has the Genesis version of Earthworm Jim, but Interplay Collection 2 has the SNES version of Earthworm Jim 2. They chose the better version of each game. Similarly, Sunsoft Collection 2 includes the Genesis version of Aero the Acro-Bat 2 and the SNES version of Zero the Kamikaze Squirrel.

It's easy to find a dump of every SNES game ever released. But what are the odds you'll fire it up, look through the list, and say "Hey, Zero the Kamikaze Squirrel sounds like fun; I'll play that one"? I've scrolled through those lists of Every Game, man, and it's like indecisively paging through Netflix for half an hour: too many options can make it hard to choose one. There's a value to a limited set of suggestions. Particularly if all the options are good, or at least interesting.

B-listers and deep cuts

Most dedicated retro-gaming devices focus on the hits. And the Evercade's got some of those — one of its upcoming devices is Street Fighter 2-branded — but it's also got collections where the most recognizable games are Earthworm Jim, Glover, and Dizzy.

And don't get me wrong, I love me some Mario, Sonic, and Castlevania, and the first thing I did when I got my Evercade EXP was fire up Mega Man X. There's nothing wrong with playing the hits. But the Evercade collections have that thrill of discovery. I've never played Claymates before, and it turns out I've been missing out. I haven't spent enough time with Joe and Mac 2 yet to realize if it's any good, but it sure looks great. Even something like The Fidgetts, which I wouldn't describe as good, has some lovely sprite work and is so close to being good, if only it weren't for oldschool artificial-difficulty mechanics like lives and a way-too-short timer. Even the games that aren't great are worth the time to check out, and I doubt I ever would have if they hadn't come in collections like these.

How do you feel about physical media?

Well, they've got their benefits and drawbacks, don't they? On the one hand, they'll probably still work in 30 years if you still have the hardware. On the other, they sure do take up space, and obviously it's less convenient to swap cartridges than to just pick a game from a menu.

Evercade games come on cartridges, in plastic clamshell cases, with full-color manuals. That's pretty cool! But maybe not the most convenient. But it brings us to:

The collector thing

It doesn't take long to figure out that the Evercade is a system for collectors.

I wouldn't say I'm a collector on purpose, but I definitely collect things — if for no other reason than I'm terrible at getting rid of the shit I have.

I've got a comic collection, a game collection, a movie collection; I'm a collector. But I buy comics to read them, games to play them, movies to watch them — sure, I've got a backlog, but I mostly don't buy stuff just for the sake of having it. I don't worry about gaps in my collection — sure, occasionally I'll think "Hey, I'm only one issue shy of a complete run of Simpsons Comics," but then I forget about it; I don't go on eBay and start looking for it because I just have to complete my collection.

But yeah, the Evercade encourages collectors; it's got numbered releases, a menu screen that keeps track of which games you have and which ones you're missing, the whole deal. The good thing about this is, if you buy a used Evercade game, it's probably going to be complete and well-cared-for. The bad thing is, once games go out of production they start to get expensive. You want a copy of the Oliver Twins Collection? It ain't gonna be cheap.

Since getting an Evercade, there have definitely been a couple of times I've seen an announcement that a cartridge has been discontinued and then thought "Oh shit, I'd better get that while I still can." And sometimes that's a good idea! I got the Codemasters Collection while it was still available for $20 new, and there are some great games on that thing. But it can be easy to get caught up in that mentality and spend too much money on stuff you don't need if you're not careful.

If you like to collect things, the Evercade will scratch your itch. Just don't go overboard, okay?

The unique stuff

Now, I've said that most of the retro collections are just simple ROM dumps, and that's true, but it's starting to change.

First there were modest modifications, like removing Charles Barkley from Barkley Hoops: Shut Up and Jam.

More recently, there have been ground-up remakes: this year's Piko Collection 4 includes Glover, which the Evercade site describes as "rebuilt from scratch" to run smoothly on a device that isn't exactly optimized for N64 emulation. And the collection that convinced me to buy an Evercade in the first place, Duke Nukem Collection 1, includes remakes of the first two games.

You can buy Glover on Steam. You can find Duke Nukem 2 on abandonware sites. But these specific versions of those games aren't available for any other platform but Evercade. A lot of work went into them, and they're pretty fucking cool.

And the indies

So now let's get to the indies.

They're fucking great.

If you have an Evercade EXP or VS, there's a featured indie game every month; you download it and you can play it for free until they replace it with the next one. And periodically they'll release compilations of indie titles, including those previously-featured downloads as well as others. And they're some of the best games on the system.

Some of them are modern ROMs for retro systems that run in emulators; some are retro-style games designed for modern systems and ported to run natively on the Evercade. In both cases what we've got are some games that look, sound, and feel like old 8- or 16-bit classics, but with another thirty to forty years of design iteration.

And once again, you've got other options for devices to play these games on — legally, even. Most of them are on Steam or itch.io or direct from the publisher's site. They're not necessarily a reason to get an Evercade in themselves.

But if you do buy an Evercade, you'd be remiss in not checking out at least some of them. It's a device whose primary purpose is playing old games, but the best games on it may very well be the new ones.

My current favorites are Alwa's Awakening, Full Void, and Tapeworm Disco Puzzle.

So that's a quick introduction to the Evercade. Next time I'll talk about the different models I've tried (and some I haven't) and where to buy (I like videogamesplus.ca). Join us, won't you?

How to Strip DRM from Kobo Purchases

Expanded from a post at brontoforum.us, 2024-05-28.

I like the Humble Bundle. I've bought rather a lot of games, comics, and books there.

Usually the comics and books have been DRM-free, but recently they've had a couple of bundles, including a Discworld bundle and a TMNT bundle (still available as of this post), that, instead of being straight DRM-free file downloads, required that buyers redeem DRM-encumbered files from Kobo.

Fortunately, it's not difficult to strip DRM from Kobo downloads, so that you can read your books on whatever device and in whatever app you choose. Here's how:

Download and install Calibre.

Download DeDRM tools (make sure you get it from the noDRM repository, not the original apprenticeharper one; the latter is no longer maintained).

Extract the zip file.

In Calibre, go to Preferences → Advanced → Plugins. Click "Load plugin from file", browse to the directory you just unzipped into, and install both _plugin.zip files. Restart Calibre after both are installed.

Install Kobo Desktop (direct link to kobosetup.exe). Run it, log into your Kobo account, and download the books you want. Once they're finished downloading, quit out of the Kobo app.

In Calibre, click the "Obok DeDRM" link in the top bar. From there it's pretty self-explanatory; whatever books you select will be added to your Calibre library and you can find the epub files in your file browser.

That's it for stripping the DRM, but there's one more thing I noticed: it turns out that my comics reader app of choice, Perfect Viewer, doesn't really work very well with epub files; for some reason it doesn't support the same features for epub as it does for cbz/cbr/pdf files (eg automatically showing two pages when rotated). Fortunately, there's a dead-simple workaround: change the file extension from .epub to .cbz. (A CBZ is just a zip file of images; an EPUB is basically a zipped website. Change the extension from EPUB to CBZ and PerfectViewer just ignores the HTML files and looks for the images.) YMMV depending on your reader of choice; some will show side-by-side pages without issue (like Calibre's built-in reader) and the file extension trick may not work in others (since the images aren't at the root of the zip file; in that case you may need to extract the EPUB and then re-zip just the images into a CBZ file).

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.