Older blog entries for raph (starting at number 83)

This is going to be another long one.

Tragedy of the Commons

I really think I'm onto something here. A deeper economic understanding of how the structure of software markets affects the public good could actually be quite useful, if for no other reason than to help inform public policy. So I'm going to continue thinking and writing about this for a little while longer.

Darius Bacon pointed out a couple of interesting things I missed in my original diary entry. First, not all economists react immediately to ToC scenarios by calling for direct government intervention. In fact, some of the trendiest economic thinking in recent years has been to create artificial "markets" for externalities. Instead of merely being allowed to pollute a certain amount but no more, you buy, sell and trade the rights to pollute. The idea is that it becomes more cost effective to clean up your factory than to buy all the pollution rights. Even more interestingly, these kinds of markets (at least in theory) allocate resources much more efficiently than heavy-handed governmental regulations.

Of course, the problem with these markets is that it's so tempting to cheat. After all, it's usually going to be cheaper to buy a politician than any of the other alternatives.

Darius goes on to point out that economists have dealt with both signs of the ToC. Underpaid artists represent one of the original ToC's considered by economic theory. Copyright law creates an artificial market, this time in "intellectual property" designed to avoid this ToC, providing direct incentives to artists. Of course, Jefferson was fathering American copyright and patent law a couple of hundred years before the ToC paper.

So what you have now is two distinct ToC scenarios playing in the same space. One is the question about how to provide incentives for creating software, ie the same scenario that motivates copyright in the first place. The other, with opposite sign, is basically analogous to pollution and environmental degradation. Software which deliberately causes incompatibilites and abuses standards ends up affecting lots of innocent bystanders. Is the fact that MSIE 5.5 still doesn't support CSS properly at root much different than a paper mill putting out a noxious stench?

What unifies, I think, these to ToC scenarios is the concept of the network effect. As I wrote in my last long diary, these network effects can create an incentive to do free software without the creation of artificial markets. These network effects are inherent in the nature of software.

Further, it's network effects that drive the "pollution" process. As in my word processor example a few weeks ago, it's one thing to buy a word processor because you like its ui, its features, etc., and another to be bludgeoned into buying one because everybody else is and if you don't, your life will be hell.

So the economic policy implications are intriguing. As network effects take a larger role in the software, intellectual property protection becomes both less needed (because people have more incentive to create free software) and less desirable (because of the economic incentives for producers of proprietary software to flout standards). A more enlightened approach to intellectual property legislation might "tune" the degree of protection based on the relative importance of the network effect. It's not hard, for example, to imagine disallowing all forms of intellectual property for basic network infrastructure, but becoming more like copyright for book- and music-like software such as games.

One last note regarding public policy. The whole antitrust concept grew up about 100 years ago to counteract "trusts," or businesses that leveraged network effects to achieve monopoly status. Railroad monopolies are some of the classic examples - if you can use your ownership of one rail line to prevent a competitor from having a good business on another, you've won. The analogies to Microsoft are pretty clear. However, railway monopolies were built over real stuff, ie land, track, etc. Microsoft's monopoly exists solely in an artifically created market. I'm not saying it's politically feasible, but it may be that the public interest would be best served simply be removing the economic petri dish for antitrust mold to grow in.

The Practice Effect

Has anyone else read "The Practice Effect", a mediocre bit of science fiction by David Brin? It's striking to me how the central "idea" of the book (an alternate universe in which objects become higher quality the more they're used, or degrade if unused) models the actual economics of scarcity in free software today.

Unfortunately, degrading through unuse is also a real issue for free software. When rtmfd and I were playing with Speakfreely the other day, we were dismayed to find that the sound drivers sucked - the default config had insane latencies, while a different option brought latencies in line but introduced unacceptable skipping. And this is from an app you'd think would be a prime candidate for real maintenance. I wonder if this has anything to do with the fact that it's pd rather than released under a more restrictive free software license.

PDF 1.4

Adobe released the PDF 1.4 transparency spec some time over the weekend. So far, it looks pretty cool, although as I expected there are some areas that are underspecified, ie the doc doesn't tell you everything you need to render pixel-for-pixel matched with Adobe's implementation.

This paragraph should strike a chill into the hearts of free software developers:

The information in this document is subject to the copyright permissions stated in PDF Reference, Section 1.4 [1.7]. Additionally, developers should be aware that many of the transparency extensions to the Adobe imaging model are the subject of patents and patents pending by Adobe Systems. The permission to use the copyrighted material in the PDF specification does not include the right to use any Adobe patents, except as may be permitted by an official Adobe Patent Clarification Notice (published at Adobe's web site or elsewhere).

I'm going ahead with my work implementing the PDF 1.4 imaging model, but it may turn out to be really gargantuan mistake. Let's hope not.

Bookbinding

So when the PDF 1.4 transparency spec came to light this morning, I immediately wanted to handbind it. I had just gotten a box of archival paper from Gaylord and was eager to try it out. Well, it turns out that the grain direction was wrong, so there's a little cockling, and the pages fold and turn more stiffly than they should. I sent Gaylord a quick email note informing them of this discrepancy, and was pleasantly surprised to get a response back from them of "we're tracking down exactly why this happened, expect a response in a day or two, in the meantime please feel free to contact customer service for a full refund." They just made themselves a friend and supporter.

I've been refining my materials and practices, and feel like I'm almost there (getting precut archival paper with the right grain direction is pretty much the last piece). I'll probably put up a Webpage (or maybe even an Archival-Bookbinding-HOWTO in the LDP :) once I'm starting to feell happy with the results. I don't know if it's just me, but there's something ineffably cool about the idea of getting a digital document published over the Internet this morning, and within a day have an archival copy that can easily last 1000 years if reasonably well taken care of.

Thanks to the people who followed up privately on my last diary entry. I'll be expanding it (and taking your thoughtful comments into account!) for the next Advogato's number.

The supermarket had Godiva ice cream on sale, so I got a couple of cartons. It's good stuff - their dark chocolate is truly the best I have ever had. Recommended. Meanwhile, now that Ben and Jerry's has been bought out by Unilevel, they will be downsizing some of their flavors. New York Super Fudge Chunk will become New Jersey Super Fudge Chunk. Triple Fudge Brownie will now be simply Double Fudge Brownie. Most importantly, Cherry Garcia, the best and most popular Ben and Jerry's flavor, as well as the one that probably best defines the original corporate culture, will be phased out in favor of Milli Vanilla.

Ettore and Mathieu were moaning about the food in America the other day. Ettore asked something like, "so, how is it being in the land of bad food". I responded by saying, "California is not the land of bad food, Boston is the land of bad food." Well, that evening we ended up going out to Denny's. Uhm, Ettore, you've got a point.

Speaking of bad food, Alan really looks forward to his weekly Burger King meal. I sort-of-enjoy it too, although it's greasy. But you know what? The toys they give away with the kids meals are incredible - they've gotten at least an order of magnitude better since I've been going. Most of their toys now have some kind of clever mechanical trick that, to my jaded eyes, makes them excellent educational toys. Yesterday it was a gyroscopic top with a dynamo and an LED. I'm not sure that children of royalty had toys this good a hundred years ago, and now they're being given away free along with cheap food.

A Palm V fell out of the sky. Well, not literally (it was a present returned out of spite and then given to me by my sister in law). I seriously doubt I'll use it as a calendar or whatnot, but it promises to be a fun toy. Of course, the first thing I'll want to to is get gcc working :)

So, now the stomach pain is replaced with a cold and having been off the antidepressants for a week, the latter solely because the doctor's office can't get it together. At least I know it's not an ulcer or appendicitis, which is good news.

The XFree86 Render and Printing Summit mailing lists have both kicked into high gear. It's all I can do to read both of them and keep up with the rest of my life, and of course, I can't resist the temptation to throw in my two cents. Among other things, I updated my color management page pretty substantially.

I somehow expected more controversy from my advogato piece. In hindsight, the tone is a little whiny. Next time, I'll try to replace that with pure righteous anger :)

In any case, after writing the post I did some more thinking about theoretical economics, particularly the tragedy of the commons. I'll post my thinking here instead of in a front page article because relatively few people seem to care about this theorizing.

The ToC is an interesting parable of economics, often used to describe "externalities" such as the poisoning of the environment. Thus the first difference - free software is a benefit for all. The "tragedy" is that people (or, more poignantly, businesses) aren't motivated to contribute to it on purely economic terms, in analogy to the fact that people (or businesses) are motivated to plunder common resources. But, flip the signs around and the basic model works. The actions of one person get multiplied manyfold when you look at the total damage or benefits to everybody, but from the point of view of a selfish transaction, it doesn't count as much as the value the individual gets from plundering, or (flipping the signs) the cost of contributing.

Obviously, free software isn't a pure ToC scenario, or else nobody would be motivated to contribute, ever. This is empirically not the case. What's interesting, then, is the deviation from pure ToC and how free software thrives in spite of everything.

Classical economics deals with the ToC by adding governmental regulation, ie make it against the law to plunder the environment too much. Before you scoff, consider that leakage in government-funded academic computer science research is one of the big sources of funding for free software. But it's not the one I'm primarily interested in here.

The usual ToC model uses a scalar to model the total amount of environmental degradation. But software utility is much better modelled as a granular vector quantity. If the features match and the bugs and incompatibilities don't, it's useful software. However, the desired features, the types of bugs you're likely to run across, and (perhaps most importantly) the systems you care about the software being incompatible with vary quite a bit from person to person. So, you might find a local situation in which a relatively small expenditure leads to a significant increase in value for the person using the software, perhaps enough to make it worthwhile. The fact that the contribution causes the value to jump for lots of other people is almost irrelevant.

There are a few more important details to make this work, including differing actual costs (ie, code is much cheaper for a grad student than for a corporate IT department). But that's a detail fairly well understood by classical economics - ie, freshwater is much cheaper in Canada than Saudi Arabia, and so on.

A much more interesting detail is that you can play the "you scratch my back and I'll scratch yours" game. I'll use modified perl variable conventions just to make any economists who may be reading comfortable. Let's say that there are two changes, both of which are required to add $a value to users of the software (by requiring both, I'm modelling a "network effect" here). However, the cost of adding each change is $b, with 2 * $b > $a, but $b < $a. For one individual to add both features, the cost does not justify. However, if you find another person in the same position, you can agree to each contribute one of the changes. The total value to each of you then increases by $a, at a cost of only $b each. Win-win.

This game, I think, captures the essence of the force that makes "community" so powerful. What's even more interesting is that the agreement need not involve any element of coercion, even to follow the terms of the agreement. If your partner has a probability $p of following through, then the expected value for your cost is $b, while the expected value for the benefit is $p * $a. As long as $p >= $b / $a, there's incentive to follow through. Note that this is the easy two-player game, in contrast to the knotty Prisoner's Dilemma that gives economists so much trouble.

More restrictive free software licenses such as the GPL help codify this positive network effect. Otherwise, players in this game benefit equally as much (or more, if there's a competitive business relationship with the other player) by having the other player contribute the change publicly, but not themselves doing so. Of course, the other player has less incentive now, but there may be power imbalances that make the game asymmetrical, so that doesn't matter so much.

Finally, while I said contributions to code have positive sign, in contrast to plundering the environment having a negative sign, the value of software can be influenced either up or down. One of the most awesomely powerful of these downward forces is bit rot, which naturally takes its course if the software is left unmaintained. Thus, any player who has the power to stand in the way of necessary maintenance is effectively negatively contributing. This is why the fork right of free software is so critically important - it almost functions as a ratchet to make sure the value goes up and not down. I say "almost" because the cost of maintaining the software is still there, and if nobody picks that up, bit rot still sets in. However, bit rot is a classic example of granular, non-smooth gradients in value, and as such is an especially good candidate for maintenance work cost-justifying itself locally as described above.

None of this theorizing should sound that strange to people who do free software, but I nonetheless believe it's a real contribution to the economic understanding of free software. For one, treating cost-benefit as granular and having local variations, as well as inherent network effects pushing games of cooperation to be win-win, seem to be interesting additions to the ToC theory. It may be that they have no counterparts for traditional ToC models (if for no other reason than the signs being upside down, as described above), but otoh wouldn't it just be fascinating if you could find useful analogies in more classical ToC settings?

Second, it seems to me that this theorizing makes actual (potentially falsifiable) predictions, that might even be useful. For one, at a macro level it shows that, in contrast to the proprietary software lock-in model, the economics really are driven by the ToC, so you can't make money from free software that way. However, it suggests that the "granules" that appear at a more local level really do create economic incentive, and may in fact be the basis for a real business model. Lastly, it focusses attention on the inherent network effects of software as the most important factor for creating incentives to contribute. To me, it's obvious that network effects are the basis of almost all software economics, but my guess is that there are a lot of people who don't have that clue, particularly economists :)

Finally, while economics may be boring to many readers, I'm not sure it's worth ignoring. In the future, designing a free software project to have good incentives for contribution may be considered just as important, if not more so, than the traditional engineering considerations of good algorithms and data structures, modular architecture, and so on.

Hmm, maybe this should have gone on the front page. In any case, it needs expanding and more careful argumentation before it becomes a real essay. If none of you have read this far, then it's probably not a good use of my time :)

Feeling a bit better, and actually managed to do some productive work today. I've reworked the font cache somewhat for librsvg - now clients get a small-integer font handle instead of lugging around a pointer to the font data structure. I think this is a good move for both robustness and performance, but of course it's also possible I'm hallucinating. Check out the rsvg snapshot if you're interested in following such things.

Yuck. I've had serious stomach pain for the past few days. I'll find out tomorrow whether it's an ulcer or what. An ultrasound more or less ruled out appendicitis.

One good thing I learned: Zantac really works. If your stomach starts feeling really bad, you might want to try it.

In other news: I'll be going to the va-sponsored printing summit at the end of this month. Looks like people will be there from Ghostscript, Xfree86 render, and Gimp-print, but probably nobody else from Gnome-print. I guess that makes me the official representative. (rubs hands together gleefully)

Nathan Myers points out to me that the rms account is almost certainly a forgery. It's not like him to confuse the Internet with the Web :).

Well, time to catch up on all the stuff.

Rsvg now handles SVG files with entities, so it handles at least some SVG files exported from Adobe Illustrator 9.

Yesterday's fireworks were fun. Alan was entranced, and even Max seemed to be interested in the lights. Btw, three more pictures of Max are up on his Web page. Tell me he's not the cutest baby in the world :)

Even though Rsvg is making reasonable progress, I still feel more than a bit unproductive and stressed out. I guess that's partly because stuff from other parts of my life (like paying bills and so on) is piling up, and I'm beginning to feel overwhelmed. I know these periods alternate with near-manic times when I have tons of energy, but it's still not fun to be in them. Ah well.

A nice family day, no coding.

The freetype integration goes well. Kerning works now. Also, rtmfd is working on a glyph cache. Hopefully, we will soon have antialised text rendering that's both high quality and high speed. I had a "phone" conversation with him over the Internet yesterday evening using Speakfreely. It was cool, but I expected quite less roughness from software claiming to be in its seventh major revision. It looks like it still has major problems with its interface to Linux sound drivers - latency starts out at about 2s, then climbs steadily over the call. Nonetheless, there's a lot of potential.

The adoption of Vorbis is going to be interesting to track. My guess is, at first, it will be used by people who care (about audio quality, freedom, etc), and only by people who care. So getting an .ogg file will be a pretty good sign. An .mp3, by contrast, will be a sign that the person encoding the file probably didn't give a shit. I'm encoding all my CD's now with Vorbis. It's just a shame that both my ide cdrom and my scsi cd-r suck at cdda, even with cdparanoia.

Tomorrow I've basically reserved for bills, financial stuff, and other fun stuff. These are the days I wish I could just code. Ah well, I'll feel much better when all that stuff is done.

Woohoo! I now have a hacked-up version of rsvg that renders text with freetype 2. Here's a sample. If you want to play with the code, it's here. You may have more luck with makefile-simple than trying to get autoconf to work.

Advogato is apparently going to get written up in Salon soon. They're the #2 news source to pick up on it, after lwn.

I have a bunch more things to say, but am tired now and need sleep. In short: Vorbis rocks. Linux business deals are weird.

Oh yes, and I wanted to take this opportunity to publicly bash Linux World Expo for being clueless. After the amazing experience of Guadec, I marveled at the contrast between that and the trade-show oriented linux expos, of which LWE is exemplary. Then I came up with an idea to make this kind of show more appealing to free software developers: have a hacking room set up with comfortable chairs and network connections, specifically for us hackers. Well, when I heard back from them on this suggestion, they basically said, "don't call us, we'll call you." Now, to me it's obvious that setting up a room like this could make the show a lot more interesting and fun for hackers. But I guess they just don't get it. So, if you want to find me at LWE, I'll almost certainly be in the Gnu booth.

I'm feeling a bit overwhelmed right now, which is pretty common for me. Because of some really bad financial decisions over the past couple of years, I'm in a position where I have to do quite a bit of consulting to keep afloat. Fortunately, I'm finding it possible to get really great work from really great people, doing (ok, won't brag here, even though I'm throwing off my alliteration) projects that I really like doing. Right now, that's mostly rsvg for Eazel, and a new project to implement PDF 1.4 transparency features in Ghostscript. It's likely that some inkjet printing and some font work is going to get added to the mix.

The only problem with all this is that I'm also involved in quite a few projects that don't have funding attached. Since I'm behind on my consulting work, it's really hard for me to grab time to put into these. Ordinarily, I'd "make time", but right now I'm finding that it's really important to spend time with Alan and Max. So the "volunteer" projects are taking a serious hit right now. These include Advogato, rcss (my cascading style sheet parser), Gill, and my PhD thesis (which I really would like to get around to finishing one of these days). I'd also love to have time to write the Libart book, work on the real-time version of the watercolor simulator, bring gfonted to releasable status, and do a "purifying" C interpreter. At other times, I fantasize about spending time on Athshe. I'm also giving a bit of thought to a distributed, Web-based formal theorem database, oriented toward correctness proofs of program fragments.

I keep telling myself it doesn't matter when all these projects get done, that the problems they solve will probably still be around no matter how long I wait for them. In the meantime, I've been having some success transferring projects to other people.

Well, I should get to bed now. Tomorrow promises to be a full day :)

Long time no diary. I've been feeling pretty unproductive lately - a not uncommon occurence for me, and for lots of other free software hackers too, it seems from these diaries. Perhaps it has something to do with depression (I'm taking Zoloft), another characteristic that seems overrepresented among free software types?

I managed to fix the paper jams in my LaserJet 4M. I finally got sick of them and did some net searching, resulting in a $50 kit. Lo and behold, it worked! Later, I found out the part could have been had for about $20, but the step-by-step instructions did save me some time. And now my printer works again! I printed out the PDF 1.3 and ICC specs, and sewed them up for binding.

Max continues to do well, but has a wheeze the last couple of days. The doctor took a look and said not to worry. Well, we'll watch him closely.

I'm not sure if any of my GPL code has made it into a KDE app or not. If I find out it has, I'm very inclined to make a public stand requesting that the license incompatibility issue be resolved one way or another. Do you or anyone you know have GPL code in KDE? Get in touch if so.

Seems like a lot of random stuff worth mentioning. Adobe Illustrator 9 more or less works under Wine. Wine is an amazing accomplishment, but the amout of work remaining is even more daunting.

Adobe SVG uses a new font format called CEF. It's based on CFF and Type2 charstring encoding, but adds some metrics as well, particularly kerning. It's not documented yet (in the true spirit of w3c "standards"), but it actually looks like a pretty decent format, nice and compact.

I stand by my bitching and moaning about Adobe releasing software that talks "SVG" well before the W3C has published a spec. We all remember what happened with premature implementations of CSS - it's still nowhere near sorted out. No reason to expect SVG will be much different.

Well, I feel pretty behind on stuff. Hopefully, I'll get a burst of energy this week and be able to catch up.

74 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!