Tag: Linux

Fell Seal

You know what game I've been enjoying lately? Fell Seal: Arbiter's Mark.

It's from developer 6 Eyes Studio and publisher 1C Entertainment, and it's an unabashed homage to Final Fantasy Tactics.

I think that's an underserved niche. There are plenty of tactical RPGs (like Fire Emblem) and their close cousins, turn-based strategy games (like XCOM). But most of them don't feel quite like Final Fantasy Tactics or its predecessor, Tactics Ogre.

Fell Seal does. Its storyline isn't quite as complex or as epic as those games', and its soundtrack is fine but doesn't feel as inspired as theirs. (After a round of Fell Seal, I tend to find myself humming tunes from FFT -- though FS's tunes are beginning to stick in my head themselves now.) But its mechanics? Those are damned impressive. Especially from such a small team (per their The Team page, two leads and nineteen contractors).

As of this writing, I'm eight hours or so in. I haven't seen every map; I haven't unlocked every class. But what I've seen so far has kept me excited and engaged in that FFT "just one more fight" way. Every class so far has been useful; every skill tree seems well-considered. And look, FFT is one of my favorite games of all time, but it's not perfect; there are a whole lot of useless skills in there, such as most of the Archer class's "Charge +n" abilities, and Cloud's Limit Breaks for the same reason. Fell Seal doesn't have a charge mechanic; abilities all execute right away. And I haven't found a class yet with abilities that weren't useful (though I admit I'm not quite sure about Gadgeteer just yet). Beyond your basic classes (Merceneries are a well-rounded base class, Menders heal, Wizards damage from a distance, Knights damage from up close, Scoundrels are quick and maneuverable), you get some more interesting choices, like the Plague Doctor, who has debuff-focused attacks but also a base AoE ability that removes debuffs and heals a small amount of HP. There are useful passive skills, too: Wizards can learn an ability that prevents offensive magic from harming allies or healing magic from healing enemies; it's a major boon for any spellcaster.

I haven't even tried the crafting system yet.

It's not a perfect game -- I don't love the character graphics, and while I do love the environment graphics, the decision to go with hand-drawn environments means you can't rotate the camera, which is inconvenient on some stages (for example, when a character is standing under a tree branch and you can't see them). But it's a damned impressive game, that I've already derived hours of enjoyment from and expect many more. The game has some excellent granular difficulty settings, and while I'm enjoying it on the defaults, I'm also looking forward to playing it again on a harder difficulty sometime.

As of this writing, the game is in Steam Early Access. However, it's scheduled for a release sometime next month, and the version currently on Steam is nearly final; according to the release notes, the only things missing are the ending and a secret bonus dungeon. The price has recently gone up from $20 to $30; I believe that will be the final price on release but I'm not 100% certain. I'd still recommend it if the price went up to $40.

But whether you get it now in Early Access or wait a few weeks for its full release, I heartily recommend this game. If you like tactical RPGs in general, and especially if you like Tactics Ogre and Final Fantasy Tactics in particular, you should buy Fell Seal: Arbiter's Mark. I don't think you'll be disappointed.

Fell Seal is available for Windows, Mac, and GNU/Linux, with Xbox One and PS4 versions on the way; I'm playing the Linux version. There's a free demo at itch.io, though I had some trouble with it (I couldn't get shops or guild halls to work, which left me short one party member on the second battle and made it much harder; I haven't had any issues with the full version of the game).

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.

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.

The SFLC Tries to Terminate Conservancy's Trademark

In my last two posts, I've talked about the Linux Foundation's apparent disdain for the GPL (the license that Linux is published under, which allows derivative works but requires them to be published under the same license), and Eben Moglen's apparent souring on legal enforcement of the GPL. I mentioned that the Software Freedom Law Center is seeking to terminate the Software Freedom Conservancy's trademark, and that Bruce Perens believes that this is retaliation by the LF. So let's continue, shall we?

The Linux Foundation now represents corporate interests, not the community. The GPL is designed to protect the community. So there's some friction there right off the bat.

In fact, as I mentioned in the first part, the LF used to have two community representatives on its board, but terminated the position.

Why? Well, it happened right after the Software Freedom Conservancy's Executive Director, Karen Sandler, announced her intention to run for a seat. Looks like the Linux Foundation didn't like that. VMware certainly didn't, since Conservancy is currently funding a GPL enforcement lawsuit against it.

And, as noted in the previous post, Eben Moglen published an article arguing against GPL enforcement. That doesn't seem to have gone over well with the Free Software Foundation; he resigned his position as FSF General Counsel soon after. That's a hell of a thing, after nearly 25 years in the role.

Now, Moglen's SFLC has filed to terminate the Conservancy's trademark, stating that the marks are too similar and could cause confusion. This seems out of the blue; the SFLC started Conservancy, and legally represented it for years; if it were concerned about trademark confusion, it should have expressed those concerns eleven years ago.

Perens went on a bit of a tear about this; he submitted an article to Slashdot titled Software Freedom Law Center Launches Trademark War Against Software Freedom Conservancy, and has commented extensively on two articles at LWN, one quoting Conservancy's post and the other quoting the SFLC's response.

Perens believes the connection is clear: as the Linux Foundation has come to represent corporate members over the Linux community, it has become increasingly critical of the GPL. Eben Moglen and the SFLC, which is funded by the LF, still purport to believe in the GPL, but have become increasingly critical of legal actions enforcing it. The LF includes VMware on its board, and Conservancy is funding a GPL enforcement action against VMware; in light of these facts, it does not appear coincidental that the LF eliminated its community representative positions right after the executive director of Conservancy expressed an interest in running for one, and the Software Freedom Law Center suddenly became concerned that the Software Freedom Conservancy -- an organization which it started -- has a name that's too similar.

So how will this all turn out? I'm not a lawyer, but I think Conservancy is on pretty solid ground here. Of course, if Perens is right, then this isn't really about a trademark at all. And if Perens is right and the Linux Foundation really is out to punish Conservancy, then this action may not be the end of it.

The SFLC and Conservancy: A History

Yesterday, I went over how the Linux Foundation doesn't seem to like the license Linux is published under very much.

Bruce Perens, co-founder of the Open Source Initiative and founder of the Linux Standard Base (which led to the formation of the Linux Foundation), says it's worse than that, and that the Linux Foundation is now undermining GPL enforcement against its member organizations.

This is a complicated story, so strap in. I mean, if this sounds like something you're interested in. If it doesn't, then I don't blame you; come back on Friday, when I'll have about 750 words on April from Teenage Mutant Ninja Turtles.

Still here? Okay.

The Software Freedom Law Center is funded by the Linux Foundation, and provides pro bono legal services and representation to developers of free/open-source software. Its chairman is Eben Moglen, who was pro bono general counsel for the Free Software Foundation from 1994 to 2016. Moglen has done a hell of a lot for free software over the course of the last 25 years.

In 2006, the SFLC launched the Software Freedom Conservancy, an organization that provides free financial and administrative services to free software projects. Today Conservancy represents 48 projects, notably including BusyBox, Git, phpMyAdmin, QEMU, Samba, and Wine. Conservancy is an independent entity and not part of the SFLC, though the SFLC represented Conservancy through 2011.

In 2007, the SFLC and Conservancy began GPL enforcement suits on behalf of BusyBox. BusyBox is a minimal bootable system that's in everything; if you're using a piece of consumer electronics that's more complicated than a microwave oven, there's a good chance it's got BusyBox in it. And a lot of those electronics companies don't bother to follow the GPL and release their source code modifications.

There's been some backlash against GPL enforcement in the years since. BusyBox's maintainer, Rob Landley, later regretted the lawsuits; he deemed them counterproductive, and said they hadn't helped BusyBox or any other project, they'd just convinced companies like Google to avoid the GPL and use permissive licenses instead.

Maybe so. But if nobody ever enforces the GPL, then it's meaningless. A mere suggestion.

Conservancy has continued its GPL enforcement actions. Currently, it's funding Christoph Hellwig's litigation against VMware in Germany. VMware distributes a modified version of the Linux kernel; Hellwig is a kernel contributor and, thus, one of the many copyright holders in the Linux kernel. (While many free/open-source projects require that contributors assign all copyright to a single rightsholder, such as Conservancy or the GNU Project, the Linux kernel does not; every single contributor to the Linux kernel maintains the copyright to the portion of the kernel they contribute, but licenses it under the GPL for anyone else to use.)

Eben Moglen seems to have soured on GPL enforcement. Last year he published an article in the International Free and Open Source Software Law Review titled Whither (Not Wither) Copyleft. His arguments are similar to Landley's: all these GPL enforcement suits are actually bad for the GPL, because they discourage companies from using the GPL at all.

Moglen makes the argument that litigation should be a last resort, and that parties should try to resolve their disputes amicably if at all possible. The thing is, I don't think anybody actually disagrees with that.

When has Conservancy chosen to sue, when there was any other path available? BusyBox v Westinghouse was a default judgement. Westinghouse didn't even bother showing up to court; I don't see how politely-worded E-Mails were going to get it to comply. Conservancy spent three years attempting to negotiate with VMware, to no avail; the lawsuit is a last resort. Whither copyleft? indeed.

Bruce Perens thinks the SFLC's recent trademark action is retaliation for Conservancy's enforcement action against VMware. I'll save the why for my next post. Tune in tomorrow, same Thad-time, same Thad-channel.

The Linux Foundation Hates Copyleft

It's been kinda weird, seeing the Linux Foundation slowly transform into an organization that is fundamentally opposed to the license Linux is published under.

But the Linux Foundation is in the business of turning a profit, and that's meant embracing corporate America -- even Microsoft is now a member. In fact, the board is overwhelmingly made up of corporate representatives now: Facebook, AT&T, Qualcomm, Cisco, VMware (we'll come back to them tomorrow), Intel, HP, Bitnami, Panasonic, Hitachi, Samsung, IBM, Microsoft (Microsoft!), Comcast, Huawei, NEC, Oracle, Fujitsu. There used to be two community representatives on the board, but they eliminated that position (we'll come back to that on Thursday).

Linux is published under the GNU General Public License. The GPL is what GNU/Free Software Foundation founder Richard Stallman calls "copyleft": if a piece of software is licensed under the GPL, then that means anyone else is free to access, modify, and redistribute the source code, provided that if they release a modified version, they publish it under the same license.

Corporations don't much like copyleft or the GPL. They like more permissive licenses, like the MIT License and the BSD Licenses, which allow them to take someone else's code, modify it, and not give their modifications back to the community.

Linus Torvalds, the man who the Linux Foundation is named after, gets this. FOSS Force's Christine Hall recounts his remarks at LinuxCon last year:

“I think that if you actually want to create something bigger, and if you want to create a community around it, the BSD license is not necessarily a great license,” he said.

“I mean, it’s worked fairly well, but you are going to have trouble finding outside developers who feel protected by a big company that says, ‘Hey, here’s this BSD license thing and we’re not making any promises because the copyright allows us to do anything, and allows you to do anything too.’ But as an outside developer, I would not get the warm and fuzzies by that, because I’m like, ‘Oh, this big company is going to take advantage of me,’ while the GPL says, ‘Yes, the company may be big, but nobody’s ever going to take advantage of your code. It will remain free and nobody can take that away from you.’ I think that’s a big deal for community management.

“It wasn’t something I was planning personally when I started, but over the years I’ve become convinced that the BSD license is great for code you don’t care about. I’ll use it myself. If there’s a library routine that I just want to say ‘hey, this is useful to anybody and I’m not going to maintain this,’ I’ll put it under the BSD license.

“Whenever licenses come up, I want to say that this is a personal issue,” he continued, adding a disclaimer most likely meant mainly for the benefit of the BSD folks, some of whom resent Linux’s success, but also to appease big enterprise, which is where the Linux Foundation gets virtually all of it’s funding.

“Some people love the BSD license,” he said. “Some people love proprietary licenses, and do you know what? I understand that. If you want to make a program and you want to feed your kids, it used to make a lot of sense to say that you want to have a proprietary license and sell binaries. I think it makes less sense today, but I really understand the argument. I don’t want to judge, I’m just kind of giving my view on licensing.”

Jim Zemlin, Executive Director of the Linux Foundation, seems to feel a little bit differently. Hall quotes him, in an article titled The Linux Foundation: Not a Friend of Desktop Linux, the GPL, or Openness:

“The most permissive licenses present little risk and few compliance requirements. These licenses include BSD and MIT, and others, that have minimal requirements, all the way to Apache and the Eclipse Public License, which are more elaborate in addressing contributions, patents, and indemnification.

“In the middle of the spectrum are the so-called ‘weak viral licenses’ which require sharing source code to any changes made to the originally licensed code, but not sharing of other source code linked or otherwise bound to the original open source code in question. The most popular and frequently encountered licenses in this category are the Mozilla Public License and the Common Public Attribution License.

“Restrictive Licenses present the most legal risk and complexity for companies that re-distribute or distribute software. These licenses are often termed ‘viral’ because software combined and distributed with this licensed software must be provided in source code format under the terms of those licenses. These requirements present serious risks to the preservation of proprietary software rights. The GNU General Public License is the archetype of this category, and is, in fact, the most widely used open source license in the world.”

Hall adds, "While his points are accurate enough, and reflect what I’ve already written in this article, the terms he uses suggest that the foundation holds the GPL and other copyleft licenses in contempt."

So what's all that got to do with the Software Freedom Law Center filing to have the Software Freedom Conservancy's trademark terminated? Nothing, insist the Linux Foundation and the SFLC. But Bruce Perens -- who founded the Linux Standard Base, one of the organizations that became the Linux Foundation -- thinks it's retaliation for a GPL enforcement lawsuit against VMware.

But that's a story for another post. Or two...

How I Created and Self-Published My eBook

I wrote Old Tom and the Old Tome in Scrivener. I converted it to an EPUB with Sigil. I tested it using Calibre, FBReader, Nook, Kobo, and Google Play Books. Then I published it on Smashwords and Kindle Direct.

Why a short story?

This one is probably obvious, but just in case it isn't: I started with a short story because when you want to learn a new skill, you want to start small. I didn't want to write something novel-length and then run into a bunch of problems.

A short story's the perfect length to start with. Old Tom and the Old Tome clocks in around 3,000 words, split up into 4 separate sections (cover, copyright, story, About the Author). It has a great structure for learning the ropes.

Of course, you don't have to go the fiction route. In fact, it occurs to me that this blog post would actually convert quite nicely into a short eBook. Hm, food for thought.

Scrivener

I checked out Scrivener because Charles Stross swears by it. It's basically an IDE for writing books; it's quite simply the most advanced and mature piece of software there is for the purpose.

There's a Linux version, but it's abandonware. For a GNU/Linux user such as myself, this is something of a double-edged sword: on the plus side, I get Scrivener for free, where Mac and Windows users have to pay $40 for it; on the minus side, if a system upgrade ever causes it to stop working, I'm SOL. If Scrivener stops working on my system, there's not going to be a fix, I'll be locked into a platform I can no longer use. I could try and see if the Windows version will run under WINE, but there's no guarantee of that.

The good news is that Scrivener saves its files in standard formats, so if it ever stops working I'll still be able to access my content in other programs. The bad news is that it saves its individual files with names like 3.rtf and 3_synopsis.txt.

So Scrivener's pretty great, and I'll probably stick with it for a little while even though there are no more updates on the horizon for my OS -- but there's a definite downside to using the Linux version. (And if they decided the Linux version wasn't going to bring in enough profit to justify maintaining it, what happens if they decide the same thing for the Windows version someday, maybe leave it as a Mac-only product?)

Getting Started

Scrivener's got a great tutorial to run through its functionality; start there.

When you're done with the tutorial and ready to get to work on your book, I recommend using the Novel template, even if you're not writing a novel, because it automatically includes Front Matter and Back Matter sections; the Short Story template does not.

Scrivener's got your standard MS-word-style tools for formatting your work. I didn't use them. Since I was targeting a digital-only release and no print version, I wrote my story in Markdown, which converts trivially to HTML but isn't as verbose as HTML.

Output Formats

Since I went the Markdown route, I found that the best option for output at compile time was Plain Text (.txt). The most vexing thing I found about the output was the limited options under the "Text Separator" option -- the thing that goes between different sections. What I wanted was a linebreak, followed by ***, followed by another linebreak. Scrivener doesn't have any option for that -- your options are Single Return, Empty Line, Page Break, and Custom. Under Custom you can put ***, but there doesn't seem to be any way to put a linebreak on either side of it. So I found the best option was to just do that, and then manually edit the text file it put out and add a linebreak on either side of each one.

If you plan on making an EPUB file, you'll probably want to keep all the "smart quotes" and other symbols that Scrivener adds to your text file. However, if you want to distribute the Markdown file in plain text and want it to be readable in Chrome, you'll need to remove all the pretty-print characters, because Chrome won't render them correctly in a plain-text file (though it'll do it just fine in a properly-formatted HTML file). You'll also want to use the .txt extension rather than .md or .markdown if you want the file to display in Firefox (instead of prompting a download).

You've got different options for converting from Markdown to HTML. Pandoc is a versatile command-line tool for converting between all sorts of different formats, but I don't like the way it converts from Markdown to HTML; not enough linebreaks or tabs for my tastes. There are probably command-line flags to customize those output settings, but I didn't find them when I glanced through the man page.

I thought Scrivener's Multimarkdown to Web Page (.html) compile option worked pretty well, although the version I used (1.9 for Linux) has a bug that none of the checkboxes to remove fancy characters work correctly: you're getting smartquotes whether you want them or not. You also don't want to use *** as your section separator, because Scrivener reads it as an italicized asterisk (an asterisk in-between two other asterisks, get it?) instead of an HR. Similarly, it reads --- as an indicator that the previous line of text is an h2.

So your best bet for a section break is something like

</p><hr/><p>

or

<div class="break">*</div>

(Actually, you don't want to use HR's at all in an EPUB, for reasons I'll get to later, but if you want to distribute an HTML version of your book, it's fine to use them in that version.)

Sigil

Sigil is an excellent, very straightforward tool for editing the EPUB format. I recommend you grab the Sigil User Guide, go through the Tutorial section, and do what it tells you -- even the stuff that generates seemingly ugly code. For example, if you use Sigil's Add Cover tool, you wind up with code that looks like this:

<svg xmlns="http://www.w3.org/2000/svg" height="100%" preserveAspectRatio="xMidYMid meet" version="1.1" viewBox="0 0 900 1350" width="100%" xmlns:xlink="http://www.w3.org/1999/xlink">
  <image width="900" height="1350" xlink:href="../Images/cover.jpg"/>
</svg>

If you're like me, looking at that makes you wince. And your instinct will be to replace it with something simple, like this:

<img src="../Images/cover.jpg" alt="Cover" />

But don't do that. Removing the <svg> tag, or even removing those ugly-ass inline styling attributes, will prevent the cover from displaying correctly as a thumbnail in readers.

(If there is a way to clean up that ugly <svg> tag and still have the thumbnail display correctly, please let me know; I'd love to hear it.)

Now, Sigil is for the EPUB2 format. It doesn't support any of the newfangled fancy features of EPUB3, and neither do most readers at this point. You're going to want to keep your styles simple. In fact, here's the entire CSS file from Old Tom and the Old Tome:

img {
  max-width: 100%;
}

h1 {
  text-align: left;
  text-indent: 0;
  font-size: 200%;
}

.noindent {
  text-indent: 0;
}

.break {
  margin: 1em 0;
  text-align: center;
}

Oh, and that last class, .break? That's there because some readers ignore <hr/> tags. FBReader on Android, for example, will not display an HR. No matter how I tried formatting it, it wouldn't render. Not as a thin line, not even as a margin. If you use an <hr/> tag in your EPUB file, FBReader will act as if it isn't there.

So I wound up cribbing a style I saw in Tor's EPUB version of The Bloodline Feud by Charles Stross:

<div class="break">*</div>

where, as noted in the above CSS, the .break class centers the text and puts a 1em margin above and below it.

(Some readers won't respect even that sort of simple styling, either; Okular parses the margin above and below the * but ignores the text-align: center style. Keep this in mind when you're building an EPUB file: keep the styles simple, and remember that some readers will straight-up ignore them anyway.)

(Also: this should go without saying, but while it's okay to look through other eBooks for formatting suggestions and lifting a few lines' worth of obvious styling is no problem, you don't want to go and do anything foolish like grab an entire CSS file, unless it's from a source that explicitly allows it. Even then, it might not be a good idea; formatting that works in somebody else's book may not be a good idea in yours.)

Testing

Once my EPUB was done, I tested it in a number of different readers for a number of different platforms at a number of different resolutions. There are a lot of e-readers out there, and their standards compliance is inconsistent -- much moreso than the browser market, where there are essentially only three families of rendering engines.

If you're used to using an exhaustive, precise set of CSS resets for cross-browser consistency, you probably expect to use something similar for e-readers. Put that thought out of your head; you're not going to find them. The best you're going to get are a few loose guidelines.

Consistency across different e-readers just isn't attainable in the way that it is across different web browsers. Don't make that a goal, and don't expect it to happen. You're not looking for your eBook to display perfectly in every reader; you're just looking for it to be good enough in a few of the most-used readers.

For example, I found that the margins the Nook reader put around my story were fine on a tablet, but I thought they were too much on a phone. If I'd wanted, I could have futzed around with media queries and seen if that was possible to fix -- but I decided no, it was Good Enough; it wasn't worth the effort of trying to fix it just for that one use-case.

Smashwords

Smashwords has a useful FAQ on self-publishing, and also provides a free EPUB download called the Smashwords Style Guide.

If you already know HTML, here's what I can tell you about the Smashwords Style Guide: read the FAQ at the beginning, then skip to Step 21: Front Matter. Because it turns out that Steps 1-20 are about how to try and make Microsoft Word output clean HTML and CSS. If you already know how to write HTML and CSS yourself, there is of course absolutely no fucking reason why you would ever want to use Word to write your HTML and CSS for you.

It's probably a good idea to read the rest of the guide from Step 21 through the end, but most of it's pretty simple stuff. To tell the truth, there are exactly two modifications I made to the EPUB for the Smashwords edition: I added the phrase "Smashwords edition" to the copyright page, and I put ### at the end of the story (before the back matter). That's it.

For all the time the guide spends telling you how easy it is to fuck up and submit a file that will fail validation, I experienced none of that. My EPUB validated immediately, and it was approved for Smashwords Premium the next day (though Smashwords says it usually takes 1-2 weeks; the quick turnaround may have been a function of how short my short story is).

Description

Most of the forms you fill out on the Smashwords Publish page are well-documented and/or self-explanatory. The Long Description and Short Description fields are exceptions; it's probably not entirely clear, at a glance, where your listing will show the short description and where it will show the short one. So here's how they work:

On Smashwords, your book's listing shows the short description, followed by a link that says "More". When you click "More", the long description appears underneath the short description.

  • Smashwords default
  • Smashwords expanded
Smashwords

Kobo and iBooks don't appear to use the short description at all. Your book's listing will show the first few lines of your long description, followed by an arrow (on Kobo) or a "More..." link (on iBooks), which you can click to expand to show the entire description.

  • Kobo default
  • Kobo expanded
Kobo
  • iBooks default
  • iBooks expanded
iBooks
Aside: Why the fuck does it do this?
Look at all that whitespace. What's the point of hiding the text?

Inktera shows the long description, followed by an HR, followed by the short description.

Inktera
Inktera

And Scribd just shows the long description.

Scribd
Scribd

Lastly, Blio doesn't show either description of my book. Clearly this is a problem and I should probably talk to tech support about it.

As you might expect, the various different ways the different sites use the two descriptions create a bit of a conundrum: how can you write a short description that is the primary description on one site and a long description that is the primary description on four other sites, and write the two descriptions so that they don't look pointless and redundant when you put them side-by-side?

I haven't come up with a good solution for this in the case of Old Tom yet.

Amazon

It turns out the Amazon conversion is really easy. I just set up an account at kdp.amazon.com, filled out the forms, uploaded the cover and the EPUB file, and Amazon's automatic conversion software switched it over to Kindle format with no trouble at all. Amazon's even got a really nice online reader that lets you check how your file will look in the Kindle Reader on various devices (Kindle Fire HD, iPhone, iPad, Android phone, Android tablet, etc.).

I only hit one speed bump when I submitted to Amazon: after a few hours, I got an E-Mail back saying that the book was freely available online (because of course it is; I've posted it in multiple places, including this site). Amazon required me to go back through and reaffirm that I am the copyright holder of the book -- which meant just going through the exact same forms I'd already filled out and clicking the Submit button again. It was a little bit annoying, but not time-consuming and mostly painless, and the book appeared for download on Amazon shortly after.

And that's it.

The hardest part of self-publishing an eBook was finding the time, figuring out what resources to use, and learning the EPUB format. And now that I know what resources to use and understand the EPUB format, it doesn't take nearly as much time. For my next book, I'll be able to spend a lot more time writing and a lot less time formatting. Hopefully this blog post has helped you so that you can do the same.

Ubuntu on an Old Mac Pro

So I spent the past few days trying to get Ubuntu Studio installed on my 2006-era Mac Pro 1,1. I can't speak for other Macs specifically, but here are some details you're going to want to know if you engage in that undertaking:

  • The Mac Pro 1,1 won't boot Linux from a USB stick.
  • It also won't boot it from a dual-layer DVD. Double-check and make sure you're not using dual-layer.
  • The LTS releases of Ubuntu (such as 14.04) have images that are specifically labeled "amd64+mac". Use those. Otherwise you might wind up stuck on an unresponsive "Select CD-ROM Boot Type" prompt.
  • You may or may not need to install rEFInd to help you boot from a Linux disc. If your disc isn't showing up when you hold the Option key at boot, give rEFInd a shot.
  • There's a useful guide at Ubuntu Community Help called Installing on a Mac Pro - Cylinder (Late 2013). As the title implies, it's not written for the older-model Mac Pros, but most of what it says is still applicable. (But it tells you not to use the Mac-specific ISO files. Don't listen to that part; you should use those on the 1,1 model.)