<?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 - PEAR</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>Sun, 23 Sep 2007 05:25:26 GMT</pubDate>

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

<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>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>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>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>
<item>
    <title>Do you develop a website?  It is infinitely better to synchronize live and development sites using the PEAR Installer</title>
    <link>http://greg.chiaraquartet.net/archives/166-Do-you-develop-a-website-It-is-infinitely-better-to-synchronize-live-and-development-sites-using-the-PEAR-Installer.html</link>
            <category>PEAR</category>
    
    <comments>http://greg.chiaraquartet.net/archives/166-Do-you-develop-a-website-It-is-infinitely-better-to-synchronize-live-and-development-sites-using-the-PEAR-Installer.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=166</wfw:comment>

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

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    
&lt;p&gt;Recently, &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=475&amp;amp;entry_id=166&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.php.net&lt;/a&gt; silently switched over to a revolutionary new way of maintaing the live website that has been extremely freeing.  The same technique is being explored by the government of the state of Iowa and other large-scale sites with mission-critical servers.  Before revealing the secret, let&#039;s learn about the problem.&lt;/p&gt;&lt;p&gt;One of the most common tasks that we experience as web developers is synchronizing a development web server with a live site.  There are many solutions that have been tried before.  Just a few:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;develop the code on the live server&lt;/li&gt;&lt;li&gt;develop on a remote machine, and ftp the files to the site as they change&lt;/li&gt;&lt;li&gt;develop using version control like CVS, and use a cron job to synchronize the website directly from CVS&lt;/li&gt;&lt;li&gt;develop on a remote server with the same configuration, and use rsync to synchronize changes&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Almost everyone has tried #1.  The first time you accidentally erase a file, it will rid you of that habit in a hurry.  Most developers use #2, and this has the benefit of having a backup on the development machine.  The same principles hold for #3 and #4 but the changes are synced in a controlled way.&lt;/p&gt;&lt;p&gt;However, every single method described above has the potential for immediate and catastrophic failure, even with a backup.&lt;/p&gt;&lt;p&gt;Why?&lt;/p&gt;&lt;p&gt;Websites are not just the code that runs them.  Websites consist of interdependency between code, data storage backend (LDAP/database/other), and also the actual hostname itself.  Of the 4 methods listed above, not one addresses this issue.  When upgrading code on the live server, if there are any database changes, these must be done by hand.  Keeping track of links to use (for instance, when redirecting a user to a secure login form, one cannot use a relative href, but must use the full hostname) also requires some footwork.  The most common solutions involve two strategies:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;use /etc/hosts to mimic the live server&#039;s DNS (alias hostnames to localhost)&lt;/li&gt;&lt;li&gt;use a static configuration file that is not synchronized to define hostname/path differences&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The first idea is good, but also means you will need another alias in order to rsync with the remote site (or a dedicated IP on the remote site).  Chances are, if you have a dedicated machine for development, you also have a dedicated IP for the live server, and then this is a good solution for managing hostname differences between the development and live machine.  The second solution is far more common, and much less robust.  Any file that must be different between the development machine and the remote server is asking for trouble when using ftp or rsync.  If the file is excluded from rsync/ftp, when it is erased, the file is gone, and must be stored somewhere else.  This quickly introduces unwanted complexity in the maintenance of the website, and another failure path for the site.&lt;/p&gt;&lt;p&gt;The problems only multiply when using external depedencies.  As many developers have discovered, it&#039;s all fine and good to try to avoid re-inventing the wheel.  The problem happens when trying to upgrade an external library.  Each library has different requirements, and upgrading often means a mysterious quagmire of erasing and adding files, as well as database changes or other tasks that make it onerous to upgrade.  Actually, upgrading isn&#039;t so hard, but downgrading, should the upgrade break everything is really hard (Note: this is far more common if the package is not from pear.php.net - PEAR has a strong backwards compatibility policy designed to mitigate this issue).&lt;/p&gt;&lt;p&gt;The ultimate solution, as I outline in chapter 3 of &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=476&amp;amp;entry_id=166&quot; title=&quot;http://www.amazon.com/exec/obidos/tg/detail/-/1904811191&quot;  onmouseover=&quot;window.status=&#039;http://www.amazon.com/exec/obidos/tg/detail/-/1904811191&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;The PEAR Installer Manifesto&lt;/a&gt;, is to use the PEAR Installer in conjunction with version control to manage the complexity of synchronizing a live website with the development machine.&lt;/p&gt;&lt;p&gt;A few years back, while designing the next incarnation of the PEAR
Installer, I realized that its ability to do file transactions,
intrinsic support for dependencies and versioning make it ideal for
managing not just PHP libraries and applications, but also for managing
complete websites, and not just the PHP files, but all file-related
events.  There were just a few elements missing: how to synchronize a database?  It turns out that the answer is also PEAR-related, and was one of the features integrated in PEAR 1.4.0 and newer.&lt;/p&gt;&lt;p&gt;The code that runs http://pear.php.net is now completely encapsulated within the pearweb package (&lt;a href=&quot;A few years back, while designing the next incarnation of the PEAR Installer, I realized that its ability to do file transactions, intrinsic support for dependencies and versioning make it ideal for managing not just PHP libraries and applications, but also for managing complete websites, and not just the PHP files, but all file-related events.&quot;&gt;http://pear.php.net/pearweb&lt;/a&gt;).  As part of the installation for the pearweb package, a post-installation script is available that initializes the database using &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=478&amp;amp;entry_id=166&quot; title=&quot;http://pear.php.net/MDB2_Schema&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/MDB2_Schema&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;MDB2_Schema&lt;/a&gt;, a cross-database package that can create or modify a database installation.  As time passes, the pearweb package will be divided into several related packages, one for each sub-site within pear.php.net (there is already a subpackage for the installation .phar files, &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=479&amp;amp;entry_id=166&quot; title=&quot;http://pear.php.net/pearweb_phars&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/pearweb_phars&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://pear.php.net/pearweb_phars&lt;/a&gt;).  This will allow modular development and other tried and true techniques applied to traditional programming environs.&lt;/p&gt;&lt;p&gt;The biggest difference between the old and the new method was exemplified a few weeks back.  A regression was introduced in pearweb version 1.1.2 that broke the statistics graph for package downloads.  Initially, I wasn&#039;t sure what the problem was caused by, so I first reverted to the previous version:&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;pear upgrade --force pearweb-1.1.1&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Once the problem was traced to an extra line in one of the files, pearweb 1.1.3 was released, and the new version was synchronized with:&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;pear upgrade pearweb-1.1.3&lt;/font&gt;&lt;/p&gt;&lt;p&gt;Two lines of shell scripting and the entire website was fixed!  In another early instance, an upgrade of the website resulted in the entire site being placed in the wrong directory due to a configuration value change in the PEAR Installer at pear.php.net.  In 30 seconds, I was able to fix it with:&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;pear config-set web_dir /path/to/actual/pearweb&lt;br /&gt;pear upgrade --force pearweb&lt;/font&gt;&lt;/p&gt;&lt;p&gt;This is the missing piece of the 4 most common synchronization methods: it&#039;s really hard to fix mistakes made.  You will still make mistakes when using the PEAR Installer, the difference is that reverting them is a 1-liner and requires no sweat or fear that one will break something else in the process: each release of a package is a known quantity, and it will work the same way as it did last time.  The major exception is database upgrades - these require special attention, as once the database changes, reverting to a previous version is no longer possible.  However, designing modularly so that database changes only affect a single module within the website can even fix this problem.&lt;/p&gt;&lt;p&gt;For a more comprehensive analysis of the steps needed to maintain a live webserver successfully, like ways of providing a safety buffer when upgrading (redirecting users temporarily) and the nitty-gritty of packaging up a website using the PEAR Installer, &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=480&amp;amp;entry_id=166&quot; title=&quot;http://www.packtpub.com/book/PEAR-installer&quot;  onmouseover=&quot;window.status=&#039;http://www.packtpub.com/book/PEAR-installer&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;buy my book&lt;/a&gt;, I promise it will be worth the cover price.&lt;/p&gt;&lt;p&gt;Don&#039;t be fooled by the title, this book is not about how to type &amp;quot;pear install Blah.&amp;quot;  As one of the people who wrote to me said:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Chapter 3 is of most interest to me - going beyond simple libraries to 
distributing full apps. As I run a development team of 8 managing 
mission critical sites, I&#039;m trying hard to bring as much good software 
engineering methodology as I can in. I&#039;ve taught everyone to use 
Subversion so my next issue is deployment. I&#039;m obviously familiar now 
with basic package.xml stuff for libraries but not for full blown apps. 
I&#039;ve been working on a small (php-based) app called **** on and off for a while, which automates some 
aspects of web app deployment (setting up the environment - databases 
etc., checking stuff out of SVN including deploying bits from PEAR and 
so on). However now that I have your book it seems that quite a bit of 
it can be done within PEAR - I had no idea it was that flexible!&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;The book uses the Chiara Quartet&#039;s website as an example, which was a from-scratch rewrite to fit this new model.  Unfortunately since writing the chapter, we decided to outsource the website to another person who uses their own model of development.  Fortunately, the design is much better than when I was maintaining the site &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;.  pear.php.net is more interesting, as it demonstrates how easy it is to move an existing site to the new model.  All you really need is a package.xml, and possibly a PEAR channel server, although there are other ways to move the files around as well.  Incidentally, Chapter 5, which is available for free on the packt website, describes in detail how to set up a channel server.&lt;/p&gt;&lt;p&gt;I really hope you will check out this method - it has made everything easier for me, and in a way represents the culmination of several years of blood, sweat and tears on my part pooling ideas for the PEAR Installer, implementing and regression testing them, and finally writing about them.&lt;/p&gt;&lt;p&gt;Happy PHPing!&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Sun, 11 Feb 2007 10:11:14 -0800</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/166-guid.html</guid>
    
</item>
<item>
    <title>Mac OS X ships with security hole-laden PEAR - how to upgrade immediately</title>
    <link>http://greg.chiaraquartet.net/archives/164-Mac-OS-X-ships-with-security-hole-laden-PEAR-how-to-upgrade-immediately.html</link>
            <category>PEAR</category>
    
    <comments>http://greg.chiaraquartet.net/archives/164-Mac-OS-X-ships-with-security-hole-laden-PEAR-how-to-upgrade-immediately.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=164</wfw:comment>

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

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    
&lt;p&gt;I was surprised to hear a colleague today ask how to upgrade from PEAR 1.3.6 to the latest 1.5.0, as the security holes in PEAR 1.3.6 and earlier have been pulbicly known for well over a year now.  When I inquired as to why he was using PEAR 1.3.6, he explained that Max OS X ships with PEAR 1.3.6.  I won&#039;t get into the questionable business practice of shipping software with known security holes that have had known fixes for years.  Instead, I would like to offer simple step-by-step instructions of how to upgrade from outdated buggy PEAR versions to the latest stable release, 1.5.0.&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;pear upgrade Console_Getopt-1.2.1 Archive_Tar-1.3.1 &lt;/font&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;PEAR-1.4.3&lt;/font&gt;&lt;br /&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;pear upgrade PEAR&lt;/font&gt;
&lt;/p&gt;&lt;p&gt;These two commands will be sufficient to upgrade any system running PEAR 1.3.3 or newer.  If you are running a REALLY outdated version of PEAR, you are far better off starting over from scratch using http://pear.php.net/go-pear, which should be downloaded and saved as go-pear.php, then run via:&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;php go-pear.php&lt;/font&gt;&lt;/p&gt;&lt;p&gt;These simple steps will allow any system to be upgraded.  Note that if you&#039;re running something like version 1.3.0 of PEAR, you could risk running:&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;pear upgrade PEAR-1.3.6&lt;/font&gt;&lt;/p&gt;&lt;p&gt;and then try upgrading to PEAR using the 2 lines listed above.  But for God&#039;s sake, don&#039;t stick with PEAR 1.3.6 or earlier, that is just asking for trouble.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 24 Jan 2007 21:35:00 -0800</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/164-guid.html</guid>
    
</item>
<item>
    <title>PEAR 1.5.0 (out today) pushes the envelope</title>
    <link>http://greg.chiaraquartet.net/archives/163-PEAR-1.5.0-out-today-pushes-the-envelope.html</link>
            <category>PEAR</category>
    
    <comments>http://greg.chiaraquartet.net/archives/163-PEAR-1.5.0-out-today-pushes-the-envelope.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=163</wfw:comment>

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

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    
&lt;p&gt;&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=456&amp;amp;entry_id=163&quot; title=&quot;http://pear.php.net/PEAR&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/PEAR&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PEAR 1.5.0&lt;/a&gt;, released a little while ago, pushes the envelope for PEAR.  This release can be downloaded at &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=457&amp;amp;entry_id=163&quot; title=&quot;http://pear.php.net/get/PEAR-1.5.0.tgz&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/get/PEAR-1.5.0.tgz&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://pear.php.net/get/PEAR-1.5.0.tgz&lt;/a&gt;, or installed with&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;courier new,courier,monospace&quot;&gt;pear upgrade PEAR&lt;/font&gt;&lt;/p&gt;&lt;p&gt;This release adds several interesting new features to PEAR, and provides a further stabilization of the code base.  The most important change: as promised, PEAR now requires PHP 4.3.0 or newer to function.&lt;/p&gt;&lt;p&gt;This release adds a few small but important new features:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;package.xml 2.1 allows PECL zend extensions like xdebug to define themselves as such&lt;/li&gt;&lt;li&gt;automatic enabling and disabling of pecl extensions in php.ini is now supported&lt;/li&gt;&lt;li&gt;post-installation scripts are much more advanced in the CLI frontend&lt;/li&gt;&lt;li&gt;deprecated packages are displayed as such by the installer&lt;/li&gt;&lt;li&gt;TAP output is possible with the run-tests command&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In addition, 46 bugs have been fixed since the last stable release, 1.4.11.&lt;/p&gt;&lt;p&gt;PEAR 1.5.0 maintains full backwards compatibility with PEAR 1.4.11 on every level, and only adds new features and greater stability of existing features, especially installation and uninstall with complex dependency trees.  I highly recommend an upgrade.&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Tue, 23 Jan 2007 18:59:06 -0800</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/163-guid.html</guid>
    
</item>
<item>
    <title>problem with PHP_Archive-based phars tracked to odd unpack() bug</title>
    <link>http://greg.chiaraquartet.net/archives/160-problem-with-PHP_Archive-based-phars-tracked-to-odd-unpack-bug.html</link>
            <category>PEAR</category>
    
    <comments>http://greg.chiaraquartet.net/archives/160-problem-with-PHP_Archive-based-phars-tracked-to-odd-unpack-bug.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=160</wfw:comment>

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

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    &lt;p&gt;I just pushed out a release of &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=448&amp;amp;entry_id=160&quot; title=&quot;http://pear.php.net/PHP_Archive&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/PHP_Archive&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHP_Archive 0.9.1&lt;/a&gt;.  This release fixes a bug that affects 64-bit users of PHP 5.2 and newer.  Basically, the &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=449&amp;amp;entry_id=160&quot; title=&quot;http://php.net/unpack&quot;  onmouseover=&quot;window.status=&#039;http://php.net/unpack&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;unpack()&lt;/a&gt; function does not behave in a predictable way when unpacking large integers.  This is a known bug, and is documented at the manual page, although I was unaware of the issue until today.&lt;/p&gt;&lt;p&gt;It turns out that this code behaves differently on most platforms:&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;a href=&quot;http://www.php.net/pack&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;pack&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;V&#039;&lt;/span&gt;, &lt;span style=&quot;color: #cc66cc;&quot;&gt;3068571189&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&lt;a href=&quot;http://www.php.net/var_dump&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;var_dump&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.php.net/unpack&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;unpack&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&#039;Va&#039;&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;$a&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;#41;&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/p&gt;&lt;p&gt;On some systems, instead of int(3068571189), the output is int(-1226396107) even though the V argument specifically requests unsigned integers&lt;p&gt;It wouldn&#039;t matter, except that number happens to be the crc32 checksum of PEAR.php, and so a different number returned meant that the .phar that installs PEAR simply wouldn&#039;t work.&lt;/p&gt;&lt;p&gt;The workaround that allows .phars to work in all PHP versions is to convert the unpacked integer into an unsigned integer string using the equivalent of this code:&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;a href=&quot;http://www.php.net/sprintf&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;sprintf&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;%u&quot;&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;$a&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/p&gt;&lt;p&gt;I hope this is useful to others who are working with unpack()/pack() - be wary, some things don&#039;t act like you think they might unless you have great knowledge of the deployment environments, and know what to expect.&lt;/p&gt;&lt;p&gt;Thanks to Ilia and Sara for providing the tips needed to solve this one&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Fri, 05 Jan 2007 20:49:28 -0800</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/160-guid.html</guid>
    
</item>
<item>
    <title>2006: a PEAR retrospective</title>
    <link>http://greg.chiaraquartet.net/archives/159-2006-a-PEAR-retrospective.html</link>
            <category>PEAR</category>
    
    <comments>http://greg.chiaraquartet.net/archives/159-2006-a-PEAR-retrospective.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=159</wfw:comment>

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

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    
&lt;p&gt;2006 was an interesting year for PEAR, a number of exciting events happened both inside PEAR&#039;s workings and in PHP at large that affected PEAR.  I will attempt to give my best shot at a 20-20 hindsight look back at PEAR in the past year.  I am hugely biased, as I don&#039;t maintain every package in PEAR, so this will be tilted towards the packages I do maintain and use.&lt;/p&gt;&lt;p&gt;Rather than try to summarize the &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=355&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;w=2&amp;amp;r=25&amp;amp;s=%5BANNOUNCEMENT%5D&amp;amp;q=b&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;w=2&amp;amp;r=25&amp;amp;s=%5BANNOUNCEMENT%5D&amp;amp;q=b&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;releases of the past year&lt;/a&gt;, I&#039;ll let the internet do it.  Click &amp;quot;Prev&amp;quot; to see them in sequential order.  The same goes for &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=356&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;w=2&amp;amp;r=1&amp;amp;s=%5BPEPr%5D+Proposal+for&amp;amp;q=t&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;w=2&amp;amp;r=1&amp;amp;s=%5BPEPr%5D+Proposal+for&amp;amp;q=t&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PEPr proposals in the past year&lt;/a&gt;.  As usual, the pear-general list was saturated with questions about HTML_QuickForm throughout the entire year.  DB_DataObject and Structures_DataGrid appear to be a close second.&lt;/p&gt;&lt;p&gt;The PEAR Installer started out at &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=357&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=113656179308210&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=113656179308210&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;version 1.4.6&lt;/a&gt; on January 6.  Shortly thereafter, I announced that &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=358&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113676523831010&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113676523831010&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PEAR 1.5.0 will no longer support PHP 4.2.0 or older&lt;/a&gt; with a few responses, some &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=359&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113683094812398&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113683094812398&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;intriguing&lt;/a&gt; but most were not perturbed by the announcement.  In addition, I discovered an &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=360&amp;amp;entry_id=159&quot; title=&quot;http://pear.php.net/advisory-20060108.txt&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/advisory-20060108.txt&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;arbitrary code execution vulnerability in PEAR versions 1.3.5 and older&lt;/a&gt;.   &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=361&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113620032330609&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113620032330609&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Several &lt;/a&gt;&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=362&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113709117310774&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113709117310774&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;packages&lt;/a&gt; &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=363&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113709540515095&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113709540515095&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;were&lt;/a&gt; &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=364&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113749743001939&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113749743001939&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;proposed&lt;/a&gt; &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=365&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113794648926151&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113794648926151&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;and&lt;/a&gt; &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=366&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113733206926231&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113733206926231&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;several&lt;/a&gt; &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=367&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113793741119257&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113793741119257&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;were&lt;/a&gt; voted on.  Around this time, &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=368&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113808862220815&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113808862220815&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Derick announced&lt;/a&gt; that the CVS tag RELEASE_1_0_4 mysteriously appeared on every single file in PHP&#039;s CVS, which was traced to a release of System_Command by &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=369&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113810009201358&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113810009201358&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Jan Schneider&#039;s sleuthing&lt;/a&gt;.  Oddly enough, there were no hangings as a result, in a nice break from the flame war traditions.  Otherwise, life was pretty normal in January.&lt;/p&gt;&lt;p&gt;February marked the beginning of people understanding that they needed to upgrade PEAR, and we saw some &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=370&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=113940517532382&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=113940517532382&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;really ancient versions trying to upgrade&lt;/a&gt;.  There were a lot of releases, but otherwise was business as usual.  One interesting point was raised by Lukas Smith.  There has been a lot of FUD regarding performance and PEAR packages.  &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=371&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113926956430500&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=113926956430500&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;He cleared up the confusion &lt;/a&gt;with a series of benchmarks proving that things are looking up for database abstraction in PEAR.  Meanwhile, &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=372&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114015118813453&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114015118813453&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;I got all medieval on Pierre&#039;s behind regarding PEAR_Frontend_Web&lt;/a&gt;, but all turned out well in the end.  Bertrand Gugger got a little confused about the date of April Fool&#039;s, and posted &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=373&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114021249823196&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114021249823196&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;this interesting release announcement to pear-dev&lt;/a&gt;, and was chastised for the confusion.  Pierre stepped up to the plate and delivered a home run when he &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=374&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114053815125017&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114053815125017&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;added the ability to subscribe to bugs&lt;/a&gt; in the PEAR bug tracker.&lt;/p&gt;&lt;p&gt;March started with a timid request from &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=375&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114133789115783&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114133789115783&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Stefano Rausch wondering when package stats would be back up&lt;/a&gt;.  Later, an interesting discussion of &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=376&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114148949106207&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114148949106207&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;how to detect whether a file is inside include_path&lt;/a&gt; appeared, with the solution that Zend_Framework coming up as a winner.  The &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=377&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114237145910504&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114237145910504&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;first of the licensing queries&lt;/a&gt; appeared, in benign form.  The question of PHP License compatibility would come to a head later on in the year.  There was an &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=378&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114297088322233&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114297088322233&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;interesting but flawed attempt&lt;/a&gt; to create namespaces in PHP code which ultimately fizzled.  Scott Mattocks raised an interesting &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=379&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114312428313354&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114312428313354&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;chicken-and-egg problem&lt;/a&gt; with proposing two connected packages: what if one package is accepted and the other isn&#039;t?  I answered this with fuggedaboutit, no worries, and he seemed satisfied with the response.  The month ended with a brief &amp;quot;&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=380&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=114341223726305&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=114341223726305&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;isn&#039;t Zend Framework just PEAR for PHP 5 without the installer?&lt;/a&gt;&amp;quot; question.  Nobody answered.&lt;/p&gt;&lt;p&gt;April was pretty quiet, although Lukas raised the ultimately defeated question of &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=381&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114613817022494&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114613817022494&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;whether packages in PEAR must be prefixed&lt;/a&gt; with PEAR_ or P_ or WHATEVER_.  Justin answered the question &amp;quot;&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=382&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=114615842532349&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=114615842532349&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;is PEAR PHP5-compatible&lt;/a&gt;&amp;quot; quite nicely.  And then we went to May.&lt;/p&gt;&lt;p&gt;Philippe poked PEAR to remind people that &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=383&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114652541225090&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114652541225090&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Google&#039;s Summer of Code didn&#039;t have any PEAR listings&lt;/a&gt; yet, and &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=384&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114675629228309&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114675629228309&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Lukas stepped up &lt;/a&gt;to the plate.  &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=385&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114860418402237&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114860418402237&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Alan and I disturbed the waters&lt;/a&gt; by &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=386&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114764876720126&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114764876720126&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;reminding people&lt;/a&gt; that PHP 6.0 will most likely kill off called static methods that are not static.  Surprisingly, this indirectly led to a huge broohaha on php-internals over just what E_STRICT should mean, as many developers had not noticed this subtle change.  On a bright note, &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=387&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114878276232095&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=114878276232095&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Igor Feghali wrote a nice message&lt;/a&gt; saying he was accepted into a Google SoC project for MDB2_Schema.  PhpDocumentor &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=388&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=114658179400988&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=114658179400988&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;rose from the grave&lt;/a&gt; to emit a new release with a buttload of fixed bugs.  Then, Sebastian release &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=389&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=114910472505092&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=114910472505092&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHPUnit2 version 3.0.0alpha5&lt;/a&gt;, which caught me off guard, as I thought PEAR had decided on requiring a new package when the major version is bumped.  We all ran around like chickens with our heads cut off for a little while, and then (skipping ahead to July) &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=390&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115212195328840&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115212195328840&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Sebastian announced he was pulling PHPUnit from PEAR&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;June began my long months of crazy music time, and I disappeared from the PEAR world, and for a while, from the internet.  However, this didn&#039;t stop my from creating &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=392&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115118363001812&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115118363001812&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHP_ParserGenerator&lt;/a&gt; and &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=392&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115118363001812&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115118363001812&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHP_LexerGenerator&lt;/a&gt; in my spare time.  Oh, and Joe Stump provided a rather definitive answer to the question of &amp;quot;isn&#039;t Zend Framework just PEAR for PHP 5?&amp;quot;  &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=393&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=115160436920165&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=115160436920165&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;No&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;July began, as I mentioned before, with Sebastian&#039;s stunning move to make PHPUnit it&#039;s own thing outside of PEAR, taking advantage of the channels feature I introduced in PEAR 1.4.X.  This was closely followed by &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=394&amp;amp;entry_id=159&quot; title=&quot;http://pooteeweet.org/blog/439&quot;  onmouseover=&quot;window.status=&#039;http://pooteeweet.org/blog/439&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Lukas Smith&#039;s announcement of his retirement&lt;/a&gt; from PEAR effective October 1, although it appears he may have &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=411&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;r=1&amp;amp;b=200609&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;r=1&amp;amp;b=200609&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;changed his mind&lt;/a&gt; since then.  The jury is still out on that front.  A few other small things happened, such as Olivier&#039;s interesting and ultimately ignored idea of how to &amp;quot;&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=396&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115226492819003&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115226492819003&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;dynamize PEAR&lt;/a&gt;.&amp;quot;  Alexey started off his first PEPr proposal in a while with an &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=397&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115251962419444&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115251962419444&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;E_STRICT bang&lt;/a&gt;, which ultimately succeeded.  &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=398&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115265583804666&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115265583804666&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Markus Tacker tried his hand&lt;/a&gt; at a PEPr proposal to prefix packages with &amp;quot;P_&amp;quot;.  This led to the all time highest number of comments on a proposal, dragged on for 3 months, received both more +1 AND more -1 votes than any other package or proposal in history, and ultimately flopped.  Oh well.  Markus also suggested setting up an &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=399&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115375237825937&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115375237825937&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;SVN mirror of the PEAR repository&lt;/a&gt;, and was greeted with resounding silence.  Tough month!  &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=400&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115273182014240&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115273182014240&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Some tentative motions were made&lt;/a&gt; towards starting a PEAR PR group.  Nothing solid came out of it, unfortunately.&lt;/p&gt;&lt;p&gt;August saw the release of &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=401&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=115572389325559&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=115572389325559&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PEAR 1.4.11&lt;/a&gt;, the last stable release of PEAR until I push out 1.5.0 sometime very soon (Read: 1 month or so, if we&#039;re lucky).  Otherwise, a pretty normal month.&lt;/p&gt;&lt;p&gt;In September, Martin decided to codify the requirement that all PEAR packages reside in a public SCM due to &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=402&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115900176623853&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115900176623853&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;overwhelming public support&lt;/a&gt;.  Then, a real bombshell hit.  &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=403&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115936911717065&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115936911717065&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Pierre announced his retirement&lt;/a&gt; from PEAR.  Shortly after, &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=411&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;r=1&amp;amp;b=200609&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;r=1&amp;amp;b=200609&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Scott started&lt;/a&gt; what turned out to be a snowball effect drawing &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=411&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;r=1&amp;amp;b=200609&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;r=1&amp;amp;b=200609&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;people&lt;/a&gt; &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=406&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115941658312756&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115941658312756&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;I had never&lt;/a&gt; &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=407&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115989596532514&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=115989596532514&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;heard of&lt;/a&gt; &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=419&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116008332700968&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116008332700968&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;before&lt;/a&gt; out of the woodwork with all kinds of new and some very interesting ideas for PEAR&#039;s direction.  Of course, all he was asking was how to re-populate the PEAR Group, leading to my favorite reply from Joe Stump: &amp;quot;&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=411&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;r=1&amp;amp;b=200609&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;r=1&amp;amp;b=200609&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;So, what does the PEAR Group do, anyways?  I&#039;m up for it&lt;/a&gt;&amp;quot; &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;.  P.S. thanks Joe, you&#039;re a good sport.  Lukas provided a nice history &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=411&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;r=1&amp;amp;b=200609&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;r=1&amp;amp;b=200609&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;here&lt;/a&gt;, and opened up the doors to thinking about a new structure for PEAR.  I added &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=411&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;r=1&amp;amp;b=200609&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;r=1&amp;amp;b=200609&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;my 2 cents&lt;/a&gt; (OK, 2 dollars).  &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=419&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116008332700968&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116008332700968&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;David called for a meeting&lt;/a&gt; with a pretty looking agenda, which never fully materialized, I suspect due to timezone differences among other things.  Many people requested a &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=419&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116008332700968&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116008332700968&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;wiki for PEAR&lt;/a&gt;, which received both positive and negative reviews.  Meanwhile, some little crust-monkey managed to silently &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=419&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116008332700968&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116008332700968&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;delete all files containing &amp;quot;log&amp;quot;&lt;/a&gt; in their name from PEAR cvs, which affected PhpDocumentor, PEAR, Log (obviously), peardoc and a lot of other places for a while.  Fortunately, &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=415&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=115920617830259&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=115920617830259&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;life continued as usual on pear-general&lt;/a&gt; with people asking for help and developers (Mark in this case) providing helpful answers.&lt;/p&gt;&lt;p&gt;October rolled around, and I kicked things off with the &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=416&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=115966976227979&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=115966976227979&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;release of PEAR 1.5.0a1&lt;/a&gt; and a little announcement that pearweb (the code running pear.php.net) &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=419&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116008332700968&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116008332700968&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;is now installable using the PEAR installer&lt;/a&gt;.  Meanwhile, Craig Constantine stepped up to provide a &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=419&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116008332700968&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116008332700968&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;central place to track the improvements to pearweb&lt;/a&gt;.  &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=419&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116008332700968&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116008332700968&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Martin very casually announced&lt;/a&gt; a hardware upgrade to the box behind pear.php.net, which was actually a HUGE leap forward in the speed of the machine, and in turn what is possible.  After that point, all the stability issues we were experiencing with the website literally vanished overnight.  Go Martin!  This month was laden with tons of releases, and there were some good signs that new users are &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=420&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=116085064200624&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=116085064200624&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;starting to at least consider security&lt;/a&gt; when designing apps.  Well, sort of.  Oh, and I released &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=421&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=116174316331129&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=116174316331129&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PhpDocumentor 1.3.1&lt;/a&gt;, which was nice if you want to document PHP5-related stuff.  Christian set about a task I assigned him with zeal, and released &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=422&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=116223706010680&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-general&amp;amp;m=116223706010680&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;QA_Peardoc_Coverage&lt;/a&gt; to show us &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=423&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116119287632628&amp;amp;w=3&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116119287632628&amp;amp;w=3&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;how we&#039;re doing as packages and as developers&lt;/a&gt; when it comes to documenting our PEAR stuff.  I finally &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=424&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116114988216031&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116114988216031&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;fixed statistics for packages at the end of the month&lt;/a&gt;, and we went our merry way into November.  Oh and I almost forgot, Packt Publishing published &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=425&amp;amp;entry_id=159&quot; title=&quot;http://www.packtpub.com/pear/book&quot;  onmouseover=&quot;window.status=&#039;http://www.packtpub.com/pear/book&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PHP Programming with PEAR&lt;/a&gt; and my book the &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=426&amp;amp;entry_id=159&quot; title=&quot;http://www.packtpub.com/PEAR-Installer/book&quot;  onmouseover=&quot;window.status=&#039;http://www.packtpub.com/PEAR-Installer/book&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;PEAR Installer Manifesto&lt;/a&gt;, and Apress published &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=427&amp;amp;entry_id=159&quot; title=&quot;http://apress.com/book/bookDisplay.html?bID=10181&quot;  onmouseover=&quot;window.status=&#039;http://apress.com/book/bookDisplay.html?bID=10181&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Foundations of PEAR: Rapid PHP Development&lt;/a&gt;.  I suggested we &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=428&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116122293621978&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116122293621978&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;deprecate XML-RPC access for pear.php.net&lt;/a&gt; (not the package), and in the worst moment, Adam Trachtenberg pointed out that &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=429&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116224672916959&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116224672916959&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;go-pear was broken in PHP 5.2&lt;/a&gt;.  I hurriedly committed a fix 4 days prior to release, and yet it never made it in, so those of you suffering can download &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=430&amp;amp;entry_id=159&quot; title=&quot;http://pear.php.net/go-pear.phar&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/go-pear.phar&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://pear.php.net/go-pear.phar&lt;/a&gt; or wait for 5.2.1.&lt;/p&gt;&lt;p&gt;November.  Martin added the books I mentioned to the support page at pear.php.net.  I &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=431&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116321130431052&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116321130431052&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;created an interface for elections&lt;/a&gt;, which will be used very soon for a number of fun things (see December).  Dan Convissor formally announced his being &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=432&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116325719926533&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116325719926533&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;too busy for XML-RPC and DB&lt;/a&gt;.  Other stuff happened too, I guess.&lt;/p&gt;&lt;p&gt;In December, I created some &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=433&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116512800505562&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116512800505562&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;bug stats by package&lt;/a&gt;, and plopped them on each package&#039;s home page.  This was pretty well-received once it got the inevitable kinks worked out.  Around this same time, David Coallier and Christian came up with a nifty eye-candy &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=434&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116569801900957&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116569801900957&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;google map of PEAR developers&lt;/a&gt;.  Christian suggested &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=435&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116604348719089&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116604348719089&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;we should track CVS commits&lt;/a&gt;, and I &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=436&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116605756107606&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116605756107606&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;sort of shot it down&lt;/a&gt;, although if we do get a dedicated server to do the number crunching it still might work.  PhpDocumentor acquired a &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=437&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116610495223664&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116610495223664&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;new developer&lt;/a&gt; who actually does work (gasp).  Next, I got a little crazy and &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=438&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116625171809241&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116625171809241&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;added bug fixing stats&lt;/a&gt; &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=439&amp;amp;entry_id=159&quot; title=&quot;http://pear.php.net/bugs/stats.php#devs&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/bugs/stats.php#devs&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;per developer&lt;/a&gt; on each package&#039;s homepage.  It was generally well-received, but &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=440&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116656234027377&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116656234027377&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;a few objections&lt;/a&gt; convinced me to remove it from the package page, and leave it in the stats page.  In addition, pear.php.net moved away from the dangerous cvs sync method to being &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=441&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116689897204827&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116689897204827&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;synced from pear releases&lt;/a&gt;.  As I mentioned in July, &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=442&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116721699210848&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116721699210848&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Lukas suggested PEARifying Doctrine&lt;/a&gt; as the PHP5 database handling package for PEAR.  Finally, I &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=443&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116746081320421&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116746081320421&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;proposed a constitution&lt;/a&gt; to define how PEAR should work, which hopefully will be voted on and decided real soon.  In one of the more annoying threads of the year, Sylvain Beucler &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=444&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116608344604081&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116608344604081&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;raised some of the questions&lt;/a&gt; that had been hashed, rehashed, and rerehashed on the php-internals list about the PHP License.  In the end, &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=445&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116620561408418&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116620561408418&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Rasmus&#039;s say&lt;/a&gt; made the final cut and is going to be in the official FAQ.  Justin went ahead and asked the GPL folks what they thought about the issue.  Their reply was &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=446&amp;amp;entry_id=159&quot; title=&quot;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116662912122239&amp;amp;w=2&quot;  onmouseover=&quot;window.status=&#039;http://marc.theaimsgroup.com/?l=pear-dev&amp;amp;m=116662912122239&amp;amp;w=2&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;somewhat more succinct&lt;/a&gt; than we hoped for.  Lastly, I committed the &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=447&amp;amp;entry_id=159&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;first working proof-of-concept of a PHP5 E_STRICT installer&lt;/a&gt; called &amp;quot;PEAR2&amp;quot; as a working title.&lt;/p&gt;&lt;p&gt;So, there you have it!  2007 will be a big year for PEAR, I hope the New Year will bring happiness to you and to your family, and that this retrospective is entertaining.  I&#039;m sure I missed some stuff, just post a comment if you see anything that should be in there.&lt;/p&gt;&lt;p /&gt;&lt;p /&gt;&lt;p /&gt;&lt;p /&gt;&lt;p /&gt; 
    </content:encoded>

    <pubDate>Sat, 30 Dec 2006 13:07:23 -0800</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/159-guid.html</guid>
    
</item>
<item>
    <title>interesting, potentially critical bug in PEAR</title>
    <link>http://greg.chiaraquartet.net/archives/158-interesting,-potentially-critical-bug-in-PEAR.html</link>
            <category>PEAR</category>
    
    <comments>http://greg.chiaraquartet.net/archives/158-interesting,-potentially-critical-bug-in-PEAR.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=158</wfw:comment>

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

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    
&lt;p&gt;Recently, I noticed that in certain cases, PEAR appears to sort dependencies in slightly the wrong order when installing packages.  For instance, while debugging the Structures_DataGrid package, which has a complex sub-package structure, I noticed that the Pager package was installed after the Structures_DataGrid_Renderers_Pager package.  This disturbed me for two reasons:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Structures_DataGrid_Renderers_Pager depends on Pager, and so Pager should be installed first&lt;/li&gt;&lt;li&gt;There was no error.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;After investigating (which in my case meant briefly recalling from memory how PEAR actually validates dependencies), I remembered that PEAR validates dependencies twice, once prior to download, and once prior to installation.  By the time the dependencies are sorted, PEAR assumes that the sort algorithm properly sorts things.  This is actually a pretty reasonable assumption considering the unit tests that are in place to test this.  However, like all regression testing, the unit tests test boundaries and likely cases, but not all possible inputs.&lt;/p&gt;&lt;p&gt;I was unsure of how to proceed, until I picked up Kyle Loudon&#039;s &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=351&amp;amp;entry_id=158&quot; title=&quot;http://www.amazon.com/Mastering-Algorithms-C-Kyle-Loudon/dp/1565924533/sr=8-1/qid=1166584546/ref=pd_bbs_sr_1/104-6125638-1759922?ie=UTF8&amp;amp;s=books&quot;  onmouseover=&quot;window.status=&#039;http://www.amazon.com/Mastering-Algorithms-C-Kyle-Loudon/dp/1565924533/sr=8-1/qid=1166584546/ref=pd_bbs_sr_1/104-6125638-1759922?ie=UTF8&amp;amp;s=books&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Mastering Algorithms with C&lt;/a&gt; again.  I purchased this excellent book last year to explore both common algorithms and their implementation right about the time I was most heavily into working on the &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=352&amp;amp;entry_id=158&quot; title=&quot;http://pecl.php.net/phar&quot;  onmouseover=&quot;window.status=&#039;http://pecl.php.net/phar&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;phar&lt;/a&gt; extension.  Phar is not dead, only postponed, for those of you wondering.  The Graph section of the book has an implementation of &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=353&amp;amp;entry_id=158&quot; title=&quot;http://en.wikipedia.org/wiki/Topological_sort&quot;  onmouseover=&quot;window.status=&#039;http://en.wikipedia.org/wiki/Topological_sort&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;topological sorting&lt;/a&gt;, and while glancing at the simple example of sorting classes and their prerequisites, it dawned on me that this is exactly what I needed.&lt;/p&gt;&lt;p&gt;Sorting packages with dependencies so that the dependencies are always installed first is a topological sort.  So, I took a look around and found Sergio Carvallho&#039;s &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=354&amp;amp;entry_id=158&quot; title=&quot;http://pear.php.net/Structures_Graph&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/Structures_Graph&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Structures_Graph&lt;/a&gt; package at pear.php.net (although it was not easy, pear.php.net&#039;s search facilities are pretty feeble now, stay tuned for improvements at some point in the near future).  The package has a full implementation of topological sorting plus a few other things I won&#039;t need, but I now have a working implementation as part of the PEAR package.&lt;/p&gt;&lt;p&gt;This will unfortunately delay the release of PEAR 1.5.0 stable, as I consider this bug to be a critical bug.  Why?&lt;/p&gt;&lt;p&gt;When PEAR installs dependent packages that are of dependency type &amp;quot;subpackage&amp;quot; it does a special trick.  First, a little background:&lt;/p&gt;&lt;p&gt;Subpackage dependencies are designed to facilitate the splitting of large, bloated packages into lithe, efficient package and subpackages.  In order to do this, PEAR must cleverly remove the files in the subpackage from the parent package prior to installation, otherwise we&#039;ll get a file conflict.  If the packages are installed in the wrong order, this causes serious doodoo to hit the fan.  Look for the fix in the next release candidate, PEAR 1.5.0RC3&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 19 Dec 2006 19:12:49 -0800</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/158-guid.html</guid>
    
</item>
<item>
    <title>Be careful of PEAR 1.4.4 and older installs when uninstalling a package</title>
    <link>http://greg.chiaraquartet.net/archives/157-Be-careful-of-PEAR-1.4.4-and-older-installs-when-uninstalling-a-package.html</link>
            <category>PEAR</category>
    
    <comments>http://greg.chiaraquartet.net/archives/157-Be-careful-of-PEAR-1.4.4-and-older-installs-when-uninstalling-a-package.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=157</wfw:comment>

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

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    
&lt;p&gt;Recently, a curious bug was opened at pear.php.net for the PEAR package (&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=348&amp;amp;entry_id=157&quot; title=&quot;http://pear.php.net/bugs/bug.php?id=9639&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/bugs/bug.php?id=9639&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;#9639&lt;/a&gt;).  In it, a user was able to uninstall the &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=349&amp;amp;entry_id=157&quot; title=&quot;http://pear.php.net/Structures_DataGrid&quot;  onmouseover=&quot;window.status=&#039;http://pear.php.net/Structures_DataGrid&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Structures_DataGrid&lt;/a&gt; package, even though all of its subpackages were installed, which should have prevented uninstallation.  As you can see in the comments, a test of installation followed by uninstallation using the latest PEAR worked with flying colors.  Unfortunately, the package was installed with an older PEAR version.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=350&amp;amp;entry_id=157&quot; title=&quot;http://cvs.php.net/viewvc.cgi/pear-core/PEAR/DependencyDB.php?r1=1.28&amp;amp;r2=1.29&quot;  onmouseover=&quot;window.status=&#039;http://cvs.php.net/viewvc.cgi/pear-core/PEAR/DependencyDB.php?r1=1.28&amp;amp;r2=1.29&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;This commit to PEAR/DependencyDB.php&lt;/a&gt; contains a subtle fix that allows successful registering all of a package&#039;s dependencies for uninstallation, something that was not available until PEAR 1.4.5.  If you have installed any complex packages using PEAR 1.4.4 or earlier, I highly recommend that you re-install them using PEAR 1.5.0RC2, or the 1.5.0 stable which will be released shortly after the new year (barring any new bugs in 1.5.0RC2).  To do this, you need not re-download all of the packages, simply run:&lt;/p&gt;&lt;p&gt;pear install --register-only --force &amp;lt;Packagename&amp;gt;&lt;/p&gt;&lt;p&gt;Where &amp;lt;Packagename&amp;gt; is the name of every package you installed with an older PEAR, or if you&#039;re not sure, the packages shown in when running &amp;quot;pear list&amp;quot;&lt;/p&gt;&lt;p&gt;This could be a huge pain in the rear end for some, and is why one of the must-have features I plan for PEAR 2.0 is a more robust registry that will allow reconstruction and repair without any of this monkey business.  Stay tuned for details on this and other enhancements planned.&lt;/p&gt;&lt;p /&gt; 
    </content:encoded>

    <pubDate>Mon, 18 Dec 2006 12:59:11 -0800</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/157-guid.html</guid>
    
</item>
<item>
    <title>sample chapter of PEAR Installer Manifesto available</title>
    <link>http://greg.chiaraquartet.net/archives/156-sample-chapter-of-PEAR-Installer-Manifesto-available.html</link>
            <category>PEAR</category>
    
    <comments>http://greg.chiaraquartet.net/archives/156-sample-chapter-of-PEAR-Installer-Manifesto-available.html#comments</comments>
    <wfw:comment>http://greg.chiaraquartet.net/wfwcomment.php?cid=156</wfw:comment>

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

    <author>nospam@example.com (Greg Beaver)</author>
    <content:encoded>
    &lt;p&gt;Shameless promotion time!&lt;/p&gt;&lt;p&gt;Packt has put up a sample chapter, Chapter 5 &amp;quot;PEAR Channels: releasing to the world&amp;quot; up at &lt;a href=&quot;http://greg.chiaraquartet.net/exit.php?url_id=347&amp;amp;entry_id=156&quot; title=&quot;http://www.packtpub.com/files/SampleChapter-The-PEAR-Installer-Manifesto.pdf&quot;  onmouseover=&quot;window.status=&#039;http://www.packtpub.com/files/SampleChapter-The-PEAR-Installer-Manifesto.pdf&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;http://www.packtpub.com/files/SampleChapter-The-PEAR-Installer-Manifesto.pdf&lt;/a&gt;.  Check it out to see what you&#039;re missing if you don&#039;t already own the book.&lt;/p&gt;&lt;p&gt;This chapter describes in detail how to set up a channel using the Chiara_PEAR_Server package from pear.chiaraquartet.net, and why channels are one of the killer features in PEAR 1.4.x+&lt;/p&gt;&lt;p&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 15 Dec 2006 15:34:22 -0800</pubDate>
    <guid isPermaLink="false">http://greg.chiaraquartet.net/archives/156-guid.html</guid>
    
</item>

</channel>
</rss>