<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Coyote Tracks &#187; open source</title>
	<atom:link href="http://kagan.mactane.org/blog/tag/open-source/feed/" rel="self" type="application/rss+xml" />
	<link>http://kagan.mactane.org/blog</link>
	<description>The prints of an Internet-enabled coyote.</description>
	<lastBuildDate>Tue, 31 Jan 2012 03:26:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Her Name is Skud</title>
		<link>http://kagan.mactane.org/blog/2011/10/07/her-name-is-skud/</link>
		<comments>http://kagan.mactane.org/blog/2011/10/07/her-name-is-skud/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 14:24:30 +0000</pubDate>
		<dc:creator>Kai MacTane</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Ada Lovelace Day]]></category>
		<category><![CDATA[geek culture]]></category>
		<category><![CDATA[gender]]></category>
		<category><![CDATA[GooglePlus]]></category>
		<category><![CDATA[NymWars]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://kagan.mactane.org/blog/?p=404</guid>
		<description><![CDATA[Skud has been involved in Open Source, and in activism and advocacy, for years and years. She does a little of everything, having coded, written docs, managed developers, and spoken out on important&#160;topics. She has been, or is currently, a contributor to projects ranging from Eureka to Perl to Xen to HTML::Mason. Way back in [...]]]></description>
			<content:encoded><![CDATA[<p>Skud has been involved in Open Source, and in activism and advocacy, for years and years. She does a little of everything, having coded, written docs, managed developers, and spoken out on important&nbsp;topics.</p>
<p>She has been, or is currently, a contributor to projects ranging from Eureka to Perl to Xen to HTML::Mason.</p>
<p>Way back in 2007, I saw that a company named Metaweb was looking for coders for a project called Freebase. <a href="http://radar.oreilly.com/archives/2007/03/freebase-will-p-1.html">Tim O&#8217;Reilly said</a> the Metaweb people were &#8220;building new synapses for the global brain&#8221; and the project looked cool as hell. I looked at their hiring criteria, and was scared off by the problem that involved writing some code to populate a directed graph without allowing closed cycles to form. I wish I&#8217;d at least tried; maybe I might have gotten&nbsp;hired.</p>
<p>In which case, I could have met Skud when she started working there, later in 2007. And now maybe I&#8217;d have an &#8220;I know Skud&#8221; button. Regardless, I was totally unsurprised to learn, recently, that Skud had worked at Metaweb. She&#8217;s got the kind of talent and skill that I expect would make her a natural there. (And I confess to a certain bit of envy, that she got to work on such a cool&nbsp;project.)</p>
<p>But that&#8217;s not all. She also founded <a href="http://geekfeminism.wikia.com/wiki/Geek_Feminism_Wiki">the Geek Feminism wiki</a> and built it up into the self-sustaining thing it is now. That wiki has been an invaluable resource in various things I&#8217;ve needed to write, and the <a href="http://geekfeminism.wikia.com/wiki/Who_is_harmed_by_a_%22Real_Names%22_policy%3F">Who is harmed by a &#8220;Real Names&#8221; policy?</a> page was a superlative argument in the NymWars discussion on Google+&nbsp;&mdash; back when I was still&nbsp;there.</p>
<p>Of course, Skud herself was also a major player in NymWars. Aside from writing about <a href="http://infotrope.net/2011/07/22/ive-been-suspended-from-google-plus/">her experience</a>, and noting when Google started <a href="http://infotrope.net/2011/07/29/google-is-gagging-employees/">gagging its own employees</a>, she also performed an informal <a href="http://infotrope.net/2011/07/25/preliminary-results-of-my-survey-of-suspended-google-accounts/">survey of people suspended</a> from Google+, thus providing some solid data to add to the discussion.</p>
<p>And now she&#8217;s moving into music, which may take her outside the Ada Lovelace Day&#8217;s &#8220;women in <span class="tooltip" title="Science, Technology, Engineering and/or Mathematics">STEM</span>&#8221; boundaries&#8230; but when I think of women in tech, Skud is still one of the biggest names that comes to my&nbsp;mind.</p>
]]></content:encoded>
			<wfw:commentRss>http://kagan.mactane.org/blog/2011/10/07/her-name-is-skud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hummingbird Version 0.66 Released</title>
		<link>http://kagan.mactane.org/blog/2010/11/28/hummingbird-version-0-66-released/</link>
		<comments>http://kagan.mactane.org/blog/2010/11/28/hummingbird-version-0-66-released/#comments</comments>
		<pubDate>Sun, 28 Nov 2010 23:02:28 +0000</pubDate>
		<dc:creator>Kai MacTane</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Hummingbird]]></category>
		<category><![CDATA[my projects]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://kai.mactane.org/blog/?p=262</guid>
		<description><![CDATA[This is largely a bug-fix release. Tom Clift, of PaperCut print management software, kindly informed me of a few installation issues that my own tests didn&#8217;t find. The profusion of configuration options in PHP can make testing everything on a single server quite difficult. This would be a good time for me to mention that [...]]]></description>
			<content:encoded><![CDATA[<p>This is largely a bug-fix release. Tom Clift, of <a href="http://www.papercut.com/">PaperCut</a> print management software, kindly informed me of a few installation issues that my own tests didn&#8217;t find. The profusion of configuration options in PHP can make testing everything on a single server <em>quite</em> difficult.</p>
<p>This would be a good time for me to mention that I have the utmost respect for QA people. They deal with all sorts of minutiae that I am really glad not to have to handle, and I&#8217;m really glad they&#8217;re around. That said, I am <em>not</em> a QA person&#8230; and so I occasionally miss the sorts of stuff they&#8217;d catch.</p>
<ol>
<li>It turns out Hummingbird depends on <a href="http://www.php.net/manual/en/features.commandline.introduction.php">the CLI version</a> of PHP, and the CGI version will not suffice. This requirement is now listed in the appropriate section of <a href="http://kai.mactane.org/software/hummingbird/">the Hummingbird page</a>.</li>
<li>Not all PHP installations have output buffering turned on by default. The latest version of Hummingbird takes account for this.</li>
<li>Various problems that can occur with the data cache file are also now reported more gracefully.</li>
</ol>
<p>Again, my thanks to Tom Clift for some very useful patches!</p>
<p>You can get the latest version of Hummingbird from <a href="http://kai.mactane.org/software/hummingbird/">the Hummingbird page on my site</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://kagan.mactane.org/blog/2010/11/28/hummingbird-version-0-66-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alert: SpamAssassin&#8217;s Year 2010 Bug</title>
		<link>http://kagan.mactane.org/blog/2010/01/06/alert-spamassassins-year-2010-bug/</link>
		<comments>http://kagan.mactane.org/blog/2010/01/06/alert-spamassassins-year-2010-bug/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 04:17:45 +0000</pubDate>
		<dc:creator>Kai MacTane</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[announcements]]></category>
		<category><![CDATA[oops]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[SpamAssassin]]></category>
		<category><![CDATA[system administration]]></category>
		<category><![CDATA[you fail]]></category>

		<guid isPermaLink="false">http://kai.mactane.org/blog/?p=181</guid>
		<description><![CDATA[If you haven&#8217;t been getting as much email as usual this past week, the culprit may be SpamAssassin. It turns out that SpamAssassin 3.2.5 (the current version, released in June of 2008) has a Year&#160;2010&#160;Bug. The problem lies in the core configuration file 72_active.cf, which contains a wide variety of &#8220;currently active&#8221; rules. On line [...]]]></description>
			<content:encoded><![CDATA[<p>If you haven&#8217;t been getting as much email as usual this past week, the culprit may be SpamAssassin. It turns out that SpamAssassin 3.2.5 (the current version, released in June of 2008) has a Year&nbsp;2010&nbsp;Bug.
</p>
<p>The problem lies in the core configuration file <code>72_active.cf</code>, which contains a wide variety of &#8220;currently active&#8221; rules. On line 543, it says:
</p>
<p><code>header FH_DATE_PAST_20XX Date =~ /20[1-9][0-9]/ [if-unset: 2006]</code>
</p>
<p>For those who don&#8217;t read regular expressions, this rule will match any Date: header that contains a string like 201x, 202x, 203x, etc., where &#8220;x&#8221; could be replaced by any digit. So, back in 2008, this rule would catch email that claimed to hail from the year 2010 or later. (Well, up to 2099.)
</p>
<p>Starting on the morning of last Friday, this rule started triggering on pretty much all mail that hadn&#8217;t been delayed, thus adding 3.384 points to every piece of incoming email. Naturally, this could easily push mail over the threshold from &#8220;not spam&#8221; into &#8220;spam&#8221; when it doesn&#8217;t belong there.
</p>
<p>If you&#8217;ve been expecting some mail that hasn&#8217;t arrived, and your mail host uses SpamAssassin, you might want to check your spam folder.
</p>
<p>According to a note on <a href="http://spamassassin.apache.org/">the SpamAssassin project&#8217;s main page</a>, you can easily correct this problem in either of two ways:
</p>

<ol>
<li>If your system is configured to use <code>sa-update</code>, run it now.</li>
<li>Remove the FH_DATE_PAST_20XX rule altogether by putting &#8220;score FH_DATE_PAST_20XX 0&#8243; at the end of your <code>local.cf</code> file.</li>
</ol>

<p>Alternatively, if you&#8217;re the mail administrator, and you don&#8217;t mind setting up a Year&nbsp;2020&nbsp;Bug for yourself, you could always change the part that says <code>Date&nbsp;=~&nbsp;/20[1-9][0-9]/</code> so that it says <code>Date&nbsp;=~&nbsp;/20[2-9][0-9]/</code> instead. After all, stuff that claims to be from years in the future (or past) is likely to be something you don&#8217;t feel like reading. But if you do this, I <em>strongly</em> urge you to find some way to send yourself an alert around December of 2019, warning yourself that you need to fix that problem. (And that may be easier said than done.)
</p>
]]></content:encoded>
			<wfw:commentRss>http://kagan.mactane.org/blog/2010/01/06/alert-spamassassins-year-2010-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenOffice Writer UX Warts</title>
		<link>http://kagan.mactane.org/blog/2009/10/19/openoffice-writer-ux-warts/</link>
		<comments>http://kagan.mactane.org/blog/2009/10/19/openoffice-writer-ux-warts/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 17:30:51 +0000</pubDate>
		<dc:creator>Kai MacTane</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[complaining]]></category>
		<category><![CDATA[hall of shame]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[UX]]></category>

		<guid isPermaLink="false">http://kai.mactane.org/blog/?p=137</guid>
		<description><![CDATA[The more I play with OpenOffice.org&#8217;s Writer, the more confused I am by some of the odd UI/UX warts in it. Here are the ones that are on my mind this morning: When I press F11 to bring up the Style Picker list, why does typing letters not navigate me through that list? Why do [...]]]></description>
			<content:encoded><![CDATA[<p>The more I play with OpenOffice.org&#8217;s Writer, the more confused I am by some of the odd UI/UX warts in it. Here are the ones that are on my mind this morning:
</p>

<ul>
<li>When I press F11 to bring up the Style Picker list, why does typing letters not navigate me through that list? Why do I have to use the down-arrow to navigate to &#8220;Heading 1&#8243;, rather than just typing &#8220;he&#8221; and then Enter?</li>
<li>Once I do hit Enter to apply the style I&#8217;ve chosen, why does the picker window remain open even though my cursor focus has returned to the document? This is the worst of both worlds: part of the document I&#8217;m working with is obscured by the picker window, and now I have to hit F11 <em>twice</em> in order to apply another style. If the window went away, I could just hit F11 once to bring it up the next time I wanted to apply a style.<span id="more-137"></span></li>
<li>And, for the love of all that&#8217;s sane, why are the styles not sorted correctly? Seeing this:<br /><br />Heading 1<br />Heading 10<br />Heading 2<br />Heading 3<br />&#8230;<br /><br />is not just cheesy and amateurish, it also costs me extra work every time I want to select a heading style other than Heading&nbsp;1.</li>
<li>When I&#8217;m trying to set up a new keystroke shortcut, why is that I can use Ctrl+[digit] and Ctrl+[alpha], but I can&#8217;t use the Ctrl+. or Ctrl+, combinations? Nor can I use square brackets. Ah, but I <em>can</em> use Ctrl++, Ctrl+-, and Ctrl+/ if I want&#8230; and I can use Ctrl+* and Ctrl+Shift+8. (I haven&#8217;t yet checked to see what happens if I have those assigned to different things.)</li>
<li>And I can&#8217;t use any combination that involves the Alt key. Not Alt+[digit]; not Ctrl+Alt+[key], and not Shift+Alt+[key]. This means the number of available keystroke shortcuts is painfully small compared to what I&#8217;m used to in MS&nbsp;Word.</li>
</ul>

<p>Okay, I just finally made a reference to MS Word. I know OO.o Writer is not MS&nbsp;Word, and there are things that I should expect to be different. I haven&#8217;t said a thing about using F11 instead of Ctrl+Shift+S to bring up the Style Picker. But honestly, having fewer than half as many possible key-bindings? That&#8217;s not a case of &#8220;we do it differently here; get used to it&#8221;, that&#8217;s a case of &#8220;this is flat-out <em>worse</em> than the competition&#8221;.
</p>
<p>Or is there a good reason for ignoring the Alt key that I haven&#8217;t thought of? If so, please let me know.
</p>




]]></content:encoded>
			<wfw:commentRss>http://kagan.mactane.org/blog/2009/10/19/openoffice-writer-ux-warts/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>So Why Isn&#8217;t Perl My Favorite Programming Language?</title>
		<link>http://kagan.mactane.org/blog/2009/08/26/so-why-isnt-perl-my-favorite-programming-language/</link>
		<comments>http://kagan.mactane.org/blog/2009/08/26/so-why-isnt-perl-my-favorite-programming-language/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 17:50:58 +0000</pubDate>
		<dc:creator>Kai MacTane</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[opinion]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://kai.mactane.org/blog/?p=115</guid>
		<description><![CDATA[A good long while ago, I tried doing an exercise that I was considering making into a standard job interview question: &#8220;For each of your &#8216;languages of choice&#8217;, tell me 5 things you like about the language, and 5 things you dislike about it.&#8221; My languages of choice at the time were Perl, PHP, and [...]]]></description>
			<content:encoded><![CDATA[<p>A good long while ago, I tried doing an exercise that I was considering making into a standard job interview question: &#8220;For each of your &#8216;languages of choice&#8217;, tell me 5 things you like about the language, and 5 things you dislike about it.&#8221; My languages of choice at the time were Perl, PHP, and JavaScript, and my answers quickly showed me why this was <em>not</em> the best interview question:
</p>
<p>It was far too easy to come up with dislikes, and not so easy to come up with likes. It was a perfect example of the adage that &#8220;Every programming language sucks, but some of them suck more.&#8221;
</p>
<p>That said, the one language that scored more likes than dislikes, for me, was Perl. Here are some of the things I like about Perl:<span id="more-115"></span>
</p>

<ol>
	<li>Different sigils improve readability. The only data types that matter in Perl are easily distinguished. While we&#8217;re at it, ensigillizing your variables means you can stick them in print statements without having to step out of the quotes: <code>print "foo equals $foo and bar equals $bar"</code> is pretty easy. A sigil-less language like JavaScript requires <code>print "foo equals " + foo + " and bar equals " + bar</code> so the interpreter knows when to print the value of <code>foo</code> and when to just print the string &#8220;foo&#8221;.</li>
	<li>Scalar vs. list context means the language effectively doubles its potential function namespace, because each function can (potentially) return one thing in scalar context and another thing in list context. (For example, the &#8220;grep&#8221; function can either return a list of matches, or just the number of matches it found.)</li>
	<li>The language is compact. (Contrast this with PHP&#8230;)</li>
	<li>Function names are generally chosen pretty well, so that an experienced programmer can generally get a good idea of what the function does. (Contrast this with, for example, Prototype.js&#8217; <code>Enumerable.include()</code> method. This name looks&nbsp;&mdash; at least to me&nbsp;&mdash; like it should <em>do something</em>, but instead, it actually returns a Boolean based on whether the Array, Hash, or Object in question contains the given property. I understand this is based on Ruby&#8217;s <code>Array.include?</code> method, but the removal of the question mark results in a confusing name.)</li>
	<li>Nearly all built-in functions have default arguments, which are sensibly chosen. For example, if no array is passed to <code>shift()</code>, it will shift <code>@ARGV</code>. By default, <code>print()</code> prints <code>$_</code>, and pattern matches match on <code>$_</code>.</li>
	<li>The presence and uses of the <code>$_</code> variable are reminiscent of pronouns in human languages. Once I&#8217;ve referred to, for example, &#8220;John&#8221;, I don&#8217;t have to keep calling John &#8220;John&#8221; every time I want to talk about John. I can just say &#8220;him&#8221;. Similarly, once I&#8217;ve set up, for example, a <code>while&nbsp;(&lt;FILEHANDLE&gt;)</code> construct, I don&#8217;t have to refer to each line as <code>$line</code>. I can go ahead and pattern match on <code>$_</code> without having to construct an extra variable. And since the pattern-match operator operates on <code>$_</code> by default, I don&#8217;t even need to mention it&#8230; This is huge. This is a core part of what makes Perl Perl. Effectively, <em>it has pronouns</em>.</li>
	<li>The language doesn&#8217;t enforce any particular programming paradigm. It easily supports procedural, object-oriented, and functional programming. It has anonymous functions, first-class functions, and closures.</li>
	<li>Regex extensions like \b, \d, and \s, and especially \W, \D, and \S, make my life easier. (I continually miss them when working with non-Perl regexes, such as egrep.)</li>
	<li>The standard substring-finding mechanism (&ldquo;do a regex match&rdquo;) returns Boolean. This stands in stark contrast to the more usual <code>substr()</code>, which tries to do too much: it returns the position at which the substring was found, <em>or</em> an out-of-band value (such as -1 or Boolean false) if the substring wasn&#8217;t found. This means that if I just want to know if the substring was in there or not (but I don&#8217;t care where it was), I have to do an <em>extra</em> check against that out-of-band value. For example, I have to do <code>if (false !== substr($haystack, $needle))</code> in PHP, or the equivalent <code>if (haystack.match(/needle/) != -1)</code> in JavaScript. Note that JavaScript, even though it uses a regex match, still returns a positional integer instead of a strict Boolean! This gives me <em>too much</em> information, making me hang an ugly-looking &ldquo;!=&nbsp;-1&rdquo; off the end for no benefit.</li>
</ol>

<p>By the way, just to round out the list, here are a few of the things I dislike about Perl:
</p>

<ol>
	<li>You have to manually unpack and assign function arguments? What was Larry Wall <em>thinking</em>?!? I&#8217;m okay with &#8220;sub&#8221; instead of &#8220;function&#8221; as the function declaration keyword (just barely), but not being able to declare the argument names as part of the function definition? That&#8217;s just bizarre and weird, and it hurts every time I have to write a separate <code>my ($foo, $bar, $baz) = @_;</code> line after the <code>sub foobar&nbsp;{</code> part.</li>
	<li>And in every single class method, you need to manually unpack a reference to <code>$self</code>! This is, I&#8217;m quite sure, intimately related to the previous problem. But it&#8217;s another context in which I keep encountering the problem. Stupid boilerplate like the existence of <code>my $self = shift;</code> in every single method everywhere should simply not ever exist; it should be abstracted out and taken care of automatically.</li>
</ol>

<p>At one point, I had high hopes that Perl 6 would fix these problems. At this point? The momentum has been lost; the interest in Perl has shifted to other languages (largely Ruby and Python). I recognize that Larry Wall and the Perl team are proceeding at their own pace, and that they&#8217;re more concerned with doing it <em>right</em> than with doing it quickly. And I appreciate that.
</p>
<p>But they&#8217;ve taken <em>so</em> long that I doubt anyone really cares much any more. Perhaps Perl&nbsp;6 will manage to reawaken interest in Perl&#8230; but if so, it&#8217;ll be starting from scratch, rather than building on Perl&nbsp;5&#8242;s preexisting popularity. Which is kind of a shame, because there&#8217;s so much to like about Perl.
</p>

]]></content:encoded>
			<wfw:commentRss>http://kagan.mactane.org/blog/2009/08/26/so-why-isnt-perl-my-favorite-programming-language/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Eyeball-Deep in Legalese</title>
		<link>http://kagan.mactane.org/blog/2009/06/02/eyeball-deep-in-legalese/</link>
		<comments>http://kagan.mactane.org/blog/2009/06/02/eyeball-deep-in-legalese/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 00:37:01 +0000</pubDate>
		<dc:creator>Kai MacTane</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[diary]]></category>
		<category><![CDATA[legal issues]]></category>
		<category><![CDATA[my projects]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://kai.mactane.org/blog/?p=59</guid>
		<description><![CDATA[I used to not have a problem when I wanted to release software. I&#8217;d just release it under the GPL (what we&#8217;d now call the GPLv2), and be pretty happy with that decision. Now there&#8217;s GPLv3, and I&#8217;m really uncertain whether I like it at all. I understand that Tivoization is a serious problem, but [...]]]></description>
			<content:encoded><![CDATA[<p>I used to not have a problem when I wanted to release software. I&#8217;d just release it under the GPL (what we&#8217;d now call the GPLv2), and be pretty happy with that decision.</p>
<p>Now there&#8217;s GPLv3, and I&#8217;m really uncertain whether I like it at all. I understand that Tivoization is a serious problem, but I don&#8217;t quite understand the special non-consumer exemption for the anti-Tivoization clause. There are some other new and weird clauses the FSF has added, dealing with patents, and the WIPO Copyright treaty of 1996, and so on.</p>
<p>The GPL used to be pretty simple and elegant. Now? I recognize that the FSF is trying to make the best of a pretty bad situation. But their license has become something bizarre and awkward.</p>
<p>Theoretically, I could still use the old version. But that feels kind of odd, too, now that version 3 is out.</p>
<p>So now I have to look at things like the CPL, the Apache License, and so on. I&#8217;m already fairly sure I don&#8217;t want to use the MIT or modified BSD licenses; one of the things I liked about the GPL is that it keeps other people from dragging my open-source work into a proprietary package. I&#8217;m releasing it as open source for a reason, after all.</p>
<p>All of this is merely by of saying: I&#8217;m getting ready to release another software package. I&#8217;m not so sure the Creative Commons license I used on <a href="http://kai.mactane.org/software/hummingbird">Hummingbird</a> is quite as appropriate for this package, so I&#8217;m having to do some annoying research.</p>
]]></content:encoded>
			<wfw:commentRss>http://kagan.mactane.org/blog/2009/06/02/eyeball-deep-in-legalese/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Workaround for PEAR/PECL Failure with Message &#8220;ERROR: `phpize&#8217; failed&#8221;</title>
		<link>http://kagan.mactane.org/blog/2009/05/11/workaround-for-pearpecl-failure-with-message-error-phpize-failed/</link>
		<comments>http://kagan.mactane.org/blog/2009/05/11/workaround-for-pearpecl-failure-with-message-error-phpize-failed/#comments</comments>
		<pubDate>Mon, 11 May 2009 17:24:24 +0000</pubDate>
		<dc:creator>Kai MacTane</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[PEAR]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[solution]]></category>

		<guid isPermaLink="false">http://kai.mactane.org/blog/?p=46</guid>
		<description><![CDATA[When you try to upgrade or install various PEAR (or PECL) packages, you may get the rather unhelpful error message &#8220;ERROR: `phpize&#8217; failed&#8221;. For example, here&#8217;s the result I get when I try to install the pecl_http package: root@finrod:~# pecl install pecl_http pecl/pecl_http can optionally use PHP extension &#34;iconv&#34; downloading pecl_http-1.6.3.tar .&#46;. Starting to download [...]]]></description>
			<content:encoded><![CDATA[<p>When you try to upgrade or install various PEAR (or PECL) packages, you may get the rather unhelpful error message &#8220;ERROR: `phpize&#8217; failed&#8221;. For example, here&#8217;s the result I get when I try to install the <code>pecl_http</code> package:</p>
<p><code>root@finrod:~# <strong>pecl install pecl_http</strong><br />
pecl/pecl_http can optionally use PHP extension &#34;iconv&#34;<br />
downloading pecl_http-1.6.3.tar .&#46;.<br />
Starting to download pecl_http-1.6.3.tar (Unknown size)<br />
.&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;.&#46;.<br />
.&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;.&#46;.<br />
.&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;..&#46;.&#46;.done: 1,015,808 bytes<br />
71 source files, building<br />
running: phpize<br />
Configuring for:<br />
PHP Api Version:         20041225<br />
Zend Module Api No:      20060613<br />
Zend Extension Api No:   220060519<br />
ERROR: `phpize&#39; failed<br />
root@finrod:~#</code></p>
<p>The error is actually caused by <a href="http://bugs.php.net/bug.php?id=29123">a bug in PHP itself (filed in PHP&#8217;s bug database as of 2004</a>, and currently marked &#8220;Won&#8217;t fix&#8221;): If your installation of PHP was compiled with the <code>--enable-sigchild</code> flag on, then the return value from a <code>pclose()</code> call can&#8217;t be trusted. One of PEAR&#8217;s components, called PEAR::Builder, uses <code>pclose()</code> as part of the package installation process, to try to determine whether a given operation succeeded or not.</p>
<p>Even though the operation succeeds, <code>pclose()</code> returns -1, signaling a failure, and the rest of PEAR then takes <code>pclose()</code> at its word.</p>
<p><strong>Is This Affecting Your Installation of PHP and PEAR?</strong></p>
<p>If you&#8217;ve gotten an &#8220;ERROR: `phpize&#8217; failed&#8221; message when trying to run a &#8220;pecl install&#8221; or &#8220;pear install&#8221; command, try running <code>phpinfo()</code>&nbsp;&mdash; if you see <code>--enable-sigchild</code> in the &#8220;Configure Command&#8221; section near the very top, then you&#8217;re most likely being bitten by this bug.</p>
<p><strong>Potential Fixes and Workarounds</strong></p>
<p>The PHP dev team recommends recompiling without the offending flag.</p>
<p>However, you may not be able to do that, for any of various reasons. (You may have installed from a binary package, for instance&nbsp;&mdash; like most people these days.) Or it may simply seem like an excessive hassle. I offer the following patch <strong>as-is, without any guarantee or support</strong>.</p>
<p>First, ensure that you have the latest version of PEAR::Builder. Look in your PEAR/Builder.php file&nbsp;&mdash; On most Linux and Unix installations, this is likely to be in <code>/usr/lib/php/PEAR/Builder.php</code>, or possibly <code>/usr/local/lib/php/PEAR/Builder.php</code>.</p>
<p>On Windows systems, PHP might be installed nearly anywhere, but supposing it&#8217;s in <code>c:\php</code>, then the file you&#8217;re looking for will be in <code>c:\php\PEAR\PEAR\Builder.php</code> (yes, that&#8217;s two PEARs in a row).</p>
<p>Check the &#8220;@version&#8221; line in the big comment block at the beginning of the file; the line you want should be around line 19 or so. If says it&#8217;s less than version 1.38 (the latest one, at the time I&#8217;m writing this post), then try upgrading. Running &#8220;pear upgrade pear&#8221; should work. Then you can install this patch file:</p>
<p><a href="http://kai.mactane.org/software/patch-pear-builder-1.38.txt">patch-pear-builder-1.38.txt</a></p>
<p>Download the patch file and place it somewhere on your machine. Log in and <code>cd</code> to the PEAR directory that contains the Builder.php file. Then run the patch command. In the following example, I&#8217;ve placed the patch file in root&#8217;s home directory:</p>
<p><code>root@finrod:~# <strong>ls</strong><br />
loadlin16c.txt  loadlin16c.zip  patch-pear-builder-1.38.txt<br />
root@finrod:~# <strong>cd /usr/lib/php/PEAR</strong><br />
root@finrod:/usr/lib/php/PEAR# <strong>cp Builder.php Builder.bak.php</strong><br />
root@finrod:/usr/lib/php/PEAR# <strong>patch -p0 < /root/patch-pear-builder-1.38.txt</strong><br />
patching file Builder.php<br />
root@finrod:/usr/lib/php/PEAR# </code></p>
<p>Naturally, if the patch file doesn&#8217;t work for some reason, or it breaks things, you can just <code>cp</code> the backup file back into place.</p>
<p>Please let me know if this patch works for you&nbsp;&mdash; or if it fails horribly, for that matter.</p>
<p>[Updated 2009-06-03: Minor edits for clarity]</p>
]]></content:encoded>
			<wfw:commentRss>http://kagan.mactane.org/blog/2009/05/11/workaround-for-pearpecl-failure-with-message-error-phpize-failed/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>When Have You Accomplished Enough?</title>
		<link>http://kagan.mactane.org/blog/2009/05/10/when-have-you-accomplished-enough/</link>
		<comments>http://kagan.mactane.org/blog/2009/05/10/when-have-you-accomplished-enough/#comments</comments>
		<pubDate>Mon, 11 May 2009 00:36:54 +0000</pubDate>
		<dc:creator>Kai MacTane</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[diary]]></category>
		<category><![CDATA[Dreamwidth]]></category>
		<category><![CDATA[Livejournal]]></category>
		<category><![CDATA[my projects]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[source control]]></category>
		<category><![CDATA[system administration]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://kai.mactane.org/blog/?p=43</guid>
		<description><![CDATA[Okay, let me see if I can take stock of the day: I started off by getting my /etc, /usr/local/bin and /usr/local/sbin, and /var/named directories under version control. That&#8217;s good. Plus I think I&#8217;ve got things set up to where I can upgrade WordPress plugins on my local setup, then reliably push the changes through [...]]]></description>
			<content:encoded><![CDATA[<p>Okay, let me see if I can take stock of the day:</p>
<p>I started off by getting my <code>/etc</code>, <code>/usr/local/bin</code> and <code>/usr/local/sbin</code>, and <code>/var/named</code> directories under version control. That&#8217;s good. Plus I think I&#8217;ve got things set up to where I can upgrade WordPress plugins on my local setup, then reliably push the changes through version control to my live site.</p>
<p>Oh, and my Twitter feed importer is a little prettier, in terms of how it displays how long ago a tweet was posted.</p>
<p>But then there&#8217;s the Live+Press plugin&#8230; I have high hopes that I&#8217;ll be able to use that to automatically crosspost from here to my new Dreamwidth account, but for now, it only seems to communicate with Livejournal. Since there&#8217;s a feature request open in <a href="http://code.google.com/p/livepress/wiki/WishList">the project&#8217;s wish list</a> to make it work with other LJ-codebase sites, I figure I may as well pick that up and run with it.</p>
<p>Of course, that just slows me down on LJ Content Sieve&#8230; <i>*sigh*</i></p>
<p>Because I don&#8217;t have <em>everything</em> done, I feel like I didn&#8217;t accomplish much today. That&#8217;s silly, but knowing that it&#8217;s silly doesn&#8217;t chance my feelings much.</p>
]]></content:encoded>
			<wfw:commentRss>http://kagan.mactane.org/blog/2009/05/10/when-have-you-accomplished-enough/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

