Imagine you run a non-profit organization that does a lot of good, but you’re not allowed to tell anyone about much of it.

That’s the bind the Software Freedom Law Center finds itself in all the time. They do a lot of their work behind the scenes, heading off Bad Things before the programming public ever finds out just how Bad those Things are. Unfortunately, many of these settlements have to be done under non-disclosure agreements that don’t allow the SFLC bragging rights on their (still impressively copious nonetheless) news page.

If you’re an open source software programmer, you may well be the beneficiary of their work without knowing it. The fact that your project or its users haven’t been sued by some patent troll may be happy coincidence, or it may be that various backroom negotiations, threats of legal challenges, re-examination requests, et cetera by the SFLC and its allies have kept you safe.

The SFLC is doing the things the rest of us don’t have the time or expertise to do. They’re not doing it to get rich (and just in case it wasn’t clear, they’re not getting rich). They’re doing it because they care about freedom.

They just can’t always talk about it.

So, please: donate. I just did.

[frdm] Support SFLC

Now this is a post I’ve been wanting to write for a while…

Conversational threads on the Internet should be independent of the medium they’re displayed in. That is, mailing lists, newsgroups, and web forums are all the same thing. They’re just different interfaces to the same data structure, and that data structure is the thread: a series of messages with directional reply relationships to one another.

The thread is the fundamental unit of conversation on the Internet, and the message relationships in a thread are independent of the interface used to access it.

One reason I’m ranting about this is that people sometimes set up “web forums” that behave like mailing lists except that you can’t read them with your regular email client. This is a tragedy, because for some of us our relationship with our email client is like that of a chef with his knives. You know how chefs usually travel with their own knives, rather than use someone else’s? I like to travel the Internet with my own knives: when I’m reading threaded information, I want to do it with my threadreader, that is to say, my mailreader. I’ve spent a lot of effort making it behave in precisely the way that works best for me, and there’s no reason those behaviors shouldn’t apply to all the threaded information I encounter on the Internet. I think I’m not alone in this.

Some might object that it’s equally tragic that people set up mailing lists instead of web forums. But it’s not, really. Mailing lists at least have a mature and well-understood programmatic interface — email — that allows sites like Gmane to provide the data via different interfaces. Gmane, by the way, seems to have independently arrived at the same conclusion about threads being independent from the interfaces used to access them.

The web forums example is just the tip of the iceberg. If the lesson that threads are the fundamental units had really embedded itself deeply into the programming world, we’d have mailing list software that would allow you to subscribe to just one thread at a time (or, if the list server software wouldn’t do it, most client software would do it by filtering). Blog comment threads would be accessible via a standard thread interface that would allow them to be presented as mail, news, web forums, blog comments, or chopped lettuce. It’s all the same thing: a message and a bunch of followups, some of which have sub-followups, and so on (see Directed Acyclic Graph).

I’m not asking everyone to use my mailreader, by the way. Indeed, I think it would probably drive most people insane. I’m merely saying that it would be good for us to have an explicit understanding of threads as the unit to focus on. What is a mailing list? It’s a big thread with a lot of subthreads. The charter (the declared purpose or topic) of the mailing list is an implicit initial message, and every message posted to the list is a “reply” to it; many of those messages are also replies to each other, of course.

What’s a blog post? It’s an initial message, and the comments are replies (and some comments are replies to replies, etc).

What’s a web forum post? It’s… Well, by now you can tell where this is going. I’ll stop here.

The world needs a unified conception of The Thread, something we can write programming interfaces for that then any client software can implement. This is not completely trivial, because in most messaging systems, the threads are not explicitly recorded. Instead, metadata attached to each message just says what earlier messages it is a followup to, and the threads are reconstructed from this. There is a certain richness, a possibility of variety, inherent in doing things that way, and we wouldn’t want to clobber that by making too naive a threading standard.

I wish I had time to work on it, but I don’t. I only have time to rant. So I’m ranting, in the hope that other programmers will agree that viewing all messaging systems as manifestations of The Mighty Thread is good way to look at things. Maybe someone can turn this idea into something useful.

Obamanation! Obamanable! Obamarated! Obamatastic!
Obamanothermiddleeasterncountryfornogoodreasonidontthinkso!

Barack Obama

I’ve been an Obama supporter for a long time. There’s no correlation between experience and success when it comes to the Presidency. Our previous least-experienced President was probably Abraham Lincoln. Most experienced? Well, Herbert Hoover ought to be in the running for that; George Bush Sr. as well. Kinda makes you think, doesn’t it?

Barack Obama is exactly what he seems: terrifically smart, well-intentioned, utterly free of the personal insecurities that drive far too much of the decision-making in the current administration, and eminently electable. He stands a much better chance of winning against McCain than any other Democratic candidate would have. The canard that he’s light on policy simply confuses a primary-season tactic for a general electoral strategy. There’s no point trying to out-wonk Hillary Clinton, but that doesn’t mean he hasn’t done his homework: when the time comes, it’s there in reserve.

I’m not unquestioningly for the Democrat in every election, by the way. It’s just that the Republican Party has abandoned all the principles that ever would have made it attractive to me or to any other conservative leftist.

“Conservative leftist” is not a contradiction, it’s just a description: someone who believes that progressive taxation has proven itself over the decades, and that the major role of government is to step in and regulate situations where individual actors trying to maximize their own benefit would harm everyone’s interests (including, in the long run, their own). In other words, the government’s main job is to prevent game-theoretical dilemmas in which we all lose because there was no one to say “These are the rules, and for society to work, the rules must be honored.”

Some of these rules are easy: don’t steal things, for example. We all understand that even though it would be to any given individual’s benefit to break into houses and steal consumer electronics, it’s better for all of us if nobody does that, because then we don’t have a situation where every homeowner has to pay the individual rate for constant surveillance over their property.

There are lots of rules like that, or should be: don’t poison the environment, even though you can manufacture something more cheaply if you pollute. Don’t put your workers in danger, even though safety measures will cost money. Don’t lie in your SEC prospectus, because even though you might make out like a bandit at the public offering, we’ll all suffer if everyone’s lying about their company’s worth all the time. Don’t chop down those trees, even though you can sell a lot of paper and construction lumber if you do, because it’s the last forest standing in this area of the state. And so on…

The Republican party somehow decided that deregulation and pushing the envelope were inherently good things, and failed to realize that we’d established the envelope for a reason. That’s the “conservative” part of “conservative leftist”: what’s worked in the past should probably be kept. Unregulated industries cost us dearly: the savings and loan scandal (remember that?) was a result of deregulation; the subprime mortgage crisis was probably a failure to regulate in time.

The conservative in me says “Why don’t these so-called ‘conservatives’ get it? Don’t they see that the idea of government regulation should be, well, conserved? That it has worked? That it has a record of successfully preventing fairly obvious problems? That collective action is cheaper than individual action, because of economies of scale?”

Barack Obama gets this. Hillary Clinton does in part, but not in her bones, and she doesn’t understand how to communicate it, how to convince people of it. She’s not going to make this particular kind of change happen, except at a small scale, in areas that she was already paying attention to and where the damage is most obvious. Obama might not succeed either, but at least he understands the task. Yes, Hillary Clinton adopted “change” as a rhetorical strategy when she saw how Obama was using it… but while she has the words, she’ll never have the tune.

Obamalicious.

Also, he was firmly and publicly against the Iraq War from the beginning, and Hillary… Well, sorry, that’s one vote I just can’t forgive. Judgment when it counts means a lot more than experience.

A lot of us in the programming community have been looking forward to the first release of Paul Graham and Robert Morris’s “Arc” language, which Graham has been talking about for a long time on his widely-read site, paulgraham.com.

On January 29th, they finally released a first-draft implemention. Although billed as experimental and subject to change, it’s still something a lot of people will want to play with. Those of us who for whom programming in Lisp is a cherished memory, a kind of long-lost Eden to which we hope one day to return, are interested to see if Arc can become what we’ve been hoping for: a Lisp-like language that’s caught up to the modern world and that gathers enough developer momentum to flourish.

Unfortunately, the Arc web site, arclanguage.org, doesn’t answer the very first question most potential downloaders would ask: is it open source?, or as we used to say, is it free software? The site not only doesn’t say what license the software is released under, it doesn’t even state clearly that the software is open source! I finally downloaded the package itself and poke around inside to find out:

This software is copyright (c) Paul Graham and Robert Morris. Permission to use it is granted under the Perl Foundations's Artistic License 2.0.

Okay. So it’s open source, albeit under the least open-source of all the open source licenses. Sigh. I normally wouldn’t even go to the trouble of downloading the software to find that out, I only bothered because I was already quite interested in Arc.

I’d post on their mailing list a comment about the hidden license problem, but they apparently don’t have a mailing list. Instead, they have low-functionality web forums, and it looks like the only way you can interact with the community is through that forum interface. This is a pity: the thread is the fundamental unit of information on the Internet, and there’s no reason to force people to use one particular interface to access a set of threads. Perhaps some people like web forums, but others would prefer to access the threads via their mailreaders. If I have to use a web interface just to talk to a community, it makes me less likely to join that community, because I’ll start to associate participation with wrist pain. Let me choose my own interface, please.

Speaking of which, how about a bug tracker? Or any of the other tools that are now standard for open source projects? Some of the forum posts indicate that there’s a version control repository somewhere (using git), but the web pages don’t point to it, at least not as far as I could see. So those looking to follow development in real time will have to hunt around.

Given that the web site says “we’d like to encourage a sense of community among Arc users”, this is all a bit disappointing, and puzzling. It’s like they don’t actually want to build a community, which would be fine (it’s their project), but then why declare otherwise?

Mitt Romney dropped out of the race for the Republican presidential nomination today, with one of the most disgusting quotes I’ve ever heard (if Talking Points Memo, my favorite political blog, is reporting accurately, and they usually do):

“If I fight on in my campaign, all the way to the convention, I would forestall the launch of a national campaign and make it more likely that Senator Clinton or Obama would win. And in this time of war, I simply cannot let my campaign, be a part of aiding a surrender to terror.”

I wasn’t ever going to vote for Romney, but I have to admit, I never expected him to sink that low. It’s so brazen, it just might backfire; one can hope, anyway.

Over and over, we hear the anti-war Democrats get accused of damaging national unity in wartime, of surrendering to terror, etc. (The “surrendering to terror” accusation is particularly insidious, because it implicitly strengthens the bogus 9/11<–>Saddam link, yet the accuser can always get out by saying “Oh, I was just referring to the terrorists in Iraq who are killing our troops!”)

What sticks in the craw is how Romney never tries to see if the blame jacket will fit any other shoulders. Leading the country into a war without a popular mandate, against a country that did not attack us, with no backup plan should the original (unrealistic) goal should turn out to be unattainable… Now that’s irresponsible, that’s damaging to national unity, isn’t it? Sorry, but you don’t get a united front for free, just by declaring war. You have to consider how popular support for the war will be sustained over the long term, even beyond your Presidency, or else don’t get into that war. Don’t blame your opponents later because you didn’t do your homework. Roosevelt made it clear for a long time that he thought the United States’ entry into World War II was inevitable, but he didn’t actually seek a declaration of war until Pearl Harbor was attacked; he knew that the popular support wasn’t there and couldn’t be manufactured.

Now that the Democrats are increasingly turning against the war in Iraq, Romney all but calls them traitors. But he never seems to think that George W. Bush might have done something irresponsible by starting a war without the full backing of the nation.

Bobby Fischer has died at the age of 64. One year lived for each square on a chessboard. (Was he thinking about that?)

I wonder how he felt about machines taking over the game. Chess is now a “solved” problem in the sense that no human can win reliably against the machines anymore. Of course, it’s not “solved” in the sense of there being a machine that can always at least draw given the advantageous color (assumed to be white, but that doesn’t matter for these purposes). Probably Go will become machine-dominated within a few decades too, though so far it’s proven a tough nut to crack, which is somehow pleasing.

RIP, Bobby Fischer.

New Jersey has become the second state to pass the National Popular Vote Interstate Compact, following Maryland. (Yay, New Jersey! In an odd coincidence, I heard this news while in a hotel room in New Jersey. I will give the state a big kiss when I head out tomorrow.)

The National Popular Vote Interstate Compact is not a highway maintenance agreement. It’s a plan —  a workable, entirely constitutional plan — to replace the electoral college system with a true popular vote. In a nutshell: each state in the compact agrees to give all of its electoral votes to the national popular vote winner (regardless of the winner in that state), and the compact only goes into effect after enough states have signed it to decide elections (that is, the members must control at least 270 votes in the electoral college).

Now we’re one state (more importantly, 15 electoral votes) closer to real democracy in the US. Thank you, Governor Corzine. In California, the state legislature passed the compact only to have it vetoed by the incomprehensible Governor Schwarzenegger, who said “I cannot support … giving all our electoral votes to the candidate that a majority of Californians did not support.” Okay, so you’d prefer to give the presidency to a candidate that a plurality of the country did not support, Arnold? (I think he meant “plurality” not “majority”, but English is not his native language so we’ll give him a break on that one.)

I’ll balance this out with a complaint about New Jersey: they have the funny you-can’t-pump-your-own-gas law (seen that in Oregon too, but nowhere else). All gas stations here in NJ are “full service”, meaning that an attendant has to come pump for you. But, just like pumps everywhere in the United States, the gas pumps in New Jersey have stickers saying “Do Not Leave Pump Unattended While Pumping Gas”. In practice, though, that’s exactly what happens: the lone attendant dashes around from pump to pump, running credit cards, making change for customers, asking people what kind of gas they want, all while leaving unattended the pumps he’s already started. So as far as I can tell, the full-service-only law actually results in reduced safety at gas stations, or else those stickers are pointless.

But the gas thing is a minor quibble compared with passing the NPV Interstate Compact. Who’s next? It’s pending the governor’s signature in Illinois…

Is it just me, or does Barack Obama consistently do much better than polls project? I seem to recall this happening in Illinois, too, both in the Democratic Senate primary contest, and then again in the general election (yes, he was expected to win the general election by a lot, but he did even better than that). Now he’s done it again in Iowa, and I’ll bet a nickel that he does better than projected in New Hampshire as well.

What could it be? Could people be telling pollsters one thing and then voting another? Or was this time just an artifact of the Iowa caucus system (but… I thought the effects of the caucus system would have been taken into account by pollsters, since they do ask about peoples’ second choices as well).

I just sent this letter to New Scientist magazine; no idea if they’ll print it or not, so I’m posting it here too, as several people have recently expressed interest in this idea:

James Love’s proposal for cash prizes to replace today’s patent monopolies (“Fair prices, fair profit”, page 24, Nov. 10-16 New Scientist Special Issue) would be a welcome improvement on the current patent system. But there may be an even better solution: sliding registration fees with a public buyout option.

Under this system, the patent applicant names a monetary value for the patent at the time of registration. They may pick any value at all — ten dollars or ten billion — but the registration fee will be a percentage of that value, so there is an incentive not to declare too high. Each year upon renewing the registration, the patent owner has a chance to adjust the declared value up or down, and the renewal fee adjusts accordingly.

Now comes the key: since the declared value of the patent is a matter of public record, any party can liberate the patent into the “public domain” (to use the language of copyright law, whence this proposal originally came) by paying the patent holder that amount, in a mandatory transaction. The registered owner must accept, and, having chosen the value in the first place, cannot claim to have received less than the patent’s worth.

This system preserves all the market dynamics that defenders of the current patent system rhapsodize about: there is still an open market in patents, and a patent can sell for more or less than its registered value (since a purchaser may be interested in retaining the monopoly, rather than in liberating). At the same time, the public always has a clear path by which to liberate a given patent, and at a speed that matches the urgency of the public’s need.

By doing away with the need for a national board to decide who gets cash reimbursements, and depending instead on free market dynamics, the proportional registration system may be more acceptable to those who worry about the political implications of having governments decide what rewards to give to what drug companies.

-Karl Fogel

I’m not convinced that any patent system at all is necessary, by the way, but the issues with patents are a bit trickier than with copyrights.

Patents are partly a means of preventing people from keeping secrets: if someone invents a new artificial heart valve, we want them to publish about it in great detail, and granting them a temporary monopoly as a reward for doing so is one way to ensure this happens. On the other hand, medicine and medical devices are almost always the example the patent industry uses when it wants to scare us into imagining a world devoid of innovation, so it’s appropriate to note that there’s a whole separate secrecy-prevention mechanism in place for that category of inventions: the medical approval process (in the U.S. this is run by the FDA, for example). You can’t get your drug or heart valve approved anyway without revealing the technical specs, so the anti-secrecy argument is rather weak in the very case of the poster-child industry for the pro-patent lobby, as it happens.

While I’d be very happy to see the proportional registration system adopted for either patents or copyrights, the real purpose of the proposal is to show that even if you accept the argument that monopoly-based market dynamics are necessary, there’s still a better way to do it than the way we do it now. I’d really like to see on what grounds the pro-monopoly lobby would argue against the proposal… They often talk about how we must “balance” the needs of the creators against the needs of the public (a false choice if ever there were one), but if balance is the desired goal, what could be more balanced than a system where the public gets a buyout option based on the owner-determined market value?