::::: : the wood : davidrobins.net

My name is David Robins: Christian, lead developer (resume), writer, photographer, runner, libertarian (voluntaryist), and student.

This is also my son David Geoffrey Robins' site.

Upgrading memory and skill

News, Technical, Guns ·Saturday January 16, 2010 @ 03:17 EST (link)

Doubled the RAM of minas-tirith today (1G → 2G). It's fairly old; it takes DDR2 667MHz memory ("PC-5300"); cirith-ungol also needs an upgrade; it's is even older (takes DDR 333MHz "PC-2700"). I was worried it required all the chips to be the same, but it eventually booted with the existing 2 x 512M in slots B1 and B2 and a new 1G chip in slot A1 (earlier they weren't seated properly, resulting in angry beeps from the motherboard's POST, Power-On Self Test). I also ran into some trouble with the second network connection (the on-board network connects to the internal switch; the other, a Realtek 8139 card, connects to the cable modem, insulating vulnerable Windows machines from the big bad Internet). It was mounting huge numbers of receive errors, but taking out the card and blowing the dust of fixed it.

Cirith-ungol (the MythTV/XBMC box) also needs more disk; the root partition is only 10G (with the rest dedicated to an LVM partition for recorded video files). Unfortunately the video partition is JFS, which can't be shrunk, so I'm going to have to copy the entire video partition somewhere, delete the old one, and then increase the size of the root partition. I plan to get a 2Tb Western Digital "MyBook Essential" for that, probably from newegg.com.

I've been going to the new WCA range (we have a silver annual membership) on Tuesdays and a few weekends, and my targets are looking better each time—better accuracy and better precision. We may go later this weekend, perhaps taking the Ruger 10/22 instead of the Glock 34. I also plan to go to the WAC show to pick up some brass-cased .223 ammo, since WCA does not allow shooting steel-cased, which is what I have now. I re-upped my membership at SVRC too, since there's nowhere else close to shoot steel (the Sultan pit is about twice as far away and SVRC is only $75 annual). WCA also doesn't allow anything higher than 7.62x39 (typical AK-47 round), so the Mosin Nagant is out (even though at the walkthrough I was told it was fine) and I needed somewhere else to shoot it too.

Books finished: End the Fed, Practical Anarchy, Devil On My Back.

The fighting "we"

Political ·Monday January 11, 2010 @ 23:30 EST (link)

How many wars as the US fought in where it was attacked first? I can only find a handful: This is less than half of all the conflicts the US has been involved in (source); in the rest, the US were the aggressors.

For what purpose are we killing our people and wasting our resources on wars when we are not endangered? Molyneux notes:

The fact of the matter is that we do not face threats to our lives and property from foreign governments, but rather from our own. The State will tell us that it must exist, at the very least, to protect us from foreign governments, but that is morally equivalent to the local Mafia don telling us that we have to pay him 50% of our income so that he can protect us from the Mafia in Paraguay. Are we given the choice to buy a gun and defend ourselves? Of course not. Who endangers us more—the local Mafia guy, or some guy in Paraguay we have never met that our local Mafia guy says just might want a piece of us? I know which chance I would take.

… Even if we do not count the physical casualties of the war, given the massive national debt being run up to pay for the Iraq war, how well is the property of American citizens being protected? How much power would Bush [or Obama] have to wage war if he did not have the power to steal almost half the wealth of the entire country? The government does not need taxes in order to wage war; it wages war because it already has the power of taxation - and it uses the war to raise taxes, either on the current citizens through increases and inflation, or on future citizens through deficits.

This simple fact helps explain why there were almost no wars in Western Europe from the end of the Napoleonic Wars in 1815 to the start of World War One in 1914. This was largely because governments could not afford wars - but then they all got their very own Central Banks and were able to pave the bloody path to the Great War with printed money and deficit financing. World War One resulted from an increase in State power - and in turn swelled State power, and set the stage for the next war. Thus, the idea that we need to give governments the power to tax us in order to protect us is ludicrous—because it is taxation that gives governments the power to wage war.

For pacifist countries, this "war" may be a war on poverty, or illiteracy, or drugs, or for universal health care, or whatever. It does not matter. The moment a government takes the power—and moral "right"—to forcibly take money from citizens, the stage is set for the ever-growing power of the State.


One of the biggest propaganda* "articles of faith" of our government is that it is "we" who are fighting in Iraq and Afghanistan (and it was "we" in Korea and Viet Nam). It's second only to the "fighting to make the world safe for democracy" canard started with (Democratic president) Wilson as justification to enter World War I. If they want democracy - or better still, a constitutional democracy with an iron rule of non-aggression overriding all - let them show it, and let volunteers aid them at their own expense.

But it is not "we"; it is "them": a few powerful people at the top who were elected to pay off special interests (if you're on the left, think of your vitriol toward Bush; if you're on the right, think of Obama's broken promises to extricate "us" from Iraq) and soldiers who have voluntarily sworn blind obedience to their superiors (see note, "Will Americans kill Americans?"). I am even questioning my stance of "Oppose the war, but support the troops" on the twin grounds that (1) it makes little sense to oppose the crime and support the criminals, and (2) they intentionally signed up to use deadly force in blind obedience to whoever is put over them, knowing full well about past aggressive and failed wars such as Korea and Viet Nam. (Of course, it availed little to have signed up for, say, the National Guard—with the goal of protecting our shores—instead of the Army; you were still subject to being sent overseas, but they evoke more sympathy since defense of the nation was why they signed up, not pounding sand in the world's biggest powder-keg.)

Why do "we" fight these wars of aggression? Is it just bread and circuses - warriors we can cheer in a distant sandy arena?—is it government Soma to make us forget about the individual rights they erode daily? Is it because central banks allow for an infinite money spigot, so powerful people will send "us" to war at the slightest insult (and so, will ending the Federal Reserve turn off the spigot and make us sensible non-interventionists again)? Somebody explain it to me, please.

(Stefan Molyneux of Freedomain Radio is an anarchist writer with several books online. I first heard of him when I saw his video "The Social Contract: Defined and Destroyed in Under Five Minutes. His arguments are well thought out and worth reading; Practical Anarchy seems like a good place to start. Among other things, it contains thorough rebuttals to many knee-jerk reactions to the idea of a stateless society, e.g., "What about the roads?", "Will the poor be educated?", "What about crime?".)

* Advertising appeals to choice and self-interest; propaganda uses rhetoric to morally justify the absence of choice and self-interest. Advertising can only stimulate a one-time demand; propaganda permanently suppresses rationality. Advertising generally uses the argument from effect (you will be better off); propaganda always uses the argument from morality (you are evil for doubting).

DVDs finished: Double Jeopardy.

Criticism of Evidently Not book

Political, Media ·Sunday January 10, 2010 @ 22:27 EST (link)

I find some inconsistencies in the arguments in the viewable excerpts of the book Evidently Not that I feel obliged to point out.

In Why Government?, "Men are not angels" is not an argument and is entirely insufficient to declare a stateless society ("anarchy") impossible (e.g., see Stefan Molyneux's arguments on Freedomain Radio). If government has no rights except those delegated, then how is it funded? It must be funded entirely through donations if the author is to remain true to the rights claimed.

Why a Republic? - Mob rule is still entirely possible (and common) with representative democracy. It may filter out a few hotheaded votes, but replaces them with the backroom deals and pork of a congress. They are not held accountable now, because they can pay everyone off with other people's money and people overlook the other special interest groups as long as theirs is funded. There is almost no degree of anger due to bad law or regulation that cannot be bought off by throwing money at special interest groups: this is the biggest problem of representative government.

It is no more or less possible to vote a minority into slavery in pure democracy than a republic (it already happened here), and a constitution that protected individual rights would restrain both equally.

Typo: "they are more interested in remaining in power, THAT governing rightly" (than?).

Why Conservatism? The writer has now accepted taxation as necessary despite the earlier clamor about rights—that government only possesses those rights delegated to it by individuals. After that, how much taxation is conservative is skipped entirely. Both major parties claim they're trying to spend less; yet they both consistently fail. In many ways they are indistinguishable, and work together to infringe and circumvent individual rights.

All of the above excerpts are from chapter one; excerpts from the rest of the book are much sparser (the rest is unavailable online) and they continue with some unfortunately rather poor arguments and criticisms of local and recent politics which will not stand the test of time well. Local events are used well to illustrate principles, but poorly as a target of ad-hoc rants. Conservatives must establish clear principles, such as the non-aggression principle, and evaluate events in light of those principles, objectively, not emotionally.

Will Americans kill Americans?

Political, Guns ·Sunday January 10, 2010 @ 03:09 EST (link)

To clarify, I do not refer to criminals, but American soldiers and police (or draftees, if it comes to that). I've started reading Russell Longcore's excellent DumpDC site (start with Secession: The Hope for Humanity), and considering (quite hypothetically) writing a novel on same; and a rather long thread developed when I asked on Facebook about existing (modern) books on the subject. (I ended up with one off-thread suggestion and offer to lend Boston T. Party's book Molon Labe!, which was much appreciated. Perhaps "the book" has already been written.)

As to the title question, I think the answer is, unfortunately, "Yes." Americans killed Americans in the War for Southern Independence—and one would think perhaps it was for the noble reason of freeing the slaves, but in fact, most of the white soldiers at the time would have refused to fight if that had been the war's purpose. No, they fought merely to restore a union, to bring back states that wanted to leave a covenant of equals so that their territory and revenue might be seized. It is impossible not to conclude that they will do so again.

More recently, in WWII Americans marched their fellow Americans of Japanese descent, into what amounted to concentration camps, depriving many of life and all of liberty and property. Police forces will usually honor orders rather than individual rights to life, liberty, and property—especially the foreign troops that are being allowed onto our soil.

My Uncle John gave me a book when we were there on New Year's, Lt. Col Dave Grossman's On Killing, which I think would be an effective source for learning and thus writing about what would make not only one person kill another against which he has no personal quarrel in war, equally foreigners and any fellow citizen deemed a target (at least, so the cover and reviews indicate). We also finished watching Outbreak, containing scenes when American troops were called on to follow orders and murder all inhabitants of a California town, which will provide dramatic inspiration and gives much to think on.

Consider also why the military usually transfers people out of their home state and around the country: it is to break or render void any allegiance to one's home town, county, or state; in short, to make it easier for United States troops stationed in newly independent states to murder their own "When in the Course of human events it becomes necessary for one people to dissolve the political bands which have connected them with another."

What can be done to stop such fratricide if a state, or any geographic region, from a town, county, on up, declares independence and the United States again decides to murder those that would "assume among the powers of the earth, the separate and equal station to which the Laws of Nature and of Nature's God entitle them"? I think education is the only way to offset the desensitization to death and the installation of unquestioning obedience in our military: in particular, of our own history, of world history, of economics and philosophy and the rights of man. What would be so bad about troops that could think for themselves? Certainly devolution to a rabble would never be desirable, but all ranks should be aware of and feel able to refuse an unconscionable order, facing the necessary consequences if the refusal is for any light reason.

It is reasonable to take up arms against the infringement of rights, but not in suppression of them. Will the President have the wisdom to extend the hand of friendship and open trade with the new nation, or will he follow the tyrant Lincoln and (without the excuse of slavery this time) continue to destroy freedom? If not, the tree of liberty may again be watered with the blood of patriots and tyrants alike.

DVDs finished: Outbreak.

The nature of reality

Technical, Theology ·Saturday January 9, 2010 @ 23:36 EST (link)

My wife's in a philosophy class this quarter, and I've been reading various philosophers (mostly in regard to politics, but politics doesn't exist in a vacuum; Peikoff reasonably claims it is a subset of ethics) fairly continuously anyway. Today I was helping her with a philosophy reading and we diverged a bit into the nature of reality. Her text touched on mentalism and phenomenalism (the idea that everything exist solely in the mind, as, perhaps, a shared hallucinatory experience).

I argued that it doesn't matter if we're in a shared hallucination, an extremely good Holodeck, or a "real" physical world, if we can't tell the difference. One might as well presume whatever's easiest to work with (for convenience) and employ Occam's razor in seeking the simplest explanation: we are physical, and physical things exist. Solipsism is similarly unimportant: we might as well act as if other people exist, because either they do or they're sufficiently good imitations (and there may be unpleasant consequences to assuming people aren't real; of course you may not mind if convinced those are all in your head too).

Furthermore (avert your eyes if "God" confuses you), there is no difference and perhaps no distinction between the existence of a physical universe and us solely existing in God's mind (conception) and partaking in a shared experience. No difference, since we can't detect one; no distinction because the idea of matter itself must be God's creation; it cannot exist independently of him, and he is not bound by it; what does it even mean to say there "is" a physical world (it depends on what the meaning of "is" is)? This does not serve to reduce God in the slightest; in fact it illustrates that not only must he create things, but metaphysically the very concept of matter. Whether gravity, for example, "exists" anywhere or we share a perception of consistent gravitational forces acting on matter is indistinguishable and irrelevant. It's not as if God was standing around in empty space (there was no space to stand around in) and "just" created a few objects within it; he created the space too, and everything that allows us to think and reason about it.

More compilers from last quarter's class

Technical, School ·Saturday January 9, 2010 @ 18:53 EST (link)

I thought I'd mention and link to Mark McWiggins' "higher level software" page here; he took the CSEP 501 compilers class at the same time I did, and wrote his compiler in Python, which I thought was interesting and probably saved him some time and effort over my C++ offering (which he linked to, and also has a link to a Java offering with perhaps more to come).

Mark's (Python source) archive appears to have all of the hand-written code in two Python files, parser.py and opt.py (there are other files but they appear to be small either external modules, e.g. for multimethod support, or generated code) with very little whitespace or comments—i.e., almost as if it was written to minimize line count. His final report indicates he was not able to compile all the "standard" sample MiniJava programs, one reason being that he couldn't compile calls with more than three parameters (as he said, easily surmountable; presumably time was a factor). His optimizations consist of a few peephole optimizations and the level of abstraction is far less than my compiler's pipeline (see my writeup and final report).

So a straight line count comparison (1800 for his Python code, 8000 for my C++) would certainly not seem to be in order. It's easily possible that the commenting, whitespace, separation of classes into files and code into classes (I had I think around 20 files and possibly 80 classes), plus the increased correctness and number and type of optimizations would easily account for the difference. Use of the STL, while not as convenient as a higher-level language, would probably be comparable to using the built-in dictionaries, etc. in Python. So this project alone is a poor example of "demonstrating the usefulness of [higher level] languages" (but I'd still agree with the claim that HLLs are more efficient; experience and other writing—Frederick Brooks, Paul Graham, to name a few—is persuasive in that regard).

A standard optimizing C++ compiler should have my compiler running faster than most HLLs (algorithms being equal, and we both used well-tuned libraries), and increased optimization should generate smaller and faster programs (a direct comparison is not possible since Mark opted to output MIPS code for the SPIM emulator but I stayed with the default x86 output, although it may be instructive to compare percent lines of code reduction via optimizations for programs that will compile on both). In a high-volume compiler, object code optimizations would win out over compiler speed fairly quickly. (The "standard" as much as there was one, for writing the compiler, was, not unexpectedly, Java, so we both strayed from the beaten path in language choice, getting permission of the instructor to deviate.) It would also be interesting to see if development/test time (all other things being equal) were influenced by language choice (I would believe that HLLs do better, but it would be hard to demonstrate from this sample due to differences in completion, optimizing, and breadth and extent of tests).

Books finished: Twilight, New Moon.

DVDs finished: ER: The Complete 10th Season, 12 Monkeys.

New Year's 2010 at the Sutherlands

News ·Friday January 1, 2010 @ 23:08 EST (link)

I'm very late in writing this up; I do apologize, since I'd promised pictures.

John and Sharon invited us and other family to their condo in Abbotsford for New Year's; we arrived at about 1300 and I think were the first to arrive. They had planned on ending the evening early because Chris and Vanessa would need to get their kids to bed and we'd need to drive back. Drive took about 2½ hours, as expected; border crossing (Lynden/Aldergrove) didn't take long at all (nor going back, via Abbotsford/Sumas). Chris and Vanessa and their kids (Daniel and Joshua), and their parents Graham and Wendy arrived soon after, and Murray, who was in from Toronto and staying in the building's guest suite.


There was a great spread set before us—tortiere, ham, lasagna, cabbage rolls, and more; and then a variety of baked goods which I had so missed from Christmas at home, such as Nanaimo bars; I think Wendy brought those. We were encouraged to take some home; in fact, they doubled and redoubled what I took at first, and gave us some tiramisu besides. I made them last as long as I could in the days that followed and we really appreciated their kindness to usward. While there we taught Euchre to Graham and Murray (when you explain it, the rules, e.g., about the bowers, do seem a bit baroque).

Books finished: Billions and Billions, Capitalism.

DVDs finished: Meet Joe Black.

Cases in Constitutional Law #4: separation of powers

Law ·Monday December 28, 2009 @ 08:58 EST (link)

Chapter 2, The Legislative Branch.

[] Ex Parte McCardle (1869): Congress passed an act limiting the appellate jurisdiction of the courts (which had been granted by an earlier act); although it was acknowledged that Congress could not entirely remove the appellate powers of the high courts, since they were given by the Constitution, the Constitution provided explicitly that the power is conferred "with such exceptions and under such regulation as Congress shall make." Not much to see here judicially, although the introductory analysis has a long discussion on conflicts between Congress and the courts. The particular case is interesting as it concerns McCardle, a Sergeant in the Confederate Army and a newspaper publisher who published articles against Reconstruction; he was jailed by the local military dictatorship and the appeal in question was for his habeas corpus request denied by the lower courts; Congress passed a law revoking the appellate jurisdiction of the Supreme Court over lower courts. It was a disgusting use of force and miscarriage of justice by the lower courts, but the jurisdiction issue was resolved correctly.

[] McGrain v. Daugherty (1927): Concerns the legislature's power to subpoena witnesses for its inquiries, compel testimony, and punish failure to appear. First, any such inquiry that can be carried out by judicial procedure of course should be, but in general inquiries attempt to gather information for possible prosecution later. There's also a worry that the legislature's power may extend to punishing merely answers that it does not like (by saying the witness is being evasive, etc., when it has no proof of that being the case), or it could abuse its power by summoning random people, without any check (exercising immunity for actions taken while in session). Fortunately, Killbourn v. Thompson (1881) found that 'neither house of Congress possesses a "general power of making inquiry into the private affairs of the citizen"', and exercised with discretion the powers may be necessary and useful for inquiries into how taxpayer affairs and monies are managed, which may even be necessary in a minarchy. Witnesses should be paid for their time and expenses, and any punishment for contempt should be over whenever the witness agrees to testify.

[] Barenblatt v. United States (1959): Concerns an inquiry by the House Un-American Activities Committee (HUAC) into Communist infiltration into education by questioning a professor. Despite an earlier case, Watkins v. United States (1957) which reversed a holding of contempt, the court found that the Watkins circumstances did not apply, that the questions were pertinent to the investigation, which had been clearly identified, the conviction was affirmed. The court's excuse was, "To think that because the Communist Party may also sponsor peaceable political reforms the constitutional issues before us should now be judged as if that Party were just an ordinary political party from the standpoint of national security, is to ask this Court to blind itself to world affairs…." Given the then-current Cold War with Russia, a nation that became Communist through violent revolution, Communist affiliation then was to stand for a violent destruction of Constitutional government that was actually considered possible (liberals loved Stalin), contrasted with today, where it's merely to stand with a few ignorant hippies whose political system has long since been soundly beaten both rationally and empirically. Nonetheless, this does not override the first amendment.

[] Schechter Poultry Corporation v. United States (1935): Preamble summarized past cases where "rule-making" as a limited legislative power was delegated by Congress to the President (e.g., determining if a foreign nation had enacted tariffs that would cause a conditional retaliatory tariff passed by the legislature to go into effect), established as principle and precedent by Chief Justice Taft (J. W. Hampton v. United States, 1928). Schechter allegedly violated a provision of the NRA—no, not the good guys that (sometimes) defend firearms rights but the National Recovery Administration, but a socialist price-fixing cabal. The "Live Poultry Code" of the NRA was put into effect by an executive order; hence the relevance to delegation of legislative power. The court rightly found that the "Codes of Fair Competition" authorized by Congress via the National Industrial Recovery Act overstepped the bounds of delegation, that "Congress cannot delegate legislative power to the President to exercise an unfettered discretion ot make whatever laws he thinks may be needed…." The abuse of executive orders and executive power has only grown since. (The book notes that the section of the Schechter case dealing with the commerce power is printed in the section on interstate commerce.)

[] United States v. Curtiss-Wright Export Corporation (1936): (In the preamble here the author is confused, believing we have a national rather than a federal government. I expected better from a professor of law.) Curtiss-Wright was an arms exporter charged with selling arms to Bolivia, against which the Congress had passed an embargo on the sale of munitions at the discretion of the President. The court erroneously concludes (from a fallacious argument about the need for supreme will and power passing from the British crown), however, that "It results that the investment of the Federal government with the powers of external sovereignty did not depend upon the affirmative grants of the Constitution." But the federal government has no powers except those enumerated in the Constitution!—mystical invocations notwithstanding. Special pleading ("in this vast external realm, with its important, complicated, delicate and manifold problems, the President alone has the power to speak or listen as a representative of the nation") is again used to crown the President a king. Thus, the court allowed the conviction against Curtiss-Wright to stand—because the king's commands must be followed. But the United States does not have a king!

DVDs finished: Magnum Force.

Scrooge: a great example for government

News, Political, Media ·Saturday December 26, 2009 @ 09:25 EST (link)

Indeed—I can't even watch Scrooge without political thoughts! We watched the the 1951 classic with Alastair Sim (colorized) yesterday, Christmas Day, as is tradition. My wife was clearly thinking along the same lines (I have corrupted her terribly), since she asked if I thought Dickens' thesis, which she saw as "people should help each other" is correct, especially since I'm such an ardent libertarian (objectivist). And of course neither I nor any libertarian would see any conflict with people helping each other as they choose, freely. Objectivists might object to the perceived altruism—I'll address that in a minute.

But I was a step ahead and my thesis about the movie is that Scrooge before his conversion is how government should be; Scrooge after his conversion is how a man should be. Before conversion Scrooge shared these characteristics with good government: Afterward, as a man his good characteristics were these: Government must be cold and objective. People should be warm. But they should never be compelled to be so; and indeed, the natural variation among people—some more outgoing than others; people contributing their time and money to different causes in their own way, etc.—is a positive. Government should be thrifty, never coerce unless responding to coercion, be utterly objective, and never interfere in voluntary transactions unless asked to resolve a dispute.

Books finished: The Libertarian Reader, The Anti-Capitalistic Mentality.

Python 3: a dearth of modules, a need for CPAN

News, Technical ·Thursday December 24, 2009 @ 06:17 EST (link)

It was not without reason that the Freenode #Python channel tried to dissuade me from using Python 3: they're correct, it has very few modules. Fortunately, the Python core is quite strong. And many modules can easily be converted using the 2to3 utility; pyinotify was such a module, only requiring a few non-automated tweaks, generally in the bytes vs. str area, which I converted for my monitor utility.

I'm currently looking at extending XBMC in a few ways. XBMC has an embedded Python interpreter, mainly because XBox could only run one process, at least back then; I'd like to generalize to other scripts, using D-Bus for IPC, and also to allow scrapers to be arbitrary scripts rather than using the rather baroque custom XML regular-expression parsers required presently.

Another project is MP3 renaming; stagger is a good library (there's one other that works in Python 3, but isn't as easy to use, although this one has a lousy web site—I have no idea if it's still being worked on or not—and required reading the code to use). The detect_tag function doesn't detect ID3v1 (yes, I have some really old MP3 files, mostly old Christian ska bands, from Ben Sloetjes…). I ended up checking for ID3v2, catching NoTagError, and checking for ID3v1 using stagger.Tag1.read, catching NoTagError again; and if that fails, creating a new tag. Although stagger.default_tag is a Tag24 (ID3v2.4) object, it seems most applications can't deal with them (found this out when the id3 and id3v2 binaries couldn't see a tag after my script had tag things), so I used ID3v2.3 (Tag23) instead. I used eyeD3's --to-v2.3 switch on the top-level music directory to recursively convert everything. (The eyeD3 utility is written in Python; I'd use the eyeD3 library except it doesn't work in Python 3 and it wasn't worth the effort to try to convert when stagger already existed.)

In general the Python package index (PyPI) lacks a lot when compared to CPAN, and apparently I'm not the first to think so (misnamed page with some arguments; Guido's comment that people want CPAN). Presumably the CPAN people could help: anyone that would mirror Perl would probably mirror Python for the same reasons (advance open source, contribute to a good cause, rational self-interest, whatever).

There is a little more talk (and a lot less action) at the Python catalog and distutils SIGs. The distutils SIG has a wiki which appears to be not dead (it has a roadmap for current/future Python versions, at time of writing, 2.7 and 3.2). I joined the mailing list and joined a current discussion about what CPAN has that PyPI and Python's distutils lack. One thing I really miss is online documentation for modules; some aren't even stored on PyPI (making mirroring hard); I don't think they even have a consistent indexing system, although some have XML manifest files of some sort linked. I'm not sure how to resolve this—CPAN is massive, with mirrors everywhere, with PAUSE as access/control system, and it keeps multiple versions, etc. Steffen Mueller started a thread Python people want CPAN and how the latter came about which has been active although not necessarily productive (there's a lot of denial).

My mail responding to a response to SM's mail with some concrete things that CPAN has that Python's distribution network needs:

On Mon, Dec 21, 2009 at 11:13:31AM +0100, Lennart Regebro wrote:
What nobody still fails to explain in this discussion is what CPAN "is" and Why Python doesn't already have it. There is just a lot of "CPAN is great!" And "Python needs CPAN" but noone can come up with one single thing that CPAN does that Python doens't have, or explain why CPAN is so great, where PyPI isn't. And unless somebody can do that, this discussion ain't going nowhere. :)

Here are a couple things I really like about CPAN:

1. Module documentation - the perldoc is extracted, formatted as HTML, and is available for browsing (e.g., search.cpan.org - perhaps this is part of the "sugar" described by Steffen but it tastes delicious). The same could presumably be done with pydoc. (Some modules have some documentation on PyPI, but it's not the pydoc, just a summary.) (The local pydoc server also doesn't help me for modules that I don't have installed yet, and installing every module matching, say, "ID3", and then reading the pydoc is a significant hurdle.)

Slightly tangentially, the Python community doesn't seem to have instilled the same documentation culture as the Perl folk. The standard perldoc sections (DESCRIPTION, SYNOPSIS, etc.) are enormously helpful, whereas pydoc seems limited to very dry docstrings, and tends to import unneeded extras (e.g., when 'pydoc dbus' shows the dbus.Array class, it also feels a need to list all the methods of the __builtin__.list class from which it inherits). It's become more of a rule than an exception to have to examine the module source to determine how to use a Python module.

2. A conceptual link between different versions of the same module. On CPAN (search.cpan.org), there's a page for module X with a dropdown for the known versions and their release dates, which may also be downloaded. PyPI appears to treat multiple versions of the same package as completely different entries. A link to an extracted changelog is also convenient.

3. Index by module name (as well as package name). Even further, it would help predictability to make the two match when possible (as perl module X::Y version V will usually be X-Y-V.tar.gz), or at least obviate the need to display package names. Frequently I don't care about the cutesy package name, just what it implements.

4. Namespaces and some way of reserving them. There are likely many modules named postgresql on PyPI, but there's only one DBD::Pg (although there are other PostgreSQL modules that implement the perl DBI driver interface). This also helps with specifying dependencies.

<Previous 10 entries>