Tag: GPL

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.

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...

PC Gamer's Dilemma

Well, I finally got me an Xbox 360.

It was free. My fiancée got a new computer with one of those student "comes with a free Xbox" deals.

Here's the thing: I've got a pretty solid gaming rig. And another pretty solid media rig. So I haven't felt much need for Xboxin' up to this point.

The advantages and drawbacks of PC gaming are pretty well-documented. A PC can support crazy high-end hardware, but while the games are cheaper the gear is more expensive and fiddly and there's a whole lot that can go wrong.

Me, I'm something like a niche of a niche of a niche of a niche -- I run Linux on a Mac Pro as my primary OS and keep Windows around for gaming.

This is pretty cool when it works. But here's the thing: even a good Apple makes for a pretty crummy gaming system.

Last year I bought a pretty high-end Nvidia card. ATI has better Mac support, but I've had nothing but headaches trying to get ATI cards working with Linux. Nvidia's always run smoother for me -- galling considering their total lack of cooperation with Linux and the open-source community, but true.

But it's not an officially-supported card. It works under OSX (as of 10.7.3) but it's not entirely reliable under Windows -- when it gets taxed too heavily, I get a bluescreen.

It happened a few times when I played through Witcher 2, but, perversely, it's given me more trouble on Mass Effect 2 -- a game I had no trouble playing through with all the settings maxed out on a lower-end (but officially-Apple-supported) ATI card.

I thought it might be a heating problem but it occurs, consistently, even when I crank up all my system fans with third-party software.

The game worked fine up until Omega, and then started BSoDing randomly. I managed to recruit Garrus in-between crashes, but by the time it came around to Mordin's quest I couldn't get past loading the corridor.

I could just try some other missions, but seriously, you want me to put off getting Mordin? Hell no.

I've found, from searching, that this appears to be a fairly common problem with ME2, even among people not running eccentric hardware configurations such as mine. And I've found a few suggested fixes, but none have worked for me.

I've tried running the game under WINE on both OSX and Ubuntu. Under OSX it plods (I suspect my helper card may be to blame; maybe I'll try disabling it to make sure my higher-end card is the only one the system's putting a load on); under Ubuntu it runs fine up until the menu screen but then doesn't respond to mouse clicks or keystrokes (other than system stuff like Alt-Tab or Alt-F4). I haven't turned up any other reports of this same problem, so I can't find a fix -- maybe one of these days I'll try a full clean install and see if it still does it. Nuke my WINE settings too if I have to. (Or maybe I could set it up on my fiancée's new computer...)

Needless to say, I haven't tried Mass Effect 3 yet.

And that's before we get into all the DRM bullshit plaguing the PC platform.

Never played Batman: Arkham Asylum, largely because of the SecuROM/GFWL/Steamworks Katamari of Sucktitude. Similarly, I gave Dragon Age 2 a miss once I heard reports of people unable to authenticate their legally-purchased games because they'd been banned from BioWare's forums for saying mean things about EA. (Which obviously totally disproves that EA deserves to be called names.)

It's a great damn time to be a PC gamer for a lot of reasons -- a huge indie scene supported by the likes of Steam and the Humble Indie Bundle, with both pushing more gaming on OSX and even Linux -- but it's a lousy time for other reasons.

Anyway. Now I've got an Xbox. All else being equal, I still prefer to play games on the PC, but for cases where the Xbox has less restrictive DRM (like Arkham Asylum) or titles that aren't available on PC (like Red Dead Redemption) or just shit I can get for under five bucks (like a used copy of Gears of War I just picked up), well, it's kinda cool to have one.


Playing: Batman: Arkham Asylum.

Adventures in Home Audio

I'm not what you'd call an audiophile, but I know what I like.

I've got an HTPC I use as my primary media box. And for the past two and a half years, my surround sound speakers have been a set of Creative Inspire 5300's connected to it. They're perfectly good PC speakers (and were $80 when they were new), but as far as home theater, they're a bit lacking.

So, after months of research and scanning for deals, I got me a receiver and a new set of 5.1 speakers.

The receiver is the Onkyo HT-RC360, which Fry's had marked down from $550 to $300 for Presidents' Day. Now, three things:

  1. I have been keeping an eye on Dealzmodo, TechDealDigger, and TechBargains for months looking for a deal like this -- and none of them had this deal listed. This discovery was entirely the result of my deciding, on a whim, to check the Fry's site. Which is even more notable because
  2. I had been at Fry's, looking for a good deal on a receiver, the previous day, and not seen this. I know they had it in stock, because I picked it up in-store, but it hadn't been on display, nor had I seen it listed in the newspaper clippings upfront listing their weekend deals.
  3. Oh, and of course three days later the Sony equivalent got marked down to $215 on Amazon. But that's okay; this is the sort of thing you come to accept as inevitable in any kind of major hardware purchase, and anyway from the reviews the Onkyo sounds like the better device.

Talking of reviews, I couldn't find any professional ones of the RC360, which made me nervous. But I gathered from Cnet that it's roughly equivalent to the TX-NR609. I'd been looking at the 509, but its lack of OSD and HDMI upscaling gave me pause. Those features aren't make-or-break, but with the RC360 marked down to $300, it was only $75 more than the 509 -- plus it's got 7.1 support. For that price, I may as well buy something a little better and more future-proof.

I had also noted that most of the demo rooms at Fry's used NR509 mixers. While I don't always credit Fry's employees as the best judges of what makes a good product demo (the first thing you see when you walk in the front door is an expensive bigscreen plasma TV inexplicably playing a movie at an eye-searing 240Hz), I thought this was probably significant.

And while I was nervous about buying a speaker set I hadn't actually tested in the store, ultimately Cnet's review of the Monoprice 8247 won me over. The short version: you can get better speakers, but only if you pay four times as much. (An aside: I stopped reading news.com.com some time ago after their reporting became indistinguishable from the trolls in the comments section -- I was going to say "except with better spelling", but nevermind -- but their reviews section continues to be pretty great.)

Anyhow, the speakers came in and I wired them up. It's not pretty just yet -- for now the rear speakers are just sitting on end tables, with their cables blue-taped to the wall, but in the next few weeks I plan to get somebody over to run cable through the attic and mount them properly on the wall. (I'd run the cable myself, but asthma tends to limit one's desire for attic-related adventures.)

One minor gripe: the Monoprice page for the speakers recommends pin-type speaker plugs, but the wire-in-back type I ordered from them is too long; it won't fit in a speaker that's lying flat. It should work fine in one that's wall-mounted, and maybe the wire-in-side type will fit. I might try ordering a couple of those the next time I get something from them, though $2 speaker plugs aren't really worth ordering by themselves. So, bare wire for now -- not like I can hear the difference.

Once I got everything hooked up and configured, I fired up Back in the USSR to verify that the speakers were working, and then straight to the Bridge of Khazad-Dûm scene in Fellowship of the Ring. (This was the point at which my fiancée came out of the bedroom to complain that I was making the house shake. I like to think this was her way of saying "Great job on purchasing and setting up an awesome sound system, Honey!")

Image: The remote, with its many and oddly-labeled input buttons From there I hooked up the rest of my various devices. The Onkyo remote has the now-typical problem of a shitload of different inputs with sometimes arbitrary names -- "GAME" works fine for the component switch connected to my Wii and PS2 (another aside: I wish the thing had more component inputs so I wouldn't need a component switch at all -- but obviously analog is on its way out and I'm sure in a few years I'll have enough HDMI devices that I will be grateful for the emphasis on the new input over the old), but, absent anything resembling "HTPC", I have my HTPC connected under "BD/DVD". My seldom-used DVD/VCR combo is under "VCR/DVR", and my TV audio is connected to "TV/CD", which inexplicably is not the same button as "TV"; the "TV" button can't actually be assigned to any audio input. (I guess people connecting the audio output of their TV into an input on the receiver are probably a rarity; most people have cable boxes which they can connect to the receiver and then output to the TV. But I don't have cable TV, and we sometimes watch broadcast TV. Such people do exist!)

Also: this receiver is the only appliance I have ever bought that came with a GPL compliance notice in the box. This is one more piece of good news on future-proofing: my old TV is no longer supported, its firmware is no longer updated, and it has some annoying bugs (namely, every time it can't tune a channel in it drops it, meaning you effectively have to rerun the channel search every time you move the damn antenna -- again, developers just do not even consider people who watch over-the-air TV at this point). The Onkyo receiver not only supports more features and inputs than I need, its use of open-source software means it can continue to be updated even after its official end-of-life (unless, of course, there are some kind of TiVoization shenanigans at work).

Speaking of my 2005-vintage TV, it's probably the next major piece of equipment I'd like to replace, but it does have one feature I like: an "Automatic" zoom that will upsize the picture beyond the standard 4:3/16:9/"super zoom" presets and zoom the picture until there is no black border anywhere. This is especially useful for the PSP, which outputs games at a weird little 480x272 format that appears as a tiny little windowboxed picture even under most zoom presets. Unfortunately, the receiver's upscaling messes with the TV's "Automatic" zoom; it'll resize the PSP picture vertically, but that still leaves it pillarboxed and vertically stretched. That left me back at wiring the component output of the PSP directly to the TV and leaving the audio hooked into the receiver -- this largely defeats the purpose of upscaling since I'm back to switching TV inputs for different devices, but that is, of course, a minor inconvenience.

And that, incidentally, is the draw of upscaling for me -- I don't really expect the filters to increase my picture quality, but it does mean I don't have to switch from HDMI to Component 1 to Component 2 to whatever on my TV. (Actually, talking of quality, there were visible vertical lines on the PS2 picture -- but I couldn't see them from the couch, and I'm not sure if that's the fault of the receiver or the connection. I've had the PS2 and the cable for some time and I think the connection must be worn, as when I first turned the PS2 on I got audio but no picture; I wiggled the connector in the back and that's when I got a picture with faint lines on it.)

Now I've gotta figure out what to do with those Creative speakers. I'd like to hook them up to my desktop, but Apple is allergic to standards, and you can't actually get analog surround to work on a Mac without some kind of adapter.


Playing: Tactics Ogre: Let Us Cling Together. You know what else the receiver has? A shitload of presets for audio levels. It doesn't just have a preset for games, it has different presets for different genres -- RPG, Action, etc.

Reading: The Light Fantastic

Unison: File sync from Ubuntu to Windows 7

Hey, been awhile. Have been ignoring the blog (even my traditional New Year's Eve Post) and many of my other Internet habits in favor of various projects I've been hard at work on. I just pulled off a WordPress update; you're reading this so it looks like it went smoothly.

Anyhow. One of the aforementioned projects (and the thing you came here to read, if you found this page by Googling an error message -- and if you did, you may want to skip my meandering explanation and go straight for the numbered steps at the bottom of this post): I recently decided to set up a file sync system across the computers in my house. It's useful for syncing things like savegames, RSS feeds, and the public-domain ebooks I've been grabbing from Project Gutenberg and MobileRead and comics from Digital Comic Museum across multiple devices.

I'd done some command-line RSS before, and also set up backup systems with Toucan, but figured I'd try something different on this one. I gave Ubuntu One a shot and it seemed promising until I realized it isn't open-source and I can't set up my own server. Canonical is swiftly becoming the Apple of the Linux world -- good at taking open-source software and making it pretty and usable, but not so great at giving back to the open-source community.

Ultimately I settled on Unison, which proved to be a bit of a headache -- frankly if anybody has a better solution I'd be happy to hear it, but here's how I got it to work.

First of all, the Unison GUI requires GTK. Hardly a problem on the Linux side, but under Windows, extracting the binaries from gtk.org and setting the PATH variable didn't work, no matter what I did. Maybe it's a Windows 7 thing, or maybe it's a Unison thing, but either way, Unison threw up "This application has failed to start because libgtk-win32-2.0-0.dll was not found. Re-installing the application may fix this problem." every time I ran it. Sticking it directly in the GTK\bin directory worked but is an ugly solution; multiple sites suggested installing Pidgin, which comes with GTK, but produces the same problem as Unison doesn't find it in the path.

(Actually, let me back up a bit: I couldn't get Unison to work with 64-bit GTK at all. The only Unison binaries I could find were 32-bit; I opted to install a 32-bit version of GTK rather than stick Cygwin on my HTPC and compile Unison from source.)

Ultimately, I found a binary Windows installer for GTK (conveniently the first Google match for gtk windows binary installer); whatever my PATH problem was, this installer fixed it. The Unison GUI was up and running, from its own folder.

Next problem, though: SSH. Unison did not play nice with PuTTy.

Googling the problem, I found a page called Unison-ssh, which includes a wrapper named ssh.exe for download. If you've read this far you've probably already installed PuTTy, but in case you haven't, you'll only need it if you want to use public key authentication -- this ssh.exe will automatically install a copy of PuTTy's command-line SSH utility, plink.exe, if it can't find it. (Well, hypothetically. It tries to stick it in WINDIR and if you're not running it with admin privileges it'll fail.)

Now, I should add that this ssh.exe doesn't work properly under Windows 7; it'll prompt you for a username but only let you type one character and then automatically Enter it. Same problem with the password prompt. The comments thread in the page is filled with people who have the same problem. Maybe a clean compile would fix it, I don't know; again, I didn't want to go to the trouble of setting up compilers on my HTPC.

There's a solution a ways down the comments thread. Unison stores its data in the .unison directory, even under Windows. (That'd be \Users\name\.unison under Win7.) They're simple text files with the .prf extension. And you can add an "sshargs" line to give command-line arguments. If you're comfortable sticking your password in plain text, you can add the line "sshargs = -pw [pass]" and you're done. But if you're not, you can set it up with RSA keys. A later comment links a post on Palin's Technical Blog that runs down how to generate a keypair with puttygen -- the problem is, I couldn't get my Linux server to accept it; I kept getting a "Server refused our key" error.

I found the solution on Andre Molnar's blog: you need to generate the keypair on the Linux server, using ssh-keygen, add the public key to your authorized_keys file, then move the private key over to the Windows machine and use puttygen to import it and then save as a PuTTy .ppk file. From there, add "sshargs = -i [path to private key]" to the appropriate .prf file.

Almost done, but the Unison GUI still has path issues, even if you stick ssh.exe in the same directory as PuTTy and add that to your PATH. I got around it by sticking a shortcut on the desktop with the PuTTy directory as the working directory.

In summary:

  1. Install openssh-server on your Linux server and PuTTy on your Windows client.
  2. Install Unison and its dependencies on your Linux server. (It's offered in the Ubuntu repos; command-line is unison, GUI is unison-gtk.)
  3. Install Unison on the Windows client.
  4. If you want to use Unison's GUI, install GTK on Windows.
  5. Download the ssh.exe wrapper for PuTTy. Stick ssh.exe in the same directory as PuTTy and put that directory in your PATH.
  6. Generate an RSA keypair on your Linux server using ssh-keygen. By default it will put the keys in ~/.ssh/id_rsa and id_rsa.pub.
  7. Copy the contents of the public key (id_rsa.pub) to ~/.ssh/authorized_keys. Remember to set perms on ~/.ssh to 700 and authorized_keys to 600.
  8. Move the private key (id_rsa) to the Windows machine. That's move, not copy; delete it from the Linux side as you don't want to store the same private key in more than one place.
  9. Run puttygen.exe. Import your existing private key, then save the result as a new .ppk file. Delete the original key file. Again, only the owner should have read perms on this file.
  10. At a minimum, your \Users\name\.unison\foo.prf file should contain the following:

    root = [Windows path]
    root = ssh://[user]@[host]//[Linux path]
    sshargs = -i [path to private key]

  11. To get the Unison GUI to run ssh.exe properly, create a shortcut and set its working directory to the PuTTy directory.
  12. You can schedule regular syncs using Windows Task Scheduler; run the command-line Unison executable, with args "-batch [name of pref file]". Don't include path or extension, just the filename ("foo" in my example above).

So there you go: a cross-platform syncing solution. Good for backups, for keeping files consistent between your desktop and your laptop, or for anything else that requires keeping the same files on multiple machines.


Playing: Just finished playing a fan translation of Act Raiser. Maybe a bit more on that soon.

Reading: Blood of the Elves. As I await The Witcher 2.

WordPress

You've probably noticed the site looks different.

Or, if you haven't because you're reading this via RSS, you've probably noticed you just got ten duplicate entries in your reader.

That's because I just migrated my backend over to WordPress.

As I alluded in a recent post (and yes, I update so seldom that three months ago qualifies as "recent"), b2evolution reached a point where it made even the simplest tasks a chore. A quick rundown:

  • As noted before, it refused "id" and "name" attributes in <a> tags. In other words, it would not allow me to use anchor tags as anchors.
  • Its error messages were hideous. "Invalid URL" may be useful information in a post that has as many as three links in it, but when you have fifty, it's the coding equivalent of punching me in the gut and then pointing and laughing. And for those of you who have not yet taken a 100-level programming course, it bears noting here that telling me which URL was causing a problem would take maybe twenty characters of additional code.
  • Not only wouldn't it tell me which URL was a problem, it wouldn't tell me why. I had to poke through a gigantic list of blocked URLs before I discovered that b2evolution had for some reason automatically blacklisted all mac.com sites.
  • Okay, this is the best one. You think blocking mac.com is bad? Check this out. In the same post, I linked to a rather lengthy driver URL -- go ahead and mouse over that link and see what I mean -- and b2evolution rejected it.
    See anything wrong with it? No? Neither did I. It took me about an hour to figure out what was happening. Here's the problem:
    The link contains the string "&ProductID". See where I'm going yet? No, you probably don't; even if you know that the HTML code for an ampersand is "&amp;" it probably hasn't hit you what happened there.
    So okay, here's what happened: b2evolution saw the "&Product" in that link, expanded it to "&amp;Product", and then, on a second pass, turned the ;P into a smiley.
    Hang on, it gets better: there is no way to disable smileys in the b2evolution admin control panel; you have to hack the PHP manually.
    Hang on, it gets even better: there actually is a checkbox in the control panel to allow you to disable smileys...and it is grayed out by default. Someone went to the trouble of actually coding up an easy fix...just to make it impossible to use.

In short, b2evolution was like everything my old web host ever gave me: at first, it was a generous gift and gave me an outlet to share my thoughts with the world, but over a period of years it became less and less bearable up until it reached a point where I simply couldn't go about my daily business anymore without it making my life unpleasant.

Actually, catty remarks about Internet drama aside, this is a coincidence -- I started this overhaul several days before Sharkey decided to pull up stakes. However, it's a happy coincidence, and it's nice to see him carve us out an alternative to Crazytown.

Anyway, on to the technical side, for anyone else who has WordPress questions. On the whole, I think WP is better so far. I absolutely despise "smart" quotes, and it parses text inside <code> tags just as poorly as b2evolution, if not even worse, but fortunately I found two plugins called Unfancy Quote and Preserve Code Formatting which take care of those two problems right out the gate.

I think I've done a pretty good job with the new theme, taking the old look and making a few modest changes to it. (I've finally retired that silly-ass old digits.com counter. It is the end of an era.) The CSS is my own, but the PHP code is largely adapted from Sandbox. As such, it's GPL'ed code, so once I'm finished tweaking it I'll put a zip file up just in case anyone wants to eyeball my source.

If there's anyone else trying to migrate old-ass b2evolution (0.9 series) to WordPress, there are a couple different ways to do it. You can convert to Movable Type and import natively (tutorial at Insert Witty Title), which preserves categories but hoses custom slugs, or you can use a conversion PHP script (tutorial at ibrian, though there are a few different versions of the script), which preserves custom slugs but hoses categories. I opted for the latter since it's less of a pain to recreate categories than slugs, but YMMV; if you never used custom slugs and just stuck with the default post titles, I'd say try the former. (There is something in there about how b2evo replaces spaces with underscores and WP replaces them with dashes, but there should be a tool to correct that too.)

Anyway. New blog, new forum. Let me know what you think. Maybe one of these days I'll get up the courage to dust the cobwebs off my Links page.


Playing: Super Mario Galaxy.

Reading: Just finishing Dune.

Presumably Silly and Useless "Rant"

All right, you know what? I'll tone down the cursing since a lot of my referrals are still coming from my BioWare interview, but the events of the past couple days necessitate a good strong rant.

First of all, it's been the longest week at work since I started this job. Which, overall, is a good thing; I think we're going to get some good business from my efforts. But things got a bit stressful on Tuesday, repetitive yesterday, and repetitive yesterday.

And then there's coming home to find that my epic-level POS of a DVR box -- the infamous Scientific Atlanta Explorer 8000 -- was dead. I've been paying Cox entirely too much money for this joke of a system because I can't afford TiVo; hopefully when I get my 90-day raise I'll be able to make the switch. I'll have to hold my nose a bit given my intense political dislike of TiVo, but it beats the hell out of this calamity of a cable box.

So of course that leaves me waiting for the cable guy for three hours on Sunday.

And this morning, my AC was leaking. Dangerously closely, I might add, to the shelves where I keep my entire 16-bit console game collection. So I moved the shelves, put down some towels and pots, kicked the AC up to 80 degrees, headed to work, and made a maintenance request. But I think I should probably run back home at lunch to empty those pots in case maintenance hasn't shown up yet.

And there's one more thing bugging me, but it's a subject I promised myself I would never, ever complain about on my blog, so, in the interest of keeping my dignity and self-respect, I will instead complain about that godawful "I am woman, hear me roar" parody in the new Burger King commercials, which keeps getting stuck in my head. Everyone involved in any aspect of creating that commercial is in serious need of a good cock-punch. I grant that this applies to damn near everybody in the advertising industry, but this commercial deserves its own special place in Hell.

Anyway. It's been a weird damn twenty-four hours.

But on the plus side, they've announced the Han shoots first editions of Star Wars on DVD.

Why I Hate Richard Bannister

Break time at work; figure I may as well work on the ol' blog and some of the backlog of entries I've been meaning to write.

As previously chronicled, I picked up a Mac Mini for cheap at my old job and have been setting it up as an emulation box.

The first thing that struck me about Mac emulation is the prevalence of nagware and crippleware in the Mac software scene.

I mean, as a Linux boy I don't see a hell of a lot of shareware in the first place, but it seems to me that obnoxious, crippled software is much more common on Macs than even under Windows. Perhaps it's a simple Apple culture thing -- after all, the damn OS comes bundled with a nagware, crippleware version of Quicktime.

And in the Apple emulation community, one name keeps appearing, one name synonymous with obnoxious Mac emulators: Richard Bannister.

Bannister has a near-monopoly on the Mac emulation scene. Via zophar.net's Mac section, he has 2 out of the 3 Atari 800/5200 emulators, 2 of the 4 NES emulators, 1 of the 2 GBA emulators, both Genesis emulators, and the only SMS/GameGear, Game Boy (original/Color), TurboGrafx, NeoGeo Pocket, WonderSwan, Virtual Boy, Odyssey, and ColecoVision emulators listed for OSX to his name, and this isn't even a complete list of his catalog (which also includes an SNES emulator which you need a G5 to run for Christ only knows what reason).

How is he so prolific? Well, for starters, all these different emulators have a common library for support of such basic functionality as fullscreen and gamepad support, as well as video and sound filters and, if you're lucky, netplay.

The fun part is that this library is nagware and requires $25 to register.

Twenty-five dollars.

Bannister defends this price with the absurd rationalization that video games usually cost around $50. Of course, those of us whose ability to come up with analogies is not completely broken have probably noticed that if they're NES or Genesis games they goddamnwell don't. (Maybe Bubble Bobble and Dragon Warrior 4.) He also points out that "basic functionality" is a subjective term, though the mere fact that it's in his FAQ sort of indicates a significant number of people consider it to include fullscreen and gamepad support.

He also planned, at one point, to copy-protect the library using stealth spyware; the fact that he never got around to implementing this measure doesn't make up for the fact that he is totally unapologetic about it. (Well, all right, he apologizes for the confusion, and says that in the future he'll consider the possibility that maybe his users don't want to be spied on and treated like criminals. But he still stops short of a real apology.)

In the same thread, Bannister revives his "gamepads and fullscreen aren't basic functionality" argument, and when a poster suggests that a reasonable rubric for basic functionality is anything enabled in the console itself, Bannister shoots back that then his Game Boy emulators should only display in a tiny space. Which I suppose might make some sort of vague sense if not for the existence of the Game Boy Player.

Bannister's defenders deride his critics as "a few malcontents [who] demand everything for free". Now, why would people expect free emulators? Because on every single other OS, that's exactly what we get. Windows hasn't had a prominent shareware emulator since Bleem, and no prominent shareware emulator for a legacy console since iNES, which, if you'll recall, got its ass handed to it by the superior-in-every-way-and-also-free Nesticle, which many people consider the gold standard in emulation even today. And try releasing a shareware emulator for Linux or one of the non-Mac BSD's -- you'll be laughed out of town. Bannister is holding the Mac emulation scene for ransom -- something he would never get away with on any other OS.

Which brings us to the other reason he's so prolific: the vast majority of these projects aren't originally his. They're GPL'ed. For those who don't know, the GPL is a free/open-source license which requires any derivative works of code covered under it to themselves be released under it. But Bannister doesn't release his code under the GPL; instead, he gets permission from the copyright holders to release it under his own closed license. As he is quick to point out, since he's getting a specific exemption from the copyright holders and circumventing the GPL, this is not a violation of the license and is perfectly legal -- it's just unethical and generally slimy. Again, try pulling that in the Linux world and see how far it gets you. The only reason he gets away with it in the Mac community is that he's the only game in town. He's building his work on source which other people have released for free, but heaven forfend he himself do the same. I'm sorry, what was that about malcontents who demand everything for free? If Bannister's not going to pay his dues for reaping the benefits of GPL'ed code, he should quit whining about people who don't compensate him for his work.

I haven't tried to talk to Bannister. I haven't discussed any of this with him. Why bother? I've seen his forum posts. I know how he'd respond. Poor logic, absurd analogies, and a self-righteous sense of entitlement -- coincidentally all the same things he accuses his detractors of. I can't change his mind. But I can choose not to download any emulator with his name on it, let alone give him $25 for the privilege of playing Sonic and Knuckles. I already paid for that game.