<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   
	 xmlns:podcast='http://ipodder.sourceforge.net/docs/podcast.html'
>
<channel>
    <title>Lot 49: Greg Beaver's blog - PHP</title>
    <link>http://greg.chiaraquartet.net/</link>
    <description>Music, Computers, and all things Greg Beaver</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.3 - http://www.s9y.org/</generator>
    <pubDate>Thu, 27 Mar 2008 14:36:33 GMT</pubDate>

    <image>
        <url>http://greg.chiaraquartet.net/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Lot 49: Greg Beaver's blog - PHP - Music, Computers, and all things Greg Beaver</title>
        <link>http://greg.chiaraquartet.net/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>behold pecl/phar and mighty PHP 5.3, also php|arch and php|tek</title>
    <link>http://greg.chiaraquartet.net/archives/189-behold-peclphar-and-mighty-PHP-5.3,-also-phparch-and-phptek.html</link>
            <category>PHP</category>
    
    <comments>http://greg.chiaraquartet.net/archives/189-behold-peclphar-and-mighty-PHP-5.3,-also-phparch-and-phptek.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=189</wfw:comment>

    <slash:comments>6</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=189</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    
&lt;p&gt;I&#039;ve been a bit busy, my last PHP post was in October (!) but I do have very good news.  Following on the heels of my first php|arch article about the Phar extension in the January issue (&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=646&amp;amp;entry_id=189&quot; title=&quot;http://phparch.com/c/magazine/issue/65&quot;  onmouseover=&quot;window.status=&#039;http://phparch.com/c/magazine/issue/65&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://phparch.com/c/magazine/issue/65&lt;/a&gt;), I&#039;ve been extremely hard at work on perfecting this extension.  As a testament to the strength and excitement surrounding the upcoming 2.0 release of the phar extension, my editor at php|arch became a developer on the phar extension after reading and working on the article (hi Steph).&lt;/p&gt;&lt;p&gt;Today, I released &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=647&amp;amp;entry_id=189&quot; title=&quot;http://pecl.php.net/package/phar/2.0.0a1&quot;  onmouseover=&quot;window.status=&#039;http://pecl.php.net/package/phar/2.0.0a1&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;phar version 2.0.0a1&lt;/a&gt;, the first release of the newly upgraded extension.  This extension is a wholly different animal from the last release, 1.2.3.  While maintaining BC with the 1.2.x version of pecl/phar, this version adds unimaginable new facilities.  The phar extension has transformed from something of a sideshow to a major player, and is being actively considered for inclusion in the core of PHP 5.3.  Major new features in phar 2.0:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Phar now supports tar and zip archives with the same API that is supports phar archives.  Think of phar as something like the PDO of archive file formats.  All phar archives must contain &amp;quot;.phar&amp;quot; in the filename to be executed&lt;/li&gt;&lt;li&gt;Phar has a front controller for web applications that fully handles MIME types, supports mod_rewrite-like functionality with far more flexibility (a php callback is passed the url, it returns the actual file to load) and also the ability to deny access to portions of the phar that are not web-accessible (like library PHP code)&lt;/li&gt;&lt;li&gt;Phar fully solves the problems with current directory and code loading/file loading that plague all other stream wrappers like PHP_Archive and PHK.  This allows running complex applications like phpMyAdmin with no code modification directly from the original .tgz after a rename and the addition of a 20-line stub&lt;/li&gt;&lt;li&gt;Phar supports phar:// stream wrappers in include_path for PHP 5.2+, so your require_once-based applications can be pharred up without code modification&lt;/li&gt;&lt;li&gt;Phar supports creation and modification of data-only tar and zip archives (no executable phar stub) via the PharData class.  Now you can use phar to create and even convert between file formats.  Unlike the zip extension, phar supports bzip2 compression of files, and has no arbitrary limit on open file handles.  Unlike the archive extension in pecl, phar fully supports windows, and is the first PHP extension to deliver read/write support for tar archives on both unix and windows.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In other words, phar 2.0 is the &amp;quot;holy crap&amp;quot; release of phar.  The manual (which is currently almost fully updated to the API, but not yet rebuilt) is at &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=648&amp;amp;entry_id=189&quot; title=&quot;http://www.php.net/phar&quot;  onmouseover=&quot;window.status=&#039;http://www.php.net/phar&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://www.php.net/phar&lt;/a&gt;.  Another way to get to know phar is through the unit tests, which are included in the pecl tarball.&lt;/p&gt;&lt;p&gt;The current release can be downloaded from &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=649&amp;amp;entry_id=189&quot; title=&quot;http://pecl.php.net/get/phar-2.0.0a1.tgz&quot;  onmouseover=&quot;window.status=&#039;http://pecl.php.net/get/phar-2.0.0a1.tgz&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://pecl.php.net/get/phar-2.0.0a1.tgz&lt;/a&gt; or installed via &lt;font face=&quot;courier new,courier,monospace&quot;&gt;pecl install phar&lt;/font&gt; and windows dll can be downloaded from &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=650&amp;amp;entry_id=189&quot; title=&quot;http://pecl4win.php.net/ext.php/php_phar.dll&quot;  onmouseover=&quot;window.status=&#039;http://pecl4win.php.net/ext.php/php_phar.dll&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://pecl4win.php.net/ext.php/php_phar.dll&lt;/a&gt; although it looks like building is having a few hiccups lately.&lt;/p&gt;&lt;p&gt;There are a few known issues to be worked out.  One is compatibility with xdebug, which is a trivial problem involving extension load order.  Once we work this out, xdebug will support stepping through the source of files within a phar archive in your IDE, a killer feature for those who need to debug things.  In PHP 5.3, phar requires a small patch to support the phar stream wrapper in include_path.&lt;/p&gt;&lt;p&gt;...This brings me to PHP 5.3.  I&#039;ve been working hard with Dmitry Stogov, Marcus Boerger (the other phar lead) and a few other list contributors to perfect a patch that will bring stream wrapper support to include_path.  This will mean that you can write a userspace stream wrapper, put its url in your include_path and start using it with relative includes such as what PEAR uses to load its code.  This powerful feature will allow you to write your code in one way, and run it from several different locations.  Expect to see this feature committed in the next week or so, barring major problems.&lt;/p&gt;&lt;p&gt;Lastly, I&#039;m happy to announce that I will be a speaker at this year&#039;s php|tek conference in Chicago.  It is the first time I&#039;ve been able to pull myself away from a crazy-busy quartet schedule to attend a conference, and I look forward very much to meeting as many of you as possible while there.  My talk will be on smart PHP application deployment, and covers PEAR, Phar, and the new Pyrus installer for PEAR2 (&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=651&amp;amp;entry_id=189&quot; title=&quot;http://tek.phparch.com/c/schedule/talk/d2s6/1&quot;  onmouseover=&quot;window.status=&#039;http://tek.phparch.com/c/schedule/talk/d2s6/1&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://tek.phparch.com/c/schedule/talk/d2s6/1&lt;/a&gt;).  Unfortunately, the talk is at the same as Josh Eichorn&#039;s talk on PEAR2 (&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=652&amp;amp;entry_id=189&quot; title=&quot;http://tek.phparch.com/c/schedule/talk/d2s6/0&quot;  onmouseover=&quot;window.status=&#039;http://tek.phparch.com/c/schedule/talk/d2s6/0&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://tek.phparch.com/c/schedule/talk/d2s6/0&lt;/a&gt;), so we may need to work out some way to shuttle folks back and forth, we&#039;ll have to see &lt;img src=&quot;http://greg.chiaraquartet.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;.&lt;/p&gt;&lt;p&gt;Progress of the highest order is being made here, expect to hear more about the goings-on behind phar and PEAR2 as time permits.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 26 Mar 2008 15:58:57 -0700</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/189-guid.html</guid>
    
</item>
<item>
    <title>Microsoft and the .NET saga</title>
    <link>http://greg.chiaraquartet.net/archives/185-Microsoft-and-the-.NET-saga.html</link>
            <category>PHP</category>
    
    <comments>http://greg.chiaraquartet.net/archives/185-Microsoft-and-the-.NET-saga.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=185</wfw:comment>

    <slash:comments>5</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=185</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    
&lt;p&gt;So for the past half year or so, I have been trying on and off to install security updates for Microsoft .NET 1.1 and 2.0.  Each time, it hadn&#039;t worked.  I&#039;ve now disabled automatic updates because they always fail on these two old updates.&lt;/p&gt;&lt;p&gt;Today, I thought maybe I would take a real crack at fixing this issue, and so did an extensive google search for any information on installing/uninstalling/repairing a .NET installation.  There is, not surprisingly, a huge number of problems that people have experienced, this being a Microsoft component.  I finally found a page on the Microsoft site that displays instructions on repairing .NET.&lt;/p&gt;&lt;p&gt;Unfortunately, none of the instructions work.  I tried to uninstall the component, and it tells me source files are not available.  I try re-installing from source, and it tells me that I can&#039;t install.  I try manually deleting and it tells me the file is in use (yes, I&#039;ve disabled anti-virus).  Because this is an MS Windows machine, it&#039;s virtually impossible to tell which file is using the .NET stuff.&lt;/p&gt;&lt;p&gt;Basically, I&#039;m not allowed to do anything productive with the Microsoft stuff on this computer.  This incidentally also means I can&#039;t install VS 2005 because it needs a working .NET installation, so I can&#039;t debug my pecl extensions on Windows.  My next computer is going to be a MacBook Pro, and I&#039;m never looking back.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 29 Oct 2007 13:23:55 -0700</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/185-guid.html</guid>
    
</item>
<item>
    <title>Working towards Pyrus and PEAR2, check it out or miss out</title>
    <link>http://greg.chiaraquartet.net/archives/184-Working-towards-Pyrus-and-PEAR2,-check-it-out-or-miss-out.html</link>
            <category>PEAR</category>
    
    <comments>http://greg.chiaraquartet.net/archives/184-Working-towards-Pyrus-and-PEAR2,-check-it-out-or-miss-out.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=184</wfw:comment>

    <slash:comments>6</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=184</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    &lt;p&gt;Hello all.  It&#039;s been a very busy time for me, what with suddenly having a full gaggle of new cello students to teach at &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=622&amp;amp;entry_id=184&quot; title=&quot;http://www.unl.edu/music&quot;  onmouseover=&quot;window.status=&#039;http://www.unl.edu/music&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;UNL&lt;/a&gt; as well as a fully loaded performance schedule for &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=623&amp;amp;entry_id=184&quot; title=&quot;http://www.chiaraquartet.net&quot;  onmouseover=&quot;window.status=&#039;http://www.chiaraquartet.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;the quartet&lt;/a&gt;, but I have been finding time to code.  My priority has been the &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=624&amp;amp;entry_id=184&quot; title=&quot;http://wiki.pear.php.net/index.php/PEAR2_Standards&quot;  onmouseover=&quot;window.status=&#039;http://wiki.pear.php.net/index.php/PEAR2_Standards&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;push towards PEAR2&lt;/a&gt;, which means that in addition to attempting to mediate the discussions of what should change from PEAR to PEAR2, I&#039;m churning out code to turn its installer, &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=625&amp;amp;entry_id=184&quot; title=&quot;http://svn.pear.php.net/PEAR2/Pyrus&quot;  onmouseover=&quot;window.status=&#039;http://svn.pear.php.net/PEAR2/Pyrus&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Pyrus&lt;/a&gt;, from vaporware into actual code.&lt;/p&gt;&lt;p&gt;Along these lines, there has been significant progress.  The code has been developed on PHP 5.2, but will most likely target PHP 5.3 with the introduction of namespaces.  Pyrus completely revamps the way things are done.  By using &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=626&amp;amp;entry_id=184&quot; title=&quot;http://php.net/spl&quot;  onmouseover=&quot;window.status=&#039;http://php.net/spl&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;SPL&lt;/a&gt; as well as extensions like &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=627&amp;amp;entry_id=184&quot; title=&quot;http://php.net/xmlreader&quot;  onmouseover=&quot;window.status=&#039;http://php.net/xmlreader&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;XMLReader&lt;/a&gt; and &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=628&amp;amp;entry_id=184&quot; title=&quot;http://php.net/xmlwriter&quot;  onmouseover=&quot;window.status=&#039;http://php.net/xmlwriter&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;XMLWriter&lt;/a&gt;, Pyrus manages to pack in far more features inside the code while literally cutting thousands of lines of code.  The biggest loser has been the package.xml handling code.  More than 2500 lines of code have gone byebye, but the API for reading from and creating package.xml is now as intuitive or more intuitive than simplexml.&lt;/p&gt;&lt;p&gt;In addition, using interfaces, a few design patterns and some clever iterators, adding support for a customized packaging solution is a matter of creating a &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=629&amp;amp;entry_id=184&quot; title=&quot;http://svn.pear.php.net/wsvn/PEARSVN/Pyrus/trunk/src/Package/ICreator.php?op=file&amp;amp;rev=0&amp;amp;sc=0&quot;  onmouseover=&quot;window.status=&#039;http://svn.pear.php.net/wsvn/PEARSVN/Pyrus/trunk/src/Package/ICreator.php?op=file&amp;amp;rev=0&amp;amp;sc=0&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;class with a few lines of code&lt;/a&gt; that accepts file contents and where to save them.  Pyrus does &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=630&amp;amp;entry_id=184&quot; title=&quot;http://svn.pear.php.net/wsvn/PEARSVN/Pyrus/trunk/src/Package/Creator.php?op=file&amp;amp;rev=0&amp;amp;sc=0&quot;  onmouseover=&quot;window.status=&#039;http://svn.pear.php.net/wsvn/PEARSVN/Pyrus/trunk/src/Package/Creator.php?op=file&amp;amp;rev=0&amp;amp;sc=0&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;the hard work&lt;/a&gt; of constructing the relative path of files within the archive and pre-processing their contents using file tasks.&lt;/p&gt;&lt;p&gt;The code is simple enough that I wrote &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=631&amp;amp;entry_id=184&quot; title=&quot;http://svn.pear.php.net/wsvn/PEARSVN/sandbox/SimpleChannelServer/src/?rev=0&amp;amp;sc=0&quot;  onmouseover=&quot;window.status=&#039;http://svn.pear.php.net/wsvn/PEARSVN/sandbox/SimpleChannelServer/src/?rev=0&amp;amp;sc=0&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;a simple channel server&lt;/a&gt; with no dependencies except for Pyrus in less than 6 hours (just finished the initial work when my battery ran out today) that allows small channels to work without needing a database or even PHP on the channel server, as all the REST files and releases can be generated and then uploaded from a dev server.&lt;/p&gt;&lt;p&gt;In short, it&#039;s an exciting time to be involved in &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=632&amp;amp;entry_id=184&quot; title=&quot;http://pear.php.net&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PEAR&lt;/a&gt;.  If you&#039;ve been ignoring PEAR, perhaps it is time to take another look?&lt;/p&gt;&lt;p&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sat, 22 Sep 2007 22:25:26 -0700</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/184-guid.html</guid>
    
</item>
<item>
    <title>phar gets a major speed boost with version 1.2.1</title>
    <link>http://greg.chiaraquartet.net/archives/182-phar-gets-a-major-speed-boost-with-version-1.2.1.html</link>
            <category>PHP</category>
    
    <comments>http://greg.chiaraquartet.net/archives/182-phar-gets-a-major-speed-boost-with-version-1.2.1.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=182</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=182</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    
&lt;p&gt;A few minutes ago, I released &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=607&amp;amp;entry_id=182&quot; title=&quot;http://pecl.php.net/package/phar&quot;  onmouseover=&quot;window.status=&#039;http://pecl.php.net/package/phar&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;phar&lt;/a&gt; version 1.2.1.  phar is a PHP extension that allows the creation of complete filesystems within a single physical file.  In addition, a bootstrap stub written in PHP can be used to run a phar archive as if it were an executable file or shell script.  Documentation on its usage and how to create phars is at &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=608&amp;amp;entry_id=182&quot; title=&quot;http://php.net/phar&quot;  onmouseover=&quot;window.status=&#039;http://php.net/phar&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://php.net/phar&lt;/a&gt; in the PHP manual.&lt;/p&gt;&lt;p&gt;This version of phar fixes a number of issues as documented in my last blog post, as well as a quite few issues that Marcus fixed in relation to setting the bootstrap stub, using phar&#039;s phar.extract_list INI parameter with an apache module and others (full list &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=609&amp;amp;entry_id=182&quot; title=&quot;http://pecl.php.net/package-changelog.php?package=phar&amp;amp;release=1.2.1&quot;  onmouseover=&quot;window.status=&#039;http://pecl.php.net/package-changelog.php?package=phar&amp;amp;release=1.2.1&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;here&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;In addition, I ran callgrind on the thing and found a few places it could use some trimming of the fat, and was able to cut down the number of stream operations by a factor of 2x when using phar in the most common use case, reading uncompressed files.  In addition, I cut another 2x for phars that have an MD5 or SHA1 signature.&lt;/p&gt;&lt;p&gt;This is quite a good release, looking forward to hearing your stories of using it.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Wed, 29 Aug 2007 21:15:23 -0700</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/182-guid.html</guid>
    
</item>
<item>
    <title>phar work, and a crazy summer</title>
    <link>http://greg.chiaraquartet.net/archives/181-phar-work,-and-a-crazy-summer.html</link>
            <category>PHP</category>
    
    <comments>http://greg.chiaraquartet.net/archives/181-phar-work,-and-a-crazy-summer.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=181</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=181</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    
&lt;p&gt;Well it&#039;s been the craziest summer of my entire life (see &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=598&amp;amp;entry_id=181&quot; title=&quot;http://www.chiaraquartet.net&quot;  onmouseover=&quot;window.status=&#039;http://www.chiaraquartet.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Chiara Quartet website&lt;/a&gt; for the skinny).  Of course, at the moment my schedule went into overdrive, two major issues &amp;quot;hit the fan&amp;quot; in the PHP world, in that Marcus proposed the phar extension for inclusion in the core of PHP, and Arnaud and I proposed major changes to the PEAR coding standards for the new PEAR2 repository.  More on PEAR2 later.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=599&amp;amp;entry_id=181&quot; title=&quot;http://pecl.php.net/package/phar&quot;  onmouseover=&quot;window.status=&#039;http://pecl.php.net/package/phar&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;phar&lt;/a&gt; is an interesting beast.  Right before the summer began, I received a private email from a user who noticed that when trying to package together more than around 270 files into the same phar, his OS X would run out of available file handles to use.  This is a problem that Marcus and I had suspected could be an issue based on the reports of alpha testers, but had not yet seen in the wild.&lt;/p&gt;&lt;p&gt;Marcus did a bunch of work on improving the stability of phar earlier in the spring and summer, bringing us to phar version 1.2.0 in late May, but did not have time to look at this complicated issue&lt;/p&gt;&lt;p&gt;So, early this week I sat down and buried myself inside the computer for many hours, finally achieving victory a few minutes ago.  The process was arduous for many reasons.  First, I needed to write better introspection, so I created a &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=600&amp;amp;entry_id=181&quot; title=&quot;http://cvs.php.net/viewvc.cgi/pecl/phar/gdbhelp?view=markup&quot;  onmouseover=&quot;window.status=&#039;http://cvs.php.net/viewvc.cgi/pecl/phar/gdbhelp?view=markup&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;gdb helper file&lt;/a&gt; similar to the .gdbinit bundled with PHP that would allow me to browse open phars, open file handles, and a phar file entry very quickly.&lt;/p&gt;&lt;p&gt;Next, I had to track down the source of the problem.  It turned out to be in the implementation of flushing to disk, which aggregates all unmodified and modified phar entries and then pushes them into a new phar on the disk, generates the manifest, calculates a hash, yadda yadda.  After this act, every single file entry in the phar has an open file pointer for a temporary file containing the file&#039;s contents, even the ones that were unused!  This was bad, so I created a simple routine to check for unused files and close them during flush.&lt;/p&gt;&lt;p&gt;Thanks to our voluminous unit tests (with upwards of 90% code coverage according to gcov), I found a large issue in rename, and also discovered that I would need to implement a just-in-time re-opening of the file handle.  At the same time, I discovered a subtle coordination issue with compression where a newly compressed file was being treated as compressed before the compression could actually occur.  After fixing this, &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=601&amp;amp;entry_id=181&quot; title=&quot;http://news.php.net/php.pecl.cvs/8437&quot;  onmouseover=&quot;window.status=&#039;http://news.php.net/php.pecl.cvs/8437&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;I finally had my patch&lt;/a&gt;.  Further real-life testing is needed before I trust that this is the version of phar that will be released as 1.2.1, but it&#039;s a grand step closer to fully robust.&lt;/p&gt;&lt;p&gt;Perhaps I&#039;m the only person who thinks this is exciting, but it&#039;s been an issue since the earliest versions of phar with write support, and now is an issue no more.  This makes the next step of profiling and comparing to other solutions a lot more palatable to me, as I much prefer stability before optimization for all of the obvious reasons.&lt;/p&gt;&lt;p&gt;By the way, for those of you wondering how to make the transition from programming in PHP to programming PHP itself, I can&#039;t claim to be an expert, but I can tell you who is.  Sara Golemon.  Her book, &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=602&amp;amp;entry_id=181&quot; title=&quot;http://www.amazon.com/Extending-Embedding-PHP-Developers-Library/dp/067232704X&quot;  onmouseover=&quot;window.status=&#039;http://www.amazon.com/Extending-Embedding-PHP-Developers-Library/dp/067232704X&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Extending and Embedding PHP&lt;/a&gt; is an indispensable resource for anyone who wants to either write extensions or dig into the source of PHP itself.  Combine this with the (free) search facility of &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=603&amp;amp;entry_id=181&quot; title=&quot;http://lxr.php.net/&quot;  onmouseover=&quot;window.status=&#039;http://lxr.php.net/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;lxr.php.net &lt;/a&gt;and a clever use of grep, and you&#039;re well on your way to being a PHP internals coder with very little extra effort.  Sara&#039;s book is worth at least twice the cover price, and I recommend it even to those who have no interest in programming extensions, as understanding a bit (or more) of the internals of PHP is worth its weight in gold when you are making design choices for your applications or libraries.&lt;br /&gt; &lt;/p&gt;
 
    </content:encoded>

    <pubDate>Thu, 16 Aug 2007 22:06:08 -0700</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/181-guid.html</guid>
    
</item>
<item>
    <title>multiple __HALT_COMPILER(); no longer raises notices PHP 5.2.2+</title>
    <link>http://greg.chiaraquartet.net/archives/180-multiple-__HALT_COMPILER;-no-longer-raises-notices-PHP-5.2.2+.html</link>
            <category>PHP</category>
    
    <comments>http://greg.chiaraquartet.net/archives/180-multiple-__HALT_COMPILER;-no-longer-raises-notices-PHP-5.2.2+.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=180</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=180</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    &lt;p&gt;A quick note about an obscure problem peculiar to PHP files that make use of PHP 5&#039;s new __HALT_COMPILER(); token.  Prior to PHP 5.2.2, if you included two files that contained the __HALT_COMPILER(); token, you would get a notice that __COMPILER_HALT_OFFSET__ was already defined.&lt;/p&gt;&lt;p&gt;This posed a rather large problem for the phar file format, which makes use of __HALT_COMPILER();.  Essentially, this eliminated any possibility of using phar as a library format.&lt;/p&gt;&lt;p&gt;However, never fear, your trusty Greg is here!&lt;/p&gt;&lt;p&gt;With &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=590&amp;amp;entry_id=180&quot; title=&quot;http://news.php.net/php.zend-engine.cvs/5710&quot;  onmouseover=&quot;window.status=&#039;http://news.php.net/php.zend-engine.cvs/5710&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;this patch&lt;/a&gt; to PHP 5 and &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=591&amp;amp;entry_id=180&quot; title=&quot;http://news.php.net/php.zend-engine.cvs/5867&quot;  onmouseover=&quot;window.status=&#039;http://news.php.net/php.zend-engine.cvs/5867&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;this patch&lt;/a&gt; to PHP 6, the problem is eliminated.  This patch will also affect applications like PHK that utilize the same principle.  Most of you won&#039;t notice the difference until Pyrus, the next generation of the PEAR Installer, is released. &lt;img src=&quot;http://greg.chiaraquartet.net/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Wed, 27 Jun 2007 19:16:18 -0700</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/180-guid.html</guid>
    
</item>
<item>
    <title>quick review of Pixy vulnerability scanner for PEAR users</title>
    <link>http://greg.chiaraquartet.net/archives/178-quick-review-of-Pixy-vulnerability-scanner-for-PEAR-users.html</link>
            <category>PEAR</category>
    
    <comments>http://greg.chiaraquartet.net/archives/178-quick-review-of-Pixy-vulnerability-scanner-for-PEAR-users.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=178</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=178</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    Just a quick note, I tried out the Pixy XSS and SQLI Scanner (&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=586&amp;amp;entry_id=178&quot; title=&quot;http://pixybox.seclab.tuwien.ac.at/pixy/index.php&quot;  onmouseover=&quot;window.status=&#039;http://pixybox.seclab.tuwien.ac.at/pixy/index.php&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://pixybox.seclab.tuwien.ac.at/pixy/index.php&lt;/a&gt;) on a few simple PEAR files.  On the first, I got a java exception, on the second it was unable to resolve the simplest of includes (no ability to resolve include_path).&lt;p&gt;In short, the thing is useless for anything written using PEAR.  Fun!&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Fri, 22 Jun 2007 07:13:57 -0700</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/178-guid.html</guid>
    
</item>
<item>
    <title>Update to libxml2 in PHP - progress hath been acquired</title>
    <link>http://greg.chiaraquartet.net/archives/177-Update-to-libxml2-in-PHP-progress-hath-been-acquired.html</link>
            <category>PHP</category>
    
    <comments>http://greg.chiaraquartet.net/archives/177-Update-to-libxml2-in-PHP-progress-hath-been-acquired.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=177</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=177</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    &lt;p&gt;Shortly after my last blog post, I got a very helpful email from Rob Richards, who offered to help me with my trials and tribulations.  He took a quick look at the schema for package.xml, and a sample package.xml and was able to find two small tweaks to make parsing actually work (gasp).  This changes everything.  I am abandoning the creation of a relax NG schema in favor of the battle-tested xsd.  The error messages for xsd validation are far clearer than the rng ones.  For instance with this script:&lt;/p&gt;&lt;p&gt;&lt;div class=&quot;php&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$a&lt;/span&gt; = &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; DOMDocument&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$a&lt;/span&gt;-&amp;gt;&lt;span style=&quot;color: #006600;&quot;&gt;load&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;C:/development/pear-core/package2.xml&#039;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;libxml_use_internal_errors&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$a&lt;/span&gt;-&amp;gt;&lt;span style=&quot;color: #006600;&quot;&gt;schemaValidate&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;C:/devel/pearweb/public_html/dtd/package-2.0.xsd&#039;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #b1b100;&quot;&gt;foreach&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;libxml_get_errors&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;as&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;$error&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &lt;a href=&quot;http://www.php.net/echo&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Line &quot;&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;$error&lt;/span&gt;-&amp;gt;&lt;span style=&quot;color: #006600;&quot;&gt;line&lt;/span&gt;, &lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;: &#039;&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;$error&lt;/span&gt;-&amp;gt;&lt;span style=&quot;color: #006600;&quot;&gt;message&lt;/span&gt;, &lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&quot;&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;&lt;/p&gt;&lt;p&gt;and the &amp;lt;date&amp;gt; tag moved to the wrong location, I get this error:&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;Line 565: Element &#039;{http://pear.php.net/dtd/package-2.0}date&#039;: This element is not expected. Expected is ( {http://pear.php.net/dtd/package-2.0}stability ).&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Fantastic!  The error actually tells you what the problem is and gives a useful clue on how to fix it - this is *exactly* what I need to strip out the thousands of lines of unnecessary schema validation code in Pyrus (hallelujah).&lt;/p&gt;&lt;p&gt;I still haven&#039;t worked out the problems I was having with rng, perhaps another update on this later.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 05 Jun 2007 20:36:53 -0700</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/177-guid.html</guid>
    
</item>
<item>
    <title>W3C Schema/Relax NG/DTD seem to be totally useless in PHP, help?</title>
    <link>http://greg.chiaraquartet.net/archives/176-W3C-SchemaRelax-NGDTD-seem-to-be-totally-useless-in-PHP,-help.html</link>
            <category>PHP</category>
    
    <comments>http://greg.chiaraquartet.net/archives/176-W3C-SchemaRelax-NGDTD-seem-to-be-totally-useless-in-PHP,-help.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=176</wfw:comment>

    <slash:comments>5</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=176</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    
&lt;p&gt;&lt;b&gt;Update&lt;/b&gt;: I&#039;ve found a solution that will work for Pyrus.  See &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=583&amp;amp;entry_id=176&quot; title=&quot;http://greg.chiaraquartet.net/archives/177-Update-to-libxml2-in-PHP-progress-hath-been-acquired.html&quot;  onmouseover=&quot;window.status=&#039;http://greg.chiaraquartet.net/archives/177-Update-to-libxml2-in-PHP-progress-hath-been-acquired.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;my next blog post&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;While working on Pyrus, the next generation installer for PEAR, I&#039;ve been attempting to figure out how to leverage PHP&#039;s excellent new libxml-based XML validation to speed up package.xml validation in PEAR.  To my great surprise and annoyance, I am starting to believe that this is the wrong thing to do.&lt;/p&gt;&lt;p&gt;Originally, I designed a W3C Schema for package.xml 2.0 using XMLSpy, but found that libxml is unable to handle the schema whatsoever.  Instead, with the release of PEAR 1.4.0 I designed a schema validator based on the array functions of PHP and the unserialized array generated by &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=584&amp;amp;entry_id=176&quot; title=&quot;http://pear.php.net/XML_Serializer&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/XML_Serializer&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;XML_Serializer&lt;/a&gt;&#039;s XML_Unserializer class.  Because this is not an elegant validator of W3C Schema or Relax NG, I called it &amp;quot;stupidSchemaValidate()&amp;quot;.  This is used to validate the basic structure of the XML level-by-level, and so requires many function calls.&lt;/p&gt;&lt;p&gt;I never considered using DTD because it can&#039;t handle namespaces.&lt;/p&gt;&lt;p&gt;Now that I am working on the PHP 5+ implementation of Pyrus, the first thing I thought I might do is create a Relax NG schema that the PHP libxml can handle.  After an entire day of fighting with the thing, I&#039;ve managed to discover more than 10 simple and &lt;b&gt;valid&lt;/b&gt; Relax NG schema that simply don&#039;t work with the version of libxml distributed with PHP 5.2.3.  In addition, with helpful error messages like &amp;quot;Expecting name, got nothing here,&amp;quot; even with the use of &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=585&amp;amp;entry_id=176&quot; title=&quot;http://www.php.net/libxml_user_internal_errors&quot;  onmouseover=&quot;window.status=&#039;http://www.php.net/libxml_user_internal_errors&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;libxml_use_internal_errors()&lt;/a&gt; I find the error reporting to be excruciatingly useless.&lt;/p&gt;&lt;p&gt;With my hacked-together stupidSchemaValidate(), I get wonderfully clear error messages like &amp;quot;unexpected &amp;lt;channel&amp;gt;, expecting one of &amp;lt;version&amp;gt;, &amp;lt;date&amp;gt; on line 23&amp;quot; which make it not just easy but simple to debug broken package.xml formatting.&lt;/p&gt;&lt;p&gt;Is there anyone out there who has had any luck getting a supposedly smart external validation tool to print remotely helpful error messages on validating a complex .xml with PHP?&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 05 Jun 2007 09:19:31 -0700</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/176-guid.html</guid>
    
</item>
<item>
    <title>pear.php.net is now mirrored</title>
    <link>http://greg.chiaraquartet.net/archives/174-pear.php.net-is-now-mirrored.html</link>
            <category>PEAR</category>
    
    <comments>http://greg.chiaraquartet.net/archives/174-pear.php.net-is-now-mirrored.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=174</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=174</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    &lt;p&gt;It&#039;s been a while since my last blog post, I&#039;ve found myself with more limited free time than usual and have thus had to focus on the really important things.  I was recently elected president of PEAR (I ran unopposed, so it&#039;s a durn good thing I was elected), and this has resulted in a flurry of activity.  A lot of energy is going into revamping the PEAR website, &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=567&amp;amp;entry_id=174&quot; title=&quot;http://pear.php.net&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://pear.php.net&lt;/a&gt;.  At this stage, most of the changes are not visible to the naked eye, as we are writing unit tests and refactoring gradually.  However, one change will be highly visible.&lt;/p&gt;&lt;p&gt;I&#039;m excited to announce the first two mirrors of pear.php.net are now actively mirroring the installer REST files and actual .tgz files of package releases.  They are &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=568&amp;amp;entry_id=174&quot; title=&quot;http://us.pear.php.net&quot;  onmouseover=&quot;window.status=&#039;http://us.pear.php.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://us.pear.php.net&lt;/a&gt; (provided by Joshua Eichorn and bluga.net) and &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=569&amp;amp;entry_id=174&quot; title=&quot;http://de.pear.php.net&quot;  onmouseover=&quot;window.status=&#039;http://de.pear.php.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://de.pear.php.net&lt;/a&gt; (provided by Christian Weiske).  The option exists at a future date of mirroring the entire website, but this will not be possible without further changes to the infrastructure.&lt;/p&gt;&lt;p&gt;To try out one of the new mirrors, simply run:&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;pear config-set preferred_mirror us.pear.php.net&lt;/font&gt;&lt;/p&gt;&lt;p&gt;or&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;pear config-set preferred_mirror de.pear.php.net&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Then, continue using the installer normally.  Users in Europe may notice a considerable performance increase by using de.pear.php.net.  Ain&#039;t progress great?&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sat, 02 Jun 2007 08:27:04 -0700</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/174-guid.html</guid>
    
</item>
<item>
    <title>pear.php.net is now mirrored</title>
    <link>http://greg.chiaraquartet.net/archives/175-pear.php.net-is-now-mirrored.html</link>
            <category>PEAR</category>
    
    <comments>http://greg.chiaraquartet.net/archives/175-pear.php.net-is-now-mirrored.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=175</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=175</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    
&lt;p&gt;It&#039;s been a while since my last blog post, I&#039;ve found myself with more limited free time than usual and have thus had to focus on the really important things.  I was recently elected president of PEAR (I ran unopposed, so it&#039;s a durn good thing I was elected), and this has resulted in a flurry of activity.  A lot of energy is going into revamping the PEAR website, &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=573&amp;amp;entry_id=175&quot; title=&quot;http://pear.php.net&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://pear.php.net&lt;/a&gt;.  At this stage, most of the changes are not visible to the naked eye, as we are writing unit tests and refactoring gradually.  However, one change will be highly visible.&lt;/p&gt;&lt;p&gt;I&#039;m excited to announce the first two mirrors of pear.php.net are now actively mirroring the installer REST files and actual .tgz files of package releases.  They are &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=574&amp;amp;entry_id=175&quot; title=&quot;http://us.pear.php.net&quot;  onmouseover=&quot;window.status=&#039;http://us.pear.php.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://us.pear.php.net&lt;/a&gt; (provided by Joshua Eichorn and bluga.net) and &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=575&amp;amp;entry_id=175&quot; title=&quot;http://de.pear.php.net&quot;  onmouseover=&quot;window.status=&#039;http://de.pear.php.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://de.pear.php.net&lt;/a&gt; (provided by Christian Weiske).  The option exists at a future date of mirroring the entire website, but this will not be possible without further changes to the infrastructure.&lt;/p&gt;&lt;p&gt;To try out one of the new mirrors, simply run:&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;pear config-set preferred_mirror us.pear.php.net&lt;/font&gt;&lt;/p&gt;&lt;p&gt;or&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;pear config-set preferred_mirror de.pear.php.net&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Then, continue using the installer normally.  Users in Europe may notice a considerable performance increase by using de.pear.php.net.  Ain&#039;t progress great?&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sat, 02 Jun 2007 08:27:04 -0700</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/175-guid.html</guid>
    
</item>
<item>
    <title>Is anything working in PEAR?</title>
    <link>http://greg.chiaraquartet.net/archives/173-Is-anything-working-in-PEAR.html</link>
            <category>PEAR</category>
    
    <comments>http://greg.chiaraquartet.net/archives/173-Is-anything-working-in-PEAR.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=173</wfw:comment>

    <slash:comments>5</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=173</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    
&lt;p&gt;Yes.  If you have been living on a desert island and haven&#039;t already done so, it&#039;s time to take another look at &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=559&amp;amp;entry_id=173&quot; title=&quot;http://pear.php.net&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://pear.php.net&lt;/a&gt; to see what is up.&lt;/p&gt;&lt;p&gt;Newly elected PEAR Group member Josh Eichorn posted a blog entry, &amp;quot;&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=560&amp;amp;entry_id=173&quot; title=&quot;http://blog.joshuaeichorn.com/archives/2007/05/03/how-would-you-improve-pear/&quot;  onmouseover=&quot;window.status=&#039;http://blog.joshuaeichorn.com/archives/2007/05/03/how-would-you-improve-pear/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;How would you improve PEAR&lt;/a&gt;&amp;quot; recently.  I was impressed with the response, it seems many people outside of PEAR are monitoring it and have thought about how to make it better.  However, I was also not so impressed with the poor job we&#039;ve done letting people know about the newest improvements to PEAR.  In my comments, I listed as many as I could think of, but Josh pointed out that I would do well to post these comments in a more public setting, so here goes.&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;p&gt;For those who are wondering, most of the suggestions made in the comments to Josh&#039;s blog entry are in fact already implemented or in the planning stages.  There is really only one that is not:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;SVN.  CVS is here to stay, as we are dependent on cvs.php.net.  &lt;b&gt;HOWEVER&lt;/b&gt;, someone willing to donate dedicated hardware would pique our interest in having optional subversion hosting.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Things that are implemented already:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;pear installer is capable of modifying php.ini, but it does require a binary package to be created with the dll.&lt;/li&gt;&lt;li&gt;PEAR_Exception is the error/exception base class.&lt;/li&gt;&lt;li&gt;Mentoring.  The new constitution (&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=561&amp;amp;entry_id=173&quot; title=&quot;http://pear.php.net/manual/en/constitution.php&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/manual/en/constitution.php&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://pear.php.net/manual/en/constitution.php&lt;/a&gt;) requires mentoring of new developers.&lt;/li&gt;&lt;li&gt;package tags.  This was recently implemented, in anticipation of the new collectives, and other useful purposes.&lt;/li&gt;&lt;li&gt;deprecated/unmaintained packages have been supported for a while now (see &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=562&amp;amp;entry_id=173&quot; title=&quot;http://pear.php.net/DB&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/DB&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://pear.php.net/DB&lt;/a&gt; for an example)&lt;/li&gt;&lt;li&gt;lightweight packages.  See &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=563&amp;amp;entry_id=173&quot; title=&quot;http://pear.php.net/MDB2&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/MDB2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://pear.php.net/MDB2&lt;/a&gt; for an example.  All of the database drivers are decoupled into subpackages.  Structures_DataGrid is the most complex example of this de-coupling.  The technical capability was not present before PEAR version 1.4.9 to handle this properly, and so most packages have not yet implemented this functionality.&lt;/li&gt;&lt;/ol&gt;&lt;p /&gt;&lt;p&gt;The social issues are a real problem.  I plan to make this my primary purpose as the PEAR president, separate from my work as a developer.  We&#039;ll see how it goes, but I see a strong momentum shift in the makings here, which has been my dream for several years.  It&#039;s exciting to see it moving forward so dramatically.  I hope that more developers who see the potential and the things that can happen will join, it is only through the force of the will of people who believe in things like civility that PEAR will shift its culture to one that encourages innovation as well as stability.&lt;/p&gt;&lt;p&gt;One thing you can currently depend upon in PEAR that will never be changing is that packages marked stable will always work in a similar way, such that you won&#039;t find applications based on them suddenly breaking on upgrade.  Innovation can always be provided without destroying the work of your users.  Stay tuned for details of how things will be changing.&lt;/p&gt;&lt;p&gt;One of the paths that PEAR is actively recruiting developers for is converting a few key packages into new PHP5+ based code  (this means you).  For example, HTTP_Request is a commonly used package that needs to be re-coded for PHP 5.  We need a good database abstraction layer for PHP 5, and the PEAR Installer is almost ready for its next incarnation (codename Pyrus), details are on the roadmap (yes, another new feature of PEAR) at &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=564&amp;amp;entry_id=173&quot; title=&quot;http://pear.php.net/bugs/roadmap.php?package=PEAR&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/bugs/roadmap.php?package=PEAR&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://pear.php.net/bugs/roadmap.php?package=PEAR&lt;/a&gt; for version 2.0.0, and code in CVS at &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=565&amp;amp;entry_id=173&quot; title=&quot;http://cvs.php.net/viewvc.cgi/pear-core/PEAR2&quot;  onmouseover=&quot;window.status=&#039;http://cvs.php.net/viewvc.cgi/pear-core/PEAR2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://cvs.php.net/viewvc.cgi/pear-core/PEAR2&lt;/a&gt;.  If you see a feature that you would like to implement, grab yourself a new account, assign it to yourself and upload a patch (yes, another new feature of PEAR).  If you do not already have an account, head on over to&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=566&amp;amp;entry_id=173&quot; title=&quot;http://pear.php.net/account-request-vote.php&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/account-request-vote.php&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt; http://pear.php.net/account-request-vote.php&lt;/a&gt;.  This form can be used to get an account for voting in general elections as well as opening and commenting on bugs or uploading patches (yes, another new feature of PEAR).&lt;/p&gt;&lt;p&gt;It&#039;s a good time to get involved with PEAR, there&#039;s a lot of renewed vigor, and no ceiling in sight.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sat, 05 May 2007 21:38:10 -0700</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/173-guid.html</guid>
    
</item>
<item>
    <title>10 golden rules for running an open source project</title>
    <link>http://greg.chiaraquartet.net/archives/171-10-golden-rules-for-running-an-open-source-project.html</link>
            <category>PHP</category>
    
    <comments>http://greg.chiaraquartet.net/archives/171-10-golden-rules-for-running-an-open-source-project.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=171</wfw:comment>

    <slash:comments>5</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=171</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    
&lt;p&gt;Tobias Schlitt posted &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=531&amp;amp;entry_id=171&quot; title=&quot;http://schlitt.info/applications/blog/index.php?/archives/541-10-golden-rules-for-starting-with-open-source.html&quot;  onmouseover=&quot;window.status=&#039;http://schlitt.info/applications/blog/index.php?/archives/541-10-golden-rules-for-starting-with-open-source.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;an interesting list of rules&lt;/a&gt; on how to get started in an open source project.  This got me immediately thinking about an interesting trend I&#039;ve observed  since I dipped my finger in the open source well.  Often, helpful tips on what to do when joining a project are provided by experienced open source developers for the newbies, in the effort to make things easier for all.&lt;/p&gt;&lt;p&gt;However, even more important, in my view, is how an existing open source project reacts to an influx of new users.  Do we chide them for lack of knowledge?  Set up a mesh of obscure unspoken rules?  How about yelling RTFM triumphantly?  Marking a bug as bogus with a sarcastic joke?  I am personally guilty of all of the above in my time.&lt;/p&gt;&lt;p&gt;What surprises me in retrospect is that I didn&#039;t really recognize the point where I crossed the line from simply contributing to an open source project to when I started running it.  The fact is, when you don&#039;t have the karma (to borrow Toby&#039;s definition), nobody cares if you make a little joke here or there.  Once you are a representative of a project, what you say and do matters, and things can get blown all out of proportion.  So, here are a few rules for people &amp;quot;with the karma&amp;quot; that I&#039;ve learned.&lt;/p&gt;&lt;p&gt;You might be thinking &amp;quot;I don&#039;t run an open source project&amp;quot; but in many cases, you become a representative (and therefore one of the people who run it) of the project the instant you achieve enough karma to commit code to CVS, so this post applies to just about all of us!&lt;/p&gt;&lt;h1&gt;1. If you must criticize, criticize with a gentle and humble tone&lt;/h1&gt;&lt;p&gt;I can&#039;t emphasize the importance of this rule too much.  It takes courage to approach an open source project and to suggest that these people who have been around doing this for much longer should change something, especially since chances are the bug report/suggestion/whatever will sound stupid if the user is an outsider. In addition, users who are derided have been known to go to extraordinary lengths to &amp;quot;get back&amp;quot; at the project that shunned them, even if no shunning was intended.  If you have to mark a bug as bogus, I&#039;ve found it is not only nice but necessary to apologize for the inconvenience, and to provide a complete explanation.  If you can&#039;t provide one, re-examine your assumptions: maybe there is some merit to the bogus report.  In my experience, nobody complains if you bump a bug to a feature request and pop it to the next release cycle.  If you have to say RTFM, don&#039;t.  Just post a link to the manual page and a brief sentence describing the technical details of the solution the user needs to use, without implying anything about the user&#039;s intelligence, preferrably without any emotional content.  You never know, this user may turn out to be your most valued developer a year or two down the line&lt;/p&gt;&lt;h1&gt;2. Unless the evidence suggests otherwise, assume that users you don&#039;t know are not interested in committing to the project&lt;/h1&gt;&lt;p&gt;The single most annoying thing, in my experience, is when a developer pops up out of nowhere and offers to help maintain a package, even emailing back and forth a few ideas, only to disappear when karma is granted.  In my experience, developers look at open source a bit like relationships: easy dates don&#039;t always make the best spouses.  The work it takes to get to know a project, to develop trust through the quality of code, to basically endure a trial by fire instills a well-deserved pride from the developers who survive it, and garners a longer term commitment.  By all means, accept help from developers, but if a user isn&#039;t being persistent, reporting bugs, requesting new features - and providing patches - it means they would rather you fix the problems for them.  Before I understood this basic truth of open source, I was very frustrated finding developers to help out.  Now, new devs are popping up with a surprising regularity.&lt;/p&gt;&lt;h1&gt;3. Despite the evidence, it&#039;s probably your fault&lt;/h1&gt;&lt;p&gt;If more than one user asks the same question, even though the manual is there, and there is an FAQ entry, this doesn&#039;t necessarily mean that the users are all stupid.  Most likely, if you browse to the project homepage, and there is no obvious way to search for answers, or the answer is buried 6 clicks deep and requires prior knowledge of manual structure to access, it&#039;s probably your fault.  Use the innocent &amp;quot;dumb&amp;quot; questions of average users to gauge usability issues with the project.  You might find that there is a simple restructuring that will eliminate the annoying questions and attract better developers in one wonderful patch set.&lt;/p&gt;&lt;h1&gt;4. Follow the rules you apply to those with lower karma!&lt;/h1&gt;&lt;p&gt;The temptation to abuse your power is great in all positions of power.  Humans like to do things that others cannot do, even if it&#039;s simply because it is a pain to follow the rules.  This, by the way, should tell you something about the rules (see rule 5).  If you don&#039;t follow the rules you set for others, you are corrupt. It&#039;s unfortunate, but not complicated, and almost impossible to dig yourself out of.  Corrupted people lose community standing and damage the essence of the project they are running, even if their intentions are generally good.&lt;/p&gt;&lt;h1&gt;5. Don&#039;t apply new rules casually, and simplify if possible&lt;/h1&gt;&lt;p&gt;Certainly, as an open source project grows, rules can be useful for creating structure, but often the rule would be unnecessary because the infrastructure (communication methods email/wiki/forum, bug tracker, manual) is responsible for the problem.  For instance, there was a lot of griping on pear-dev about accepting/rejecting packages before Toby Schlitt coded the PEPr mechanism.  Many political solutions can be fixed with a clever technical implementation.  However, try not to &amp;quot;legislate&amp;quot; through your technical solutions.  For instance, the PEAR installer enforces a number of PEAR-specific coding conventions in package.xml, and does so more in the latest 1.4.x/1.5.x installer.  Although helpful for PEAR developers when releasing through pear.php.net, these technical solutions to a political problem are in fact now causing more trouble than they are worth for PEAR channels outside of PEAR.&lt;/p&gt;&lt;h1&gt;6. Assume everything you ever say will become permanent and don&#039;t say things that will come back to haunt you&lt;/h1&gt;&lt;p&gt;Not sure this needs elaboration.  Let&#039;s just say stupid flame wars, personal attacks, cursing - these all fall under this rule&#039;s umbrella.&lt;/p&gt;&lt;h1&gt;7. People like to improve their code, and like coding standards&lt;/h1&gt;&lt;p&gt;Many blog posts I have read recently say they &amp;quot;hate&amp;quot; this or that aspect of some other project&#039;s coding standards.  I used to get into the religious battle (for me it was the added bloat of spaces vs. tabs - until I got high speed internet), but the fact is coding standards make it more fun to code.  People might complain about them, but it&#039;s a passing thing.  Don&#039;t even insist on them, just calmly correct the mistakes and even the most fiery zealots will come around to reason.  Suggestions to improve code are universally well-received if delivered with respect.  Honest!&lt;/p&gt;&lt;h1&gt;8. Assume there will be politics, and plan for them&lt;/h1&gt;&lt;p&gt;As I said in a comment to &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=532&amp;amp;entry_id=171&quot; title=&quot;http://blog.agoraproduction.com/index.php?/archives/35-PEAR-Group-Elections-tomorow!-Vote-for-me!-D.html&quot;  onmouseover=&quot;window.status=&#039;http://blog.agoraproduction.com/index.php?/archives/35-PEAR-Group-Elections-tomorow!-Vote-for-me!-D.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;David Coallier&#039;s blog post&lt;/a&gt; today, ideas are the currency of open source, and politics is the commerce.  Without a free and comfortable exchange of ideas between very different view points, you don&#039;t have a healthy project.  Most open source projects start out with a dedicated core of like-minded developers, and so it appears as if there are no political issues at all.  The truth is that politics need to be factored into all planning.  Design a clear and limited mission for the project, create a clear governance system with room for flexibility as the project expands, and for God&#039;s sake try to keep the administrative details out of the way of the coding!&lt;/p&gt;&lt;h1&gt;9. You have two audiences: developers and users&lt;/h1&gt;&lt;p&gt;There is an inherent conflict between the needs of developers, who wish primarily to code cool stuff, and users, who wish primarily to not have their crap blow up on the live site.  Users usually get mad when you break compatibility, developers get mad when they have to keep it.  Users get mad when there&#039;s no documentation, developers get mad when they have to write it.  You get the picture.  Seek strategies to bridge the gap between these two disparate audiences.  The PHP project has a fantastic documentation project consisting primarily of people who do not actually develop the PHP source, and they co-exist quite peacefully and actively.  Think along these lines, and jump at opportunities to help out users without alienating developers.&lt;/p&gt;&lt;h1&gt;10. Dream big, baby.  Plan for the future&lt;/h1&gt;&lt;p&gt;People like to be involved with cool, life-changing things.  Don&#039;t sell your project short, write great code, and solve intractable problems with beautifully simple, eloquent solutions, and do it all from the comfort of your living room.  To put it another way, unless you are some kind of freak, you won&#039;t have the energy to sustain the initial push behind the project all by yourself for more than a few years.  Make sure you&#039;re planning ahead for your inevitable retirement or at least scaling back involvement, and seek out proteges to take over the project.  The more attractive the project is, the more likelihood you will find that magical dreamer who will carry the torch off into the open source sunset.&lt;br /&gt; &lt;/p&gt;
 
    </content:encoded>

    <pubDate>Thu, 19 Apr 2007 15:34:58 -0700</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/171-guid.html</guid>
    
</item>
<item>
    <title>holy release party, batman</title>
    <link>http://greg.chiaraquartet.net/archives/169-holy-release-party,-batman.html</link>
            <category>PEAR</category>
    
    <comments>http://greg.chiaraquartet.net/archives/169-holy-release-party,-batman.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=169</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=169</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    &lt;p&gt;OK, today&#039;s release party wins.  I&#039;ve just uploaded the 8th package for release, and it&#039;s a very significant day of releases.&lt;/p&gt;&lt;p&gt;First, the &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=481&amp;amp;entry_id=169&quot; title=&quot;http://pear.php.net&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PEAR website&lt;/a&gt; now supports patch tracking in its bug tracker, as well as the ability to auto-generate a package.xml based on the roadmap, complete with release notes based on closed bugs.  This is pretty exciting stuff.  3 of the releases were devoted to the website &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=482&amp;amp;entry_id=169&quot; title=&quot;http://pear.php.net/pearweb&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/pearweb&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;pearweb package&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Next, I released &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=483&amp;amp;entry_id=169&quot; title=&quot;http://pear.php.net/PHP_ParserGenerator&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/PHP_ParserGenerator&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHP_ParserGenerator&lt;/a&gt; version 0.1.5, which fixes a bug and adds more display output&lt;/p&gt;&lt;p&gt;Finally, I just released the first full-featured parser for PHP, &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=484&amp;amp;entry_id=169&quot; title=&quot;http://pear.php.net/PHP_Parser&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/PHP_Parser&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHP_Parser&lt;/a&gt;, and its companion &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=485&amp;amp;entry_id=169&quot; title=&quot;http://pear.php.net/PHP_Parser_DocblockParser&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/PHP_Parser_DocblockParser&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHP_Parser_DocblockParser&lt;/a&gt;.  These two packages are the next incarnation of the once-defunct PHP_Parser package.  Based on a PHP_ParserGenerator-based grammar, the packages can parse any valid PHP 4, 5 or 6 (PHP 5.1.0+ is required for it to run, however).  Needless to say, I have phpDocumentor in mind for immediate usage.  The Docblock parser uses the &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=486&amp;amp;entry_id=169&quot; title=&quot;http://pecl.php.net/docblock&quot;  onmouseover=&quot;window.status=&#039;http://pecl.php.net/docblock&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;docblock&lt;/a&gt; PECL extension to do its magic.  Full regression tests are available for both packages.  Documentation will be coming soon.&lt;/p&gt;&lt;p&gt;Note that all of the PHP_* packages are alpha state, so don&#039;t use them in production quite yet.  However, do start playing around with them!&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 05 Mar 2007 13:02:14 -0800</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/169-guid.html</guid>
    
</item>
<item>
    <title>Vote in the first PEAR election</title>
    <link>http://greg.chiaraquartet.net/archives/168-Vote-in-the-first-PEAR-election.html</link>
            <category>PEAR</category>
    
    <comments>http://greg.chiaraquartet.net/archives/168-Vote-in-the-first-PEAR-election.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=168</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://greg.chiaraquartet.net/rss.php?version=2.0&amp;type=comments&amp;cid=168</wfw:commentRss>
    

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    As of February 22, 2007, I have called an official referendum on the
future of PEAR.  There is a news item on the front page of pear.php.net
with the same instructions in this message.  This election is only open
to PEAR developers who have contributed to the development of a PEAR
package at any time in history, but you must have the ability to log in
at pear.php.net, and must have &amp;quot;pear.dev&amp;quot; karma.&lt;br /&gt;
&lt;br /&gt;
Please go vote!&lt;br /&gt;
&lt;br /&gt;&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url=aHR0cDovL3BlYXIucGhwLm5ldC9lbGVjdGlvbi9pbmZvLnBocD9lbGVjdGlvbj02JnZvdGU9MQ==&amp;amp;entry_id=168&quot; title=&quot;http://pear.php.net/election/info.php?election=6&amp;amp;vote=1&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/election/info.php?election=6&amp;amp;vote=1&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;
http://pear.php.net/election/info.php?election=6&amp;amp;vote=1&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The choices are between:&lt;br /&gt;
&lt;br /&gt;
1) don&#039;t change a thing&lt;br /&gt;
&lt;br /&gt;
Keep the PEAR Group&lt;br /&gt;
&lt;br /&gt;
2) Greg Beaver&#039;s constitution&lt;br /&gt;
&lt;br /&gt;
As proposed on pear-dev&lt;br /&gt;
&lt;br /&gt;
3) Anant Narayanan&#039;s constitution&lt;br /&gt;
&lt;br /&gt;
As proposed in response to my original proposal on Dec. 30, 2006.&lt;br /&gt;
&lt;br /&gt;
More information on each of these proposals is in the election description.&lt;br /&gt;
&lt;br /&gt;
I have tried to present a clear picture of the differences between the
proposals: each has merit, and should be considered carefully.  The
result of this election will determine how PEAR moves forward on
important issues such as the ultimate purpose of PEAR, how much control
developers have versus the PEAR community at large, and other major
issues such as granting CVS karma.&lt;br /&gt;
&lt;br /&gt;
The ballot is secret, and is designed so that it is nearly impossible
to reverse-engineer voters to votes in the database.  The election
interface will not let you vote without logging in or without pear.dev
karma.  If you believe you should have pear.dev karma to vote, and do
not, please mail the pear-dev mailing list and we&#039;ll try to resolve the
issue.&lt;br /&gt;
&lt;br /&gt;
Go vote!&lt;br /&gt;

 
    </content:encoded>

    <pubDate>Thu, 22 Feb 2007 15:45:12 -0800</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/168-guid.html</guid>
    
</item>

</channel>
</rss>