<?xml version="1.0" encoding="iso-8859-1"?>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns="http://purl.org/rss/1.0/"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
>
    <channel rdf:about="http://pear.php.net/">
    <link>http://pear.php.net/</link>
    <dc:creator>pear-webmaster@lists.php.net</dc:creator>
    <dc:publisher>pear-webmaster@lists.php.net</dc:publisher>
    <dc:language>en-us</dc:language><items>
<rdf:Seq><rdf:li rdf:resource="http://pear.php.net/pepr/pepr-proposal-show.php?id=557"/>
<rdf:li rdf:resource="http://pear.php.net/pepr/pepr-proposal-show.php?id=551"/>
<rdf:li rdf:resource="http://pear.php.net/pepr/pepr-proposal-show.php?id=550"/>
<rdf:li rdf:resource="http://pear.php.net/pepr/pepr-proposal-show.php?id=549"/>
<rdf:li rdf:resource="http://pear.php.net/pepr/pepr-proposal-show.php?id=540"/>
<rdf:li rdf:resource="http://pear.php.net/pepr/pepr-proposal-show.php?id=531"/>
<rdf:li rdf:resource="http://pear.php.net/pepr/pepr-proposal-show.php?id=515"/>
<rdf:li rdf:resource="http://pear.php.net/pepr/pepr-proposal-show.php?id=512"/>
<rdf:li rdf:resource="http://pear.php.net/pepr/pepr-proposal-show.php?id=509"/>
<rdf:li rdf:resource="http://pear.php.net/pepr/pepr-proposal-show.php?id=506"/>
</rdf:Seq>
</items>

<title>PEPr: Latest proposals.</title>
<description>The latest PEPr proposals.</description>
</channel>

<item rdf:about="http://pear.php.net/pepr/pepr-proposal-show.php?id=557">
 <title>PEPr Proposal [557]: PHP::Kernel</title>
 <link>http://pear.php.net/pepr/pepr-proposal-show.php?id=557</link>
 <content:encoded>&lt;br /&gt;
Proposed package:        PHP::Kernel&lt;br /&gt;&lt;br /&gt;
Proposer:                &lt;a href=&quot;/user/tsvetanfilev&quot;&gt;Tsvetan Filev&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;p&gt;PHP framework for rapid applications development. Automatic environment recognition: mobile devices; SOAP; XML-RPC; RSS&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;

 </content:encoded>
 <dc:date>2008-05-02T11:16:41-05:00</dc:date>
</item>
<item rdf:about="http://pear.php.net/pepr/pepr-proposal-show.php?id=551">
 <title>PEPr Proposal [551]: RFC::Lowercase namespace/package names in PEAR2</title>
 <link>http://pear.php.net/pepr/pepr-proposal-show.php?id=551</link>
 <content:encoded>&lt;br /&gt;
Proposed package:        RFC::Lowercase namespace/package names in PEAR2&lt;br /&gt;&lt;br /&gt;
Proposer:                &lt;a href=&quot;/user/tswicegood&quot;&gt;Travis Swicegood&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
With the introduction of namespaces we have the challenge of determining what part of a fully-qualified package name is the namespace and what is the class.  This becomes a larger issue when you try to instantiate what is only a namespace.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
To help with this issue, I am proposing we move to lowercase characters to signify what is part of the full name is the namespace/package name, and what part is the object.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;Examples&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;
These examples are written assuming RFC #549 passes:&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
The Text_Diff package in PEAR becomes pear2::text_diff.  The class Text_Diff becomes pear2::text_diff::Diff.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
The Text_CAPTCHA package in PEAR becomes pear2::text_captcha.  The class Text_CAPTCHA becomes pear2::text_captcha::CAPTCHA.
 </content:encoded>
 <dc:date>2008-04-13T21:27:36-05:00</dc:date>
</item>
<item rdf:about="http://pear.php.net/pepr/pepr-proposal-show.php?id=550">
 <title>PEPr Proposal [550]: Web Services::Services_GeoNames</title>
 <link>http://pear.php.net/pepr/pepr-proposal-show.php?id=550</link>
 <content:encoded>&lt;br /&gt;
Proposed package:        Web Services::Services_GeoNames&lt;br /&gt;&lt;br /&gt;
Proposer:                &lt;a href=&quot;/user/izi&quot;&gt;David Jean Louis&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;p&gt;PEAR interface to the &lt;a href=&quot;http://www.geonames.org/export/web-services.html&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;GeoNames web services&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;The GeoNames database contains over 8,000,000 geographical names corresponding to over 6,500,000 unique features. All features are categorized into one out of nine feature classes and further subcategorized into one out of 645 feature codes. Beyond names of places in various languages, data stored include latitude, longitude, elevation, population, administrative subdivision and postal codes. All coordinates use the WGS84 system (World Geodetic System 1984).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Those data are accessible free of charge through a number of Web services and a daily database export. The Web services include direct and reverse geocoding, finding places through postal codes, finding places next to a given place, and finding Wikipedia articles about neighbouring places.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;You will find more informations on the &lt;a href=&quot;http://www.geonames.org/&quot; onclick=&quot;window.open(this.href, '_blank'); return false;&quot;&gt;GeoNames website&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;

 </content:encoded>
 <dc:date>2008-04-10T02:57:03-05:00</dc:date>
</item>
<item rdf:about="http://pear.php.net/pepr/pepr-proposal-show.php?id=549">
 <title>PEPr Proposal [549]: RFC::Package Naming Conventions</title>
 <link>http://pear.php.net/pepr/pepr-proposal-show.php?id=549</link>
 <content:encoded>&lt;br /&gt;
Proposed package:        RFC::Package Naming Conventions&lt;br /&gt;&lt;br /&gt;
Proposer:                &lt;a href=&quot;/user/tswicegood&quot;&gt;Travis Swicegood&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;note this is a work in progress that is merely a collection of notes at this point&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
This RFC calls for a change in the way package names are mapped to namespaces.  It will use existing packages within the context of PEAR2 will be used throughout to show how existing code would fix into this.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
Using PEAR's Text_Diff class in the Text_Diff package, in PEAR2 the class would become PEAR2::Text_Diff::Diff.  Or in PHP code:&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;br /&gt;
namespace PEAR2::Text_Diff;&lt;br /&gt;&lt;br /&gt;
class Diff&lt;br /&gt;&lt;br /&gt;
{&lt;br /&gt;&lt;br /&gt;
    ....&lt;br /&gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
This package/namespace combination is reached via:&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;br /&gt;
namespace Vendor::Package;&lt;br /&gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
PEAR2 is the Vendor, the package name is Text_Diff.  Within the current directory structure, this would map to include_path/PEAR2/Text_Diff/Diff.php.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;Background&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
PEAR packages currently do not enforce a single-directory, single-package rule.  This makes it harder contain packages within a version control system through means such as Subversion's svn:externals or Git's submodules.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
This proposal is aimed at making the package name map to a specific directory and that each file within that directory is considered part of its package.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;Benefits&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt; Tracking packages within a version control system is easier as most modern vcs delineate externals along directory lines&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt; Keeps existing package names in tact&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt; Allows classes to be properly named by their use instead of forcing names by their location within a directory hierarchy&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt; Helps explicitly show what is a class and what is a namespace (first two elements are always Vendor and Package Name, everything else is the class)&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;Drawbacks&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt; Changes existing, 9 year structure&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;li&gt; Changes existing behavior of &amp;quot;_&amp;quot;&lt;br /&gt;&lt;br /&gt;
&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;Examples&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
The examples that follow are meant to be illustrative of how an existing package might fit into this new structure.  These are not meant as a discussion of the benefits of one particular implement over another, but only so we are discussing familiar code.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;&lt;em&gt;MDB2 Example&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;&lt;br /&gt;
namespace PEAR2::MDB2;&lt;br /&gt;&lt;br /&gt;
class MDB2 {&lt;br /&gt;&lt;br /&gt;
    ...&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
namespace PEAR2::MDB2_MySQLDriver {&lt;br /&gt;&lt;br /&gt;
class Driver {&lt;br /&gt;&lt;br /&gt;
    ...&lt;br /&gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
The existing MDB2 package presents a unique case with its package and sub-package model.  The current PEAR implementation of its drivers requires the naming convention &amp;quot;MDB2_Driver_&amp;lt;SomeDriver&amp;gt;&amp;quot; in order to keep all of the drivers in a central location.  With the new autoload capable code, you would check for the existence of a properly named package, the MDB2_MySQLDriver (note that MySQL in this package name modifies the &amp;quot;Driver&amp;quot;, and not the other way around).&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;&lt;br /&gt;
// possible snippet for checking for a driver...&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
$driver_name = $this-&amp;gt;getFullyQualifiedDriverName($driver);&lt;br /&gt;&lt;br /&gt;
if (!class_exists($driver_name, true)) {&lt;br /&gt;&lt;br /&gt;
    throw new UnknownDriverException($driver);&lt;br /&gt;&lt;br /&gt;
}&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
// etc., etc.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
function getFullyQualifiedDriverName($driver) {&lt;br /&gt;&lt;br /&gt;
    if (strpos('::', $driver) === false) {&lt;br /&gt;&lt;br /&gt;
        $driver = 'PEAR2::MDB2_' . $driver . 'Driver::Driver';&lt;br /&gt;&lt;br /&gt;
    }&lt;br /&gt;&lt;br /&gt;
    return $driver;&lt;br /&gt;&lt;br /&gt;
}&lt;br /&gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
This also allows for the presence of a namespace token (&amp;quot;::&amp;quot;) to signify that you want to use your own driver that's not part of the PEAR2's MDB2 distribution.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;strong&gt;Text_Diff and Text_CAPTCHA Example&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;&lt;br /&gt;
// located in include_path/PEAR2/Text_Diff/Diff.php&lt;br /&gt;&lt;br /&gt;
namespace PEAR2::Text_Diff;&lt;br /&gt;&lt;br /&gt;
class Diff {&lt;br /&gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;&lt;br /&gt;
// located in include_path/PEAR2/Text_CAPTCHA/CAPTCHA.php&lt;br /&gt;&lt;br /&gt;
namespace PEAR2::Text_CAPTCHA;&lt;br /&gt;&lt;br /&gt;
class CAPTCHA {&lt;br /&gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
This demonstrates two classes that could very possibly be used in conjunction.  In a normal PEAR style installation, these two files would be located in the same directory.  The new method would put both of them in their own directories, allowing external developers to track versions independently.
 </content:encoded>
 <dc:date>2008-04-06T15:32:23-05:00</dc:date>
</item>
<item rdf:about="http://pear.php.net/pepr/pepr-proposal-show.php?id=540">
 <title>PEPr Proposal [540]: Framework::Trigger</title>
 <link>http://pear.php.net/pepr/pepr-proposal-show.php?id=540</link>
 <content:encoded>&lt;br /&gt;
Proposed package:        Framework::Trigger&lt;br /&gt;&lt;br /&gt;
Proposer:                &lt;a href=&quot;/user/wattz&quot;&gt;Wesley Cope&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
Trigger 1.0 (&lt;a href=&quot;http://openrosewood.com/files/trigger-1.0.tar.gz&quot;&gt;http://openrosewood.com/files/trigger-1.0.tar.gz&lt;/a&gt;) is a small base framework for developing PHP5+ applications.  With no complex DB structures (our db abstraction is mysqli with  3 helper functions).  Following the standard (and strictly) Model View Controller (MVC) structure, Trigger is the smallest, fast, and most stable frameworks available.  Utilizing PEAR setup and installation practices would allow for Trigger to have a central install of system files and make using trigger easier.  Also with the plugin system, trigger can utilize PEAR packages when ever someone wants to use them
 </content:encoded>
 <dc:date>2008-03-09T13:51:22-05:00</dc:date>
</item>
<item rdf:about="http://pear.php.net/pepr/pepr-proposal-show.php?id=531">
 <title>PEPr Proposal [531]: Encryption::Crypt_OpenSSL</title>
 <link>http://pear.php.net/pepr/pepr-proposal-show.php?id=531</link>
 <content:encoded>&lt;br /&gt;
Proposed package:        Encryption::Crypt_OpenSSL&lt;br /&gt;&lt;br /&gt;
Proposer:                &lt;a href=&quot;/user/saparovpa&quot;&gt;Pavel Saparov&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
This package is an openssl certificate wrapper, it contains functions such as:&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
* encryption/decryption with public and private keys&lt;br /&gt;&lt;br /&gt;
* creating and signing a new certificate&lt;br /&gt;&lt;br /&gt;
* retreiving infomation about the certificate&lt;br /&gt;&lt;br /&gt;
* checking if certificate corresponds to a private key&lt;br /&gt;&lt;br /&gt;
* validating usage purpose of the certificate
 </content:encoded>
 <dc:date>2008-02-21T04:45:22-05:00</dc:date>
</item>
<item rdf:about="http://pear.php.net/pepr/pepr-proposal-show.php?id=515">
 <title>PEPr Proposal [515]: XML::XML_Feed</title>
 <link>http://pear.php.net/pepr/pepr-proposal-show.php?id=515</link>
 <content:encoded>&lt;br /&gt;
Proposed package:        XML::XML_Feed&lt;br /&gt;&lt;br /&gt;
Proposer:                &lt;a href=&quot;/user/mjijackson&quot;&gt;Michael Jackson&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
This package provides a base for XML feed generation classes to extend from. Already, two implementations (RSS2 and Atom) are complete. Combined with XML_Feed_Parser, this package will provide complete support for reading/writing all of the most popular types of XML feeds with PHP.
 </content:encoded>
 <dc:date>2007-11-01T11:52:58-05:00</dc:date>
</item>
<item rdf:about="http://pear.php.net/pepr/pepr-proposal-show.php?id=512">
 <title>PEPr Proposal [512]: Web Services::Services_OAuth</title>
 <link>http://pear.php.net/pepr/pepr-proposal-show.php?id=512</link>
 <content:encoded>&lt;br /&gt;
Proposed package:        Web Services::Services_OAuth&lt;br /&gt;&lt;br /&gt;
Proposer:                &lt;a href=&quot;/user/padraic&quot;&gt;Pádraic Brady&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
Implementation of the OAuth 1.0 Specification in PHP5.
 </content:encoded>
 <dc:date>2007-10-15T17:59:06-05:00</dc:date>
</item>
<item rdf:about="http://pear.php.net/pepr/pepr-proposal-show.php?id=509">
 <title>PEPr Proposal [509]: HTML::webface</title>
 <link>http://pear.php.net/pepr/pepr-proposal-show.php?id=509</link>
 <content:encoded>&lt;br /&gt;
Proposed package:        HTML::webface&lt;br /&gt;&lt;br /&gt;
Proposer:                &lt;a href=&quot;/user/steev&quot;&gt;Steven Goodwin&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
A method of generating HTML whereby the control and view handlers can&lt;br /&gt;&lt;br /&gt;
be abstracted, much like CSS does for layout on the client side.&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
WebFace comprises of four areas: view, control, authentification,&lt;br /&gt;&lt;br /&gt;
and debug. Each section contains abstractions for each part of a web page. They&lt;br /&gt;&lt;br /&gt;
may also interact, as demonstrated in the utils class.
 </content:encoded>
 <dc:date>2007-09-23T19:19:51-05:00</dc:date>
</item>
<item rdf:about="http://pear.php.net/pepr/pepr-proposal-show.php?id=506">
 <title>PEPr Proposal [506]: Web Services::Docuware</title>
 <link>http://pear.php.net/pepr/pepr-proposal-show.php?id=506</link>
 <content:encoded>&lt;br /&gt;
Proposed package:        Web Services::Docuware&lt;br /&gt;&lt;br /&gt;
Proposer:                &lt;a href=&quot;/user/jmertic&quot;&gt;John Mertic&lt;/a&gt;&amp;nbsp;[&lt;a href=&quot;http://pear.php.net/wishlist.php/jmertic&quot;&gt;Wishlist&lt;/a&gt;]&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
Interface to &lt;a href=&quot;http://www.docuware.com/&quot;&gt;Docuware&lt;/a&gt; Internet-Server version 3.0.
 </content:encoded>
 <dc:date>2007-09-11T13:33:25-05:00</dc:date>
</item>

</rdf:RDF>