<?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/"
   >
<channel>
    <title>Thomas Koch - eZ Publish</title>
    <link>http://koch.ro/blog/</link>
    <description>Dubio Sapientiae Initium.</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.4.1-1 - http://www.s9y.org/</generator>
    <pubDate>Wed, 23 Jun 2010 04:26:20 GMT</pubDate>

    <image>
        <url>http://koch.ro/blog/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Thomas Koch - eZ Publish - Dubio Sapientiae Initium.</title>
        <link>http://koch.ro/blog/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>NoSQL summer at lake constance</title>
    <link>http://koch.ro/blog/index.php?/archives/143-NoSQL-summer-at-lake-constance.html</link>
            <category>Debian</category>
            <category>eZ Publish</category>
            <category>free software</category>
            <category>freie software</category>
            <category>PHP</category>
            <category>Webtreff</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/143-NoSQL-summer-at-lake-constance.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=143</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=143</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    Have you already started to try out these new storage/database things commonly referred to as NoSQL? (For you google-bot, I&#039;m talking about CouchDB, Cassandra, HBase, Hadoop, Hypertable, MongoDB, Tokyo Cabinet, etc). Well, it&#039;s one thing to install and use them but another to understand all the computer science background about them.&lt;br /&gt;
Therefor many developers around the world thought to make this summer a &lt;a href=&quot;http://nosqlsummer.org/&quot;&gt;NoSQL summer&lt;/a&gt;. Local meetings are held in many cities: London, Los Angeles, New York, Paris, &lt;a href=&quot;http://nosqlsummer.org/city/lake-constance&quot;&gt;lake constance&lt;/a&gt; ... &lt;img src=&quot;http://koch.ro/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
If you like to meet for a beer and learn and discuss about some of the hottest stuff in computing, then come around! Please &lt;a href=&quot;http://www.youtick.net/v493/(hash)/eb3ed31aae7e8897db12450b8a444064&quot;&gt;select the dates when you can join&lt;/a&gt; and the &lt;a href=&quot;http://www.youtick.net/v495/(hash)/763bc7afdbce0fd31e25c4f7fc6a4870&quot;&gt;papers you&#039;d like to discuss&lt;/a&gt;. You can subscribe to email announcements or ical and rss feeds at the &lt;a href=&quot;http://nosqlsummer.org/city/lake-constance&quot;&gt;lake constance nosql summer page&lt;/a&gt;.  
    </content:encoded>

    <pubDate>Thu, 17 Jun 2010 09:31:00 +0200</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/143-guid.html</guid>
    
</item>
<item>
    <title>Zookeeper for web developers</title>
    <link>http://koch.ro/blog/index.php?/archives/137-Zookeeper-for-web-developers.html</link>
            <category>eZ Publish</category>
            <category>PHP</category>
            <category>Webtreff</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/137-Zookeeper-for-web-developers.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=137</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=137</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    Have you ever developed any kind of distributed system? When doing so for the first time, you&#039;re very likely to fall in the trap of &lt;a href=&quot;http://en.wikipedia.org/wiki/Fallacies_of_Distributed_Computing&quot;&gt;the Fallacies of Distributed Computing&lt;/a&gt;. I&#039;ve done so, you&#039;ll do so too.&lt;br /&gt;
Now &lt;a href=&quot;http://hadoop.apache.org/zookeeper/&quot;&gt;zookeeper&lt;/a&gt; is an application, that helps you implement many &lt;a href=&quot;http://hadoop.apache.org/zookeeper/docs/current/recipes.html&quot;&gt;distributed protocols&lt;/a&gt; on top of it. The hard work of implementing fault tolerance, assuring consistency and that kind of stuff is done by zookeeper in the background. A zookeeper cluster consists of at least three servers running zookeeper (zk). A client can connect to each zk server and issue read and write requests. Zookeeper guaranties that a write either fails or is consistent and that a read will get you the most recent state.&lt;br /&gt;
Zookeeper exposes a filesystem like hierarchy of so called znodes. Every znode can have children but also stores data. The data stored in a znode is assumed to be small (less then 1MB). Clients can subscribe to different events on a znode and will be notified of changes in the znode itself of it&#039;s children.&lt;br /&gt;
Some usage examples come to my mind, which could be especially interesting for PHP developers:&lt;br /&gt;
&lt;ul&gt; &lt;li&gt;save the PHP session in zk and have it therefor available to all web servers&lt;/li&gt; &lt;li&gt;save a shopping card&lt;/li&gt; &lt;li&gt;save the online status of a user (for a chat system)&lt;/li&gt; &lt;li&gt;synchronize configuration files&lt;/li&gt; &lt;li&gt;master election: many monitoring servers, but only one is active at any given time&lt;/li&gt; &lt;li&gt;logging system: bookkeeper is a zk contribution, that receives your logs and assures they&#039;ll be kept save&lt;/li&gt;&lt;li&gt;create a lock on a document in a CMS&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;
&lt;a href=&quot;http://wiki.apache.org/hadoop/ZooKeeper/PoweredBy&quot;&gt;Companies that use zk&lt;/a&gt; include Facebook, Yahoo, Rackspace and as rumors tell also twitter.&lt;br /&gt;
Now this is all kind and sweet, the only sad thing is, there&#039;s no PHP binding yet. There are bindings for Java, C, Python and Perl. So if you&#039;re desperately searching what PHP extension you should write next, just take the zk C binding and expose it to PHP!&lt;br /&gt;
Maybe you&#039;re a student and would like to participate in the Google Summer of Code? It should be possible to find a mentor for this project either in the PHP or zk project.&lt;br /&gt;
For GSOC the project could include a PHP session implementation in the extension code and the possibility of persistent zk sessions across PHP calls.&lt;br /&gt;
If you&#039;re in the region of eastern Switzerland: There&#039;ll be a presentation about zookeeper at the &lt;a href=&quot;http://lists.koch.ro/listinfo/webtreff&quot;&gt;Webtreff Kreuzlingen&lt;/a&gt; on one of the next mondays. 
    </content:encoded>

    <pubDate>Fri, 19 Feb 2010 10:42:48 +0100</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/137-guid.html</guid>
    
</item>
<item>
    <title>Going to FOSDEM 2010</title>
    <link>http://koch.ro/blog/index.php?/archives/136-Going-to-FOSDEM-2010.html</link>
            <category>eZ Publish</category>
            <category>free software</category>
            <category>freie software</category>
            <category>PHP</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/136-Going-to-FOSDEM-2010.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=136</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=136</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    I&#039;m going to fosdem 2010.  &lt;p&gt; &lt;a href=&quot;http://www.fosdem.org/2010&quot;&gt;&lt;img height=&quot;89px&quot; width=&quot;150px&quot; alt=&quot;I&#039;m going to Fosdem 2010&quot; src=&quot;http://www.fosdem.org/promo/going-to&quot; title=&quot;I&#039;m going to Fosdem 2010&quot;&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;
These are things I&#039;d like to attend:&lt;br /&gt;
 &lt;TABLE&gt;&lt;thead&gt; &lt;TR&gt; &lt;TH&gt;time&lt;/TH&gt; &lt;TH&gt;room&lt;/TH&gt; &lt;TH&gt;topic&lt;/TH&gt; &lt;TH&gt;speaker&lt;/TH&gt; &lt;/TR&gt; &lt;/thead&gt; &lt;TBODY&gt; &lt;TR&gt; &lt;TD &gt;10:45-11:30&lt;/TD&gt; &lt;TD &gt;Janson&lt;/TD&gt; &lt;TD &gt;Promoting Open Source Methods at a Large Company&lt;/TD&gt; &lt;TD &gt;Brooks Davis&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD BGCOLOR=&quot;#CCCCCC&quot;&gt;13:15-13:45&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#CCCCCC&quot;&gt;AY&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#CCCCCC&quot;&gt;Packaging Java Software for Debian&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#CCCCCC&quot;&gt;Thomas Koch&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;13:40-13:55&lt;/TD&gt; &lt;TD &gt;Ferrer&lt;/TD&gt; &lt;TD &gt;CiviCRM: Common goals of FOSS and Not For Profit Organisations&lt;/TD&gt; &lt;TD &gt;Xavier DUTOIT&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;14:00-14:45&lt;/TD&gt; &lt;TD &gt;H.1308&lt;/TD&gt; &lt;TD &gt;The Maemo Community Council: a case-study in governance&lt;/TD&gt; &lt;TD &gt;Dave Neary&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;14:00-15:30&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;Guillissen&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;LPI exam session 1&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;Klaus Behrla&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;14:00-14:45&lt;/TD&gt; &lt;TD &gt;Janson&lt;/TD&gt; &lt;TD &gt;What is my system doing - Full System Observability with SystemTap&lt;/TD&gt; &lt;TD &gt;Mark Wielaard&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;14:30-15:00&lt;/TD&gt; &lt;TD &gt;H.2213&lt;/TD&gt; &lt;TD &gt;Building Federated Social Networks on XMPP&lt;/TD&gt; &lt;TD &gt;Tuomas Koski, Simon Tennant&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;15:00-15:45&lt;/TD&gt; &lt;TD &gt;Janson&lt;/TD&gt; &lt;TD &gt;Ganglia: 10 years of monitoring clusters and grids&lt;/TD&gt; &lt;TD &gt;Bernard Li&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;15:00-15:30&lt;/TD&gt; &lt;TD &gt;H.2213&lt;/TD&gt; &lt;TD &gt;XMPP and the Social Web&lt;/TD&gt; &lt;TD &gt;Alard Weisscher, Laurent Eschenauer&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;15:30-16:00&lt;/TD&gt; &lt;TD &gt;H.2213&lt;/TD&gt; &lt;TD &gt;PubSub Gone Wild: Info Sharing at Mediamatic&lt;/TD&gt; &lt;TD &gt;Ralph Meijer&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;16:00-17:30&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;Guillissen&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;LPI exam session 2&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;Klaus Behrla&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;16:00-16:15&lt;/TD&gt; &lt;TD &gt;Ferrer&lt;/TD&gt; &lt;TD &gt;SIP Communicator: Skype-like conf calls with SIP Communicator&lt;/TD&gt; &lt;TD &gt;Emil Ivov&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;16:20-16:35&lt;/TD&gt; &lt;TD &gt;Ferrer&lt;/TD&gt; &lt;TD &gt;Kamailio (OpenSER) 3.0.0: redefinition of SIP server&lt;/TD&gt; &lt;TD &gt;Daniel-Constantin Mierla&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;16:40-16:55&lt;/TD&gt; &lt;TD &gt;Ferrer&lt;/TD&gt; &lt;TD &gt;asterisk: An introduction to Asterisk Development&lt;/TD&gt; &lt;TD &gt;Mark Michelson&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;17:00-17:15&lt;/TD&gt; &lt;TD &gt;Ferrer&lt;/TD&gt; &lt;TD &gt;csync: Roaming Home Directories&lt;/TD&gt; &lt;TD &gt;Andreas Schneider&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;17:30-18:00&lt;/TD&gt; &lt;TD &gt;H.2213&lt;/TD&gt; &lt;TD &gt;Jingle Nodes: An Open Alternative to Skype&lt;/TD&gt; &lt;TD &gt;Tiago Camargo&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;18:00-18:30&lt;/TD&gt; &lt;TD &gt;H.2213&lt;/TD&gt; &lt;TD &gt;Multi-User Jingle: Voice and Video Conferencing with XMPP&lt;/TD&gt; &lt;TD &gt;Dafydd Harries, Sjoerd Simons&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;18:15-19:00&lt;/TD&gt; &lt;TD &gt;H.1302&lt;/TD&gt; &lt;TD &gt;Spacewalk: Linux Systems Lifecycle Management&lt;/TD&gt; &lt;TD &gt;Marcus Moeller, Sandro Mathys&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;&lt;BR /&gt;&lt;/TD&gt; &lt;TD &gt;&lt;BR /&gt;&lt;/TD&gt; &lt;TD &gt;&lt;BR /&gt;&lt;/TD&gt; &lt;TD &gt;&lt;BR /&gt;&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;&lt;BR /&gt;&lt;/TD&gt; &lt;TD &gt;&lt;BR /&gt;&lt;/TD&gt; &lt;TD &gt;&lt;BR /&gt;&lt;/TD&gt; &lt;TD &gt;&lt;BR /&gt;&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;09:15-10:00&lt;/TD&gt; &lt;TD &gt;H.1302&lt;/TD&gt; &lt;TD &gt;Linux distribution for the cloud&lt;/TD&gt; &lt;TD &gt;Peter Eisentraut&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;10:00-10:45&lt;/TD&gt; &lt;TD &gt;Janson&lt;/TD&gt; &lt;TD &gt;RepRap - Manufacturing for the Masses&lt;/TD&gt; &lt;TD &gt;Adrian Bowyer&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;10:30-12:00&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;Guillissen&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;LPI exam session 3&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;Klaus Behrla&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;11:00-11:45&lt;/TD&gt; &lt;TD &gt;AW1.120&lt;/TD&gt; &lt;TD &gt;My life with HBase&lt;/TD&gt; &lt;TD &gt;Lars George&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;11:00-11:45&lt;/TD&gt; &lt;TD &gt;Janson&lt;/TD&gt; &lt;TD &gt;Tor: Building, Growing, and Extending Online Anonymity&lt;/TD&gt; &lt;TD &gt;Andrew Lewman&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD BGCOLOR=&quot;#CCCCCC&quot;&gt;12:15-13:00&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#CCCCCC&quot;&gt;H.1302&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#CCCCCC&quot;&gt;Cross distro packaging with (top)git&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#CCCCCC&quot;&gt;Thomas Koch&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;12:15-13:00&lt;/TD&gt; &lt;TD &gt;H.1308&lt;/TD&gt; &lt;TD &gt;Shared libraries in Debian&lt;/TD&gt; &lt;TD &gt;Sune Vuorela&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;13:00-14:30&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;Guillissen&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;LPI exam session 4&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;Klaus Behrla&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;13:15-14:00&lt;/TD&gt; &lt;TD &gt;AW1.120&lt;/TD&gt; &lt;TD &gt;CouchDB, a database designed for the web and more&lt;/TD&gt; &lt;TD &gt;Benoit Chesneau&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;14:00-14:45&lt;/TD&gt; &lt;TD &gt;Janson&lt;/TD&gt; &lt;TD &gt;Large scale data analysis made easy - Apache Hadoop&lt;/TD&gt; &lt;TD &gt;Isabel Drost&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;15:00-16:30&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;Guillissen&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;LPI exam session 5&lt;/TD&gt; &lt;TD BGCOLOR=&quot;#E6E6E6&quot;&gt;Klaus Behrla&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;15:30-16:15&lt;/TD&gt; &lt;TD &gt;H.1308&lt;/TD&gt; &lt;TD &gt;Continuous Packaging with Project-Builder.org&lt;/TD&gt; &lt;TD &gt;Bruno Cornec&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;15:30-16:15&lt;/TD&gt; &lt;TD &gt;AW1.120&lt;/TD&gt; &lt;TD &gt;Comparing the MapReduce way in CouchDB with the SQL way in a RDBMS&lt;/TD&gt; &lt;TD &gt;Stéphane Combaudon&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;16:15-16:45&lt;/TD&gt; &lt;TD &gt;AW1.120&lt;/TD&gt; &lt;TD &gt;Designing a scalable content management system on NoSQL technologies&lt;/TD&gt; &lt;TD &gt;Evert Arckens&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD &gt;16:15-17:00&lt;/TD&gt; &lt;TD &gt;H.1308&lt;/TD&gt; &lt;TD &gt;Debian Secrets: power tools for power users&lt;/TD&gt; &lt;TD &gt;Wouter Verhelst&lt;/TD&gt; &lt;/TR&gt; &lt;/TBODY&gt; &lt;/TABLE&gt; 
    </content:encoded>

    <pubDate>Sat, 30 Jan 2010 20:52:08 +0100</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/136-guid.html</guid>
    
</item>
<item>
    <title>eZ Components Template is not slow...</title>
    <link>http://koch.ro/blog/index.php?/archives/133-eZ-Components-Template-is-not-slow....html</link>
            <category>eZ Publish</category>
            <category>PHP</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/133-eZ-Components-Template-is-not-slow....html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=133</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=133</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    ... you may just not have used it appropriately. Fabien Potencier has &lt;a href=&quot;http://fabien.potencier.org/article/34/templating-engines-in-php&quot;&gt;blogged about templating engines&lt;/a&gt;, compared their speed and finally concluded that his own templating engine is the fastest. Not only that, but my beloved &lt;a href=&quot;http://ezcomponents.org/docs/tutorials/Template&quot;&gt;eZ Components Template&lt;/a&gt; engine, which we use with great pleasure at &lt;a href=&quot;http://www.ymc.ch&quot;&gt;YMC&lt;/a&gt;, came out as the slowest in his benchmark. (Althought he complimented it as &quot;probably the one which have the most features&quot;.)&lt;br /&gt;
&lt;br /&gt;
Dear Fabien, I think it&#039;s not fair to blog a benchmark without publishing the code you used to do the benchmark! But even without the code and without doing my own benchmark, I can offer some explanations, why eZ Components may have been the slowest in your benchmark and why you&#039;ve compared apples with oranges. I take the compiled template code from the &lt;a href=&quot;http://www.twig-project.org/book/05-Hacking-Twig&quot;&gt;Twig site&lt;/a&gt;: &lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;/&amp;#42;&amp;#160;Hello&amp;#160;{{&amp;#160;name&amp;#160;}}&amp;#160;&amp;#42;/
class&amp;#160;__TwigTemplate_1121b6f109fe93ebe8c6e22e3712bceb&amp;#160;extends&amp;#160;Twig_Template
{
&amp;#160;&amp;#160;public&amp;#160;function&amp;#160;display&amp;#40;$context&amp;#41;
&amp;#160;&amp;#160;{
&amp;#160;&amp;#160;&amp;#160;&amp;#160;$this-&amp;#62;env-&amp;#62;initRuntime&amp;#40;&amp;#41;;
&amp;#160;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;//&amp;#160;line&amp;#160;1
&amp;#160;&amp;#160;&amp;#160;&amp;#160;echo&amp;#160;&quot;Hello&amp;#160;&quot;;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;echo&amp;#160;&amp;#40;isset&amp;#40;$context&amp;#91;&#039;name&#039;&amp;#93;&amp;#41;&amp;#160;?&amp;#160;$context&amp;#91;&#039;name&#039;&amp;#93;&amp;#160;&amp;#58;&amp;#160;null&amp;#41;;
&amp;#160;&amp;#160;}
}&lt;/div&gt;&lt;br /&gt;
Thinks to keep in mind from the Twig compiled template: &lt;ul&gt;
&lt;li&gt;There&#039;s direct output via echo (which is captured by Twig and not directly sent out)&lt;/li&gt;
&lt;li&gt;The template variables are sent in the array $context&lt;/li&gt;
&lt;li&gt;There&#039;s no error check, whether the required template variable &#039;name&#039; is actually sent to the template&lt;/li&gt;
&lt;li&gt;The content of the variables is not escaped&lt;/li&gt;
&lt;/ul&gt;Now let&#039;s compare this with the compiled code produced by eZ Components Template. First the template:&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;{use&amp;#160;$name}
{use&amp;#160;$items}
&amp;#160;
Hello&amp;#160;{$name}
&amp;#160;
{foreach&amp;#160;$items&amp;#160;as&amp;#160;$item}
&amp;#160;&amp;#42;&amp;#160;{$item}
{/foreach}
&amp;#160;&lt;/div&gt;&lt;br /&gt;
And the resulting code:&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;&amp;#60;?php
//&amp;#160;Generated&amp;#160;PHP&amp;#160;file&amp;#160;from&amp;#160;template&amp;#160;code.
//&amp;#160;If&amp;#160;you&amp;#160;modify&amp;#160;this&amp;#160;file&amp;#160;your&amp;#160;changes&amp;#160;will&amp;#160;be&amp;#160;lost&amp;#160;when&amp;#160;it&amp;#160;is&amp;#160;regenerated.
$this-&amp;#62;checkRequirements&amp;#40;1,array&amp;#40;&quot;disableCache&quot;&amp;#160;=&amp;#62;&amp;#160;false&amp;#41;&amp;#41;;
$i_output&amp;#160;=&amp;#160;&quot;&quot;;
if&amp;#160;&amp;#40;&amp;#160;!isset&amp;#40;$this-&amp;#62;send-&amp;#62;name&amp;#41;&amp;#41;
{

&amp;#160;&amp;#160;&amp;#160;&amp;#160;throw&amp;#160;new&amp;#160;ezcTemplateRuntimeException&amp;#40;&amp;#160;sprintf&amp;#40;&quot;The&amp;#160;external&amp;#160;&amp;#40;use&amp;#41;&amp;#160;variable&amp;#160;&#039;%s&#039;&amp;#160;is&amp;#160;not&amp;#160;set&amp;#160;in&amp;#160;template&amp;#58;&amp;#160;%s&amp;#160;and&amp;#160;called&amp;#160;from&amp;#160;%s&quot;,&amp;#160;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&#039;name&#039;,
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$this-&amp;#62;template-&amp;#62;stream,
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#40;&amp;#160;sizeof&amp;#40;$this-&amp;#62;template-&amp;#62;streamStack&amp;#41;&amp;#160;&amp;#62;=&amp;#160;2&amp;#160;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;?&amp;#160;$this-&amp;#62;template-&amp;#62;streamStack&amp;#91;sizeof&amp;#40;$this-&amp;#62;template-&amp;#62;streamStack&amp;#41;&amp;#160;-&amp;#160;2&amp;#93;&amp;#160;&amp;#58;&amp;#160;&#039;the&amp;#160;application&amp;#160;code&#039;&amp;#41;&amp;#160;&amp;#41;&amp;#160;&amp;#41;;
}
if&amp;#160;&amp;#40;&amp;#160;!isset&amp;#40;$this-&amp;#62;send-&amp;#62;items&amp;#41;&amp;#41;
{

&amp;#160;&amp;#160;&amp;#160;&amp;#160;throw&amp;#160;new&amp;#160;ezcTemplateRuntimeException&amp;#40;&amp;#160;sprintf&amp;#40;&quot;The&amp;#160;external&amp;#160;&amp;#40;use&amp;#41;&amp;#160;variable&amp;#160;&#039;%s&#039;&amp;#160;is&amp;#160;not&amp;#160;set&amp;#160;in&amp;#160;template&amp;#58;&amp;#160;%s&amp;#160;and&amp;#160;called&amp;#160;from&amp;#160;%s&quot;,
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&#039;items&#039;,
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;$this-&amp;#62;template-&amp;#62;stream,
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#40;&amp;#160;sizeof&amp;#40;$this-&amp;#62;template-&amp;#62;streamStack&amp;#41;&amp;#160;&amp;#62;=&amp;#160;2&amp;#160;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;?&amp;#160;$this-&amp;#62;template-&amp;#62;streamStack&amp;#91;sizeof&amp;#40;$this-&amp;#62;template-&amp;#62;streamStack&amp;#41;&amp;#160;-&amp;#160;2&amp;#93;&amp;#160;&amp;#58;&amp;#160;&#039;the&amp;#160;application&amp;#160;code&#039;&amp;#41;&amp;#160;&amp;#41;&amp;#160;&amp;#41;;
}
$i_output&amp;#160;.=&amp;#160;&quot;&amp;#160;\nHello&amp;#160;&quot;;
$i_output&amp;#160;.=&amp;#160;htmlspecialchars&amp;#40;$this-&amp;#62;send-&amp;#62;name&amp;#41;;
$i_output&amp;#160;.=&amp;#160;&quot;\n&amp;#160;\n&quot;;
foreach&amp;#160;&amp;#40;$this-&amp;#62;send-&amp;#62;items&amp;#160;as&amp;#160;$t_item&amp;#41;
{
&amp;#160;&amp;#160;&amp;#160;&amp;#160;$i_output&amp;#160;.=&amp;#160;&quot;&amp;#42;&amp;#160;&quot;;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;$i_output&amp;#160;.=&amp;#160;htmlspecialchars&amp;#40;$t_item&amp;#41;;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;$i_output&amp;#160;.=&amp;#160;&quot;\n&quot;;
}
return&amp;#160;$i_output;
?&amp;#62;&lt;/div&gt;&lt;br /&gt;
The differences are:&lt;ul&gt;
&lt;li&gt;The output is collected in a variable, not with PHP&#039;s output buffering. I don&#039;t know whether this has a performance impact, but in any case it allows for much greater flexibility in the implementation of the template engine. Thus it&#039;s possible for example to&lt;bail out with an exception without worring about the output buffer&lt;/li&gt;
&lt;li&gt;The template variables do not come in a simple array but as an object of type ezcTemplateVariableCollection. This is surely slower as an array, but also allows to do great things.&lt;/li&gt;
&lt;li&gt;My favorite eZC Template feature: Every variable needs to be declared at the top of the template! I wish PHP would be that strict.&lt;/li&gt;
&lt;li&gt;And now the point which may be responsible for the observed performance impact: eZC Template by default escapes all variables with htmlspecialchars. This is of course configurable and so I could compare template execution time with escaping turned on and of: For an array of thousand elements it more then doubles the time.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
So in conclusion: Please post the benchmark code, so that we can debug it and please compare the template engines with the same features turned on or off! 
    </content:encoded>

    <pubDate>Fri, 09 Oct 2009 13:40:42 +0200</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/133-guid.html</guid>
    
</item>
<item>
    <title>Timeline of PHP quality assurance tools</title>
    <link>http://koch.ro/blog/index.php?/archives/132-Timeline-of-PHP-quality-assurance-tools.html</link>
            <category>eZ Publish</category>
            <category>PHP</category>
            <category>PHPUnit</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/132-Timeline-of-PHP-quality-assurance-tools.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=132</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=132</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    I&#039;ll be giving a talk on PHP quality assurance tools next week at the &lt;a href=&quot;http://gearconf.com/&quot;&gt;gearconf&lt;/a&gt; in Düsseldorf. The event is focused on team collaboration and most of the audience will come from other languages then PHP. Since I&#039;m not a contributor to any QA tool I&#039;ll center around the user perspective and the process of establishing these tools in a small to middle web company like &lt;a href=&quot;http://www.ymc.ch&quot;&gt;YMC&lt;/a&gt;.&lt;br /&gt;
As an outline for the first part I thought to give an historical view on QA in PHP and therefor made a timeline of PHP QA milestones: &lt;img width=&quot;80%&quot; height=&quot;80%&quot; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://koch.ro/blog/uploads/free_software/phpqa_timeline.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
The dates as text:&lt;ul&gt;
  &lt;li&gt;~1997 JUnit&lt;/li&gt;
  &lt;li&gt;6.4.2002 PHPUnit 0.1&lt;/li&gt;
  &lt;li&gt;28.8.2003 PHPUnit 1.0.0-alpha1 Release&lt;/li&gt;
  &lt;li&gt;13.7.2004 PHP5.0.0&lt;/li&gt;
  &lt;li&gt;14.7.2004 release PHPUnit2&lt;/li&gt;
  &lt;li&gt;30.1.2006 eZ Components 1.0&lt;/li&gt;
  &lt;li&gt;~sept 2006 ZF uses PHPUnit (issue #374)&lt;/li&gt;
  &lt;li&gt;4.10.2006 first integration of Selenium in PHPUnit&lt;/li&gt;
  &lt;li&gt;1.7.2007 Zend Framework 1.0&lt;/li&gt;
  &lt;li&gt;18.11.2007 first release of PHPUnderControl&lt;/li&gt;
  &lt;li&gt;19.11.2007 Project Mess Detection in PHPUnit&lt;/li&gt;
  &lt;li&gt;6.2.2008 first release PHP_Depend&lt;/li&gt;
  &lt;li&gt;march 2009 qualityassuranceinphpprojects.com, thePHP.cc&lt;/li&gt;
&lt;/ul&gt;main sources:&lt;br /&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.slideshare.net/sebastian_bergmann/von-entwurfsmustern-und-unit-tests&quot;&gt;Von Entwurfsmustern und Unit Tests&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://sebastian-bergmann.de/&quot;&gt;Blog of Sebastian Bergmann&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://manuel-pichler.de/&quot;&gt;Blog of Manuel Pichler&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Did I get all this right? Are there things I should have added? 
    </content:encoded>

    <pubDate>Sat, 26 Sep 2009 16:58:46 +0200</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/132-guid.html</guid>
    
</item>
<item>
    <title>eZ Components: The Good The Bad and the Ugly</title>
    <link>http://koch.ro/blog/index.php?/archives/125-eZ-Components-The-Good-The-Bad-and-the-Ugly.html</link>
            <category>english</category>
            <category>eZ Publish</category>
            <category>PHP</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/125-eZ-Components-The-Good-The-Bad-and-the-Ugly.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=125</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=125</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    I&#039;ve been nominated &lt;a href=&quot;http://ez.no/company/news/nominees_for_ez_awards_2007&quot;&gt;again&lt;/a&gt; for the &lt;a href=&quot;http://ez.no/company/ez_conference_awards/ez_awards&quot;&gt;eZ Components Award&lt;/a&gt;. Thanks to &lt;a href=&quot;http://ez.no&quot;&gt;eZ Systems&lt;/a&gt; for honour and to me employer &lt;a href=&quot;http://www.ymc.ch&quot;&gt;YMC&lt;/a&gt; for the food!&lt;br /&gt;
So this is a good occasion to assemble a list I&#039;ve had in mind for a longer time. In a big project like &lt;a href=&quot;http://ezcomponents.org&quot;&gt;eZ Components&lt;/a&gt;, which has been programmed by many contributors over a long time it is natural, that there are some better and some worse parts. So which components are the good, the bad and the ugly? Maybe this kind of overview could also be done by other users of other libraries too. Then we could assemble a big comparison table of framework or library components and one could pick the best parts of each.&lt;br /&gt;
You&#039;ll notice that even if I consider myself a power user of eZ Components, I won&#039;t give a rating for every component, because there are still a few, I&#039;ve not intensively used by now. So let&#039;s complete this table in a wiki somewhere together!&lt;br /&gt;
&lt;br /&gt;
So IMHO: &lt;table style=&quot;border:1px solid gray;&quot; rules=&quot;all&quot;&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;Component&lt;/th&gt;&lt;th&gt;rating&lt;/th&gt;&lt;th&gt;justification&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;Authentication&lt;/td&gt;   &lt;td&gt;works       &lt;/td&gt;&lt;td&gt;the component should better not handle $_SESSION itself      &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Cache&lt;/td&gt;            &lt;td&gt;not used yet&lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Configuration&lt;/td&gt;    &lt;td&gt;not used yet&lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;ConsoleTools&lt;/td&gt;     &lt;td&gt;great       &lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Database&lt;/td&gt;         &lt;td&gt;great       &lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;DatabaseSchema&lt;/td&gt;   &lt;td&gt;bad         &lt;/td&gt;&lt;td&gt;You want to have more control over your database schema.&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Document&lt;/td&gt;         &lt;td&gt;great       &lt;/td&gt;&lt;td&gt;first ReST parser in PHP? Also many other formats!&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;EventLog&lt;/td&gt;         &lt;td&gt;great       &lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Feed&lt;/td&gt;             &lt;td&gt;great       &lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Graph&lt;/td&gt;            &lt;td&gt;great       &lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;ImageAnalysis&lt;/td&gt;    &lt;td&gt;not used yet&lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;ImageConversion&lt;/td&gt;  &lt;td&gt;not used yet&lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Mail&lt;/td&gt;             &lt;td&gt;great       &lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;MvcTools&lt;/td&gt;         &lt;td&gt;works       &lt;/td&gt;&lt;td&gt;too few documentation of best practices&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;PersistentObject&lt;/td&gt; &lt;td&gt;great       &lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Search&lt;/td&gt;           &lt;td&gt;ugly        &lt;/td&gt;&lt;td&gt;sorry, but it&#039;s not flexible enough for more then the most basic needs&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;SignalSlot&lt;/td&gt;       &lt;td&gt;bad         &lt;/td&gt;&lt;td&gt;haven&#039;t seen any use case that convinces me&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;SystemInformation&lt;/td&gt;&lt;td&gt;bad         &lt;/td&gt;&lt;td&gt;doesn&#039;t comply to ezc coding guidelines&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Template&lt;/td&gt;         &lt;td&gt;great       &lt;/td&gt;&lt;td&gt;stable, fast, easily extensible&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Translation&lt;/td&gt;      &lt;td&gt;works       &lt;/td&gt;&lt;td&gt;Misses the important XLIFF format, but can be extended&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Tree&lt;/td&gt;             &lt;td&gt;not used yet&lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Url&lt;/td&gt;              &lt;td&gt;bad         &lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;UserInput&lt;/td&gt;        &lt;td&gt;ugly        &lt;/td&gt;&lt;td&gt;see my attempt for a new &lt;a href=&quot;http://github.com/thkoch2001/ymc-htmlform/tree/master&quot;&gt;form component&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Webdav&lt;/td&gt;           &lt;td&gt;not used yet&lt;/td&gt;&lt;td&gt;but looks very promissing!&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;Workflow&lt;/td&gt;         &lt;td&gt;great       &lt;/td&gt;&lt;td&gt;           &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; The numbers: &lt;ul&gt; &lt;li&gt;not used yet: 6/25&lt;/li&gt; &lt;li&gt;works: 3/25&lt;/li&gt; &lt;li&gt;great: 10/25&lt;/li&gt; &lt;li&gt;bad: 4/25&lt;/li&gt; &lt;li&gt;ugly: 2/25&lt;/li&gt; &lt;/ul&gt; 
    </content:encoded>

    <pubDate>Wed, 17 Jun 2009 11:07:21 +0200</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/125-guid.html</guid>
    
</item>
<item>
    <title>GIT vs SVN performance with eZ Components</title>
    <link>http://koch.ro/blog/index.php?/archives/112-GIT-vs-SVN-performance-with-eZ-Components.html</link>
            <category>eZ Publish</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/112-GIT-vs-SVN-performance-with-eZ-Components.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=112</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=112</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    The &lt;a href=&quot;http://www.ymc.ch/weblog/ez_components_feiert_10_000sten_commit&quot;  title=&quot;eZ Components 10000th commit&quot;&gt;eZ Components project could celebrate it&#039;s 10000th SVN commit&lt;/a&gt; this week. This does not only mean, that the project has matured and produced a big codebase, but also that one could easily observe the strenghts of GIT over SVN on this sample.&lt;br /&gt;
Thankfully in the same week, an &lt;a href=&quot;http://issues.ez.no/IssueView.php?Id=14666&quot;  title=&quot;#014666: Reduce size of checkout&quot;&gt;issue&lt;/a&gt; was filled, complaining that the SVN checkout of the eZ Components trunk takes ages to complete. Since we at &lt;a href=&quot;http://www.ymc.ch&quot;  title=&quot;YMC AG - web development&quot;&gt;YMC&lt;/a&gt; set up a &lt;a href=&quot;http://git.forge.ymc.ch/?p=ezcomponents.git;a=summary&quot;  title=&quot;eZ Components gitweb&quot;&gt;GIT mirror of eZ Components&lt;/a&gt; I could do a comparission of checkout duration. Unfortunately my comment with the exact numbers has been deleted from the issuetracker as unrelated GIT-propaganda-spam (as it was :-), so that I can only post the approximate numbers from my memory: &lt;div&gt;
&lt;ul&gt;
&lt;li&gt;
svn co http://svn.ez.no/svn/ezcomponents/trunk ~ 10 minutes
&lt;/li&gt;
&lt;li&gt;
git clone git://git.forge.ymc.ch/git/ezcomponents ~ 11 minutes (fetches full project history, 361 MB)
&lt;/li&gt;
&lt;li&gt;
git clone --depth 1 git://git.forge.ymc.ch/git/ezcomponents ~ 1.5 minutes (fetches only current state)
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;br /&gt;
The above numbers demonstrates two things&lt;br /&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;With GIT you can copy the whole 10000 commit history of eZ Components in roughly the same time as it takes to get only the current state with SVN.&lt;/li&gt;
&lt;li&gt;When fetching only the current state without history, GIT beats SVN by an order of magnitude.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt; 
    </content:encoded>

    <pubDate>Mon, 30 Mar 2009 09:53:35 +0200</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/112-guid.html</guid>
    
</item>
<item>
    <title>Community GIT repository for eZ Publish</title>
    <link>http://koch.ro/blog/index.php?/archives/109-Community-GIT-repository-for-eZ-Publish.html</link>
            <category>eZ Publish</category>
            <category>PHP</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/109-Community-GIT-repository-for-eZ-Publish.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=109</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=109</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    The eZ Publish Community came together in january to the &lt;a href=&quot;http://ez.no/developer/news/ez_community_newsletter_2_6th_february_2009&quot;&gt;International Winter Conference in Barcelona&lt;/a&gt;. One issue which has been discussed often at this meeting was how the development of &lt;a href=&quot;http://ez.no/developer/forum/general/ez_project_v_five&quot;&gt;eZ Publish could become more open&lt;/a&gt;.  &lt;br /&gt;
As part of a possible solution, I presented the &lt;a href=&quot;http://ez.no/developer/forum/suggestions/switch_to_git&quot;&gt;distributed version control system GIT&lt;/a&gt;. A &lt;a href=&quot;http://koch.ro/blog/index.php?/archives/104-GIT-for-the-eZ-Ecosystem-Survey-results.html&quot;&gt;poll&lt;/a&gt; made in preparation of the conference, has pointed out that half of the respondents already uses a modified version and therefor a kind of fork of eZ Publish. This number has also been confirmed by the conference participants. &lt;br /&gt;
As a result &lt;a href=&quot;http://blog.coomanskristof.be/2009/03/11/welcome-the-open-ez-publish-community-repository/&quot;&gt;Kristof Coomans&lt;/a&gt;, &lt;/a&gt;Kaarel Jõgi&lt;/a&gt;, and me think, that it is about time, to provide a community GIT repository of eZ Publish and thus allow everybody to work on things like: &lt;ul&gt; &lt;li&gt; make the default install of eZ Publish usable in more community related aspects: forums, blogs. This includes mostly templates and permission setup (no kernel modifications) and help people to get started with eZ Publish.  &lt;/li&gt; &lt;li&gt; improve the update mechanism of eZ Publish &lt;/li&gt; &lt;li&gt; replace ezwebin templating setup with something more sensible and more easily themeable, maybe look into blueprint css or some similiar &lt;/li&gt; &lt;li&gt; &lt;a href=&quot;http://ez.no/developer/forum/suggestions/2_years_ago&quot;&gt;AJAXify the admin area&lt;/a&gt; &lt;/li&gt; &lt;li&gt; include functionality from eZ Components: &lt;ul&gt; &lt;li&gt; ezcTemplate engine in parallel to old &lt;a href=&quot;http://ez.no/developer/forum/general/is_there_a_new_templating_system_in_ez_4_1&quot;&gt;eZ Publish templating&lt;/a&gt; &lt;/li&gt; &lt;li&gt; ezcConfiguration for ini file handling &lt;/li&gt; &lt;li&gt; ezcDatabase for query abstraction &lt;/li&gt; &lt;li&gt; ezcAuthentication to allow &lt;a href=&quot;http://ez.no/developer/forum/suggestions/ez_please_add_captcha_openid_to_ez_no&quot;&gt;more authentication mechanisms (OpenID!)&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt; &lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;
To make it possible, that feature branches can be included in an eZ Publish release, it would be suggested to respect the &lt;a href=&quot;http://ez.no/ezpublish/contributing&quot;&gt;development guidelines of eZ Systems&lt;/a&gt;. These affect not only the &lt;a href=&quot;http://ezcomponents.org/contributing/coding_standards&quot;&gt;implementation&lt;/a&gt; itself, but also the &lt;a href=&quot;http://ez.no/ezpublish/contributing&quot;&gt;development process&lt;/a&gt;. The most important characteristic of this process is the split up into these steps:  &lt;br /&gt;
&lt;ol&gt; &lt;li&gt; Requirements Discussion &lt;/li&gt; &lt;li&gt; Design Discussion &lt;/li&gt; &lt;li&gt; Test Driven Implementation &lt;/li&gt; &lt;li&gt; Review &lt;/li&gt; &lt;/ol&gt;&lt;br /&gt;
All of this steps need to be done openly on the &lt;a href=&quot;http://lists.ez.no/mailman/listinfo/sdk-public&quot;&gt;development mailing list&lt;/a&gt;.&lt;br /&gt;
My employer, &lt;a href=&quot;http://www.ymc.ch&quot;&gt;YMC&lt;/a&gt; was so kind to provide my working time and server ressources and let me setup a &lt;a href=&quot;http://git.forge.ymc.ch/&quot;&gt;git-svn clone of eZ Publish&lt;/a&gt; and an &lt;a href=&quot;http://forge.ymc.ch/issues&quot;&gt;issuetracker&lt;/a&gt;.&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Wed, 11 Mar 2009 19:51:42 +0100</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/109-guid.html</guid>
    
</item>
<item>
    <title>Why Zend Framework sucks. Part 1/infinite - Exceptions Missuse</title>
    <link>http://koch.ro/blog/index.php?/archives/108-Why-Zend-Framework-sucks.-Part-1infinite-Exceptions-Missuse.html</link>
            <category>eZ Publish</category>
            <category>PHP</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/108-Why-Zend-Framework-sucks.-Part-1infinite-Exceptions-Missuse.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=108</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=108</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    This is the first entry in a series of posts explaining, why you should never ever consider using Zend Framework. I write these entries, because I see many people considering Zend Framework, without knowing how bad it is and without knowing, that there are better alternatives. I&#039;m very fluent in &lt;a href=&quot;http://ezcomponents.org&quot;&gt;eZ Components&lt;/a&gt; so this is the alternative I propose and use as comparission. Please feel free to add your beloved PHP Framework or Library in the comments, but only when you point out, how it is better then ZF. &lt;a href=&quot;http://schlitt.info/&quot;&gt;Tobias Schlitt&lt;/a&gt; once found this (or similiar) code:&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;try&amp;#160;{
&amp;#160;&amp;#160;&amp;#160;&amp;#160;$username&amp;#160;=&amp;#160;$this-&amp;#62;_getAccountDn&amp;#40;$username&amp;#41;;
}&amp;#160;catch&amp;#160;&amp;#40;Zend_Ldap_Exception&amp;#160;$zle&amp;#41;&amp;#160;{
&amp;#160;&amp;#160;&amp;#160;&amp;#160;/&amp;#42;&amp;#42;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#42;&amp;#160;@todo&amp;#160;Temporary&amp;#160;measure&amp;#160;to&amp;#160;deal&amp;#160;with&amp;#160;exception&amp;#160;thrown&amp;#160;for&amp;#160;ldap&amp;#160;extension&amp;#160;not&amp;#160;loaded
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#42;/
&amp;#160;&amp;#160;&amp;#160;&amp;#160;if&amp;#160;&amp;#40;strpos&amp;#40;$zle-&amp;#62;getMessage&amp;#40;&amp;#41;,&amp;#160;&#039;LDAP&amp;#160;extension&amp;#160;not&amp;#160;loaded&#039;&amp;#41;&amp;#160;!==&amp;#160;false&amp;#41;&amp;#160;{
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;throw&amp;#160;$zle;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;}
&amp;#160;&amp;#160;&amp;#160;&amp;#160;//&amp;#160;end&amp;#160;temporary&amp;#160;measure
&amp;#160;&amp;#160;&amp;#160;&amp;#160;switch&amp;#160;&amp;#40;$zle-&amp;#62;getCode&amp;#40;&amp;#41;&amp;#41;&amp;#160;{
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;case&amp;#160;Zend_Ldap_Exception&amp;#58;&amp;#58;LDAP_NO_SUCH_OBJECT&amp;#58;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;case&amp;#160;Zend_Ldap_Exception&amp;#58;&amp;#58;LDAP_X_DOMAIN_MISMATCH&amp;#58;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;throw&amp;#160;$zle;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;}
&amp;#160;&amp;#160;&amp;#160;&amp;#160;throw&amp;#160;new&amp;#160;Zend_Ldap_Exception&amp;#40;null,
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&#039;Failed&amp;#160;to&amp;#160;retrieve&amp;#160;DN&amp;#160;for&amp;#160;account&amp;#58;&amp;#160;&#039;&amp;#160;.&amp;#160;$zle-&amp;#62;getMessage&amp;#40;&amp;#41;,
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;Zend_Ldap_Exception&amp;#58;&amp;#58;LDAP_OPERATIONS_ERROR&amp;#41;;
}&lt;/div&gt;&lt;br /&gt;
From: trunk/library/Zend/Ldap.php, Line 689&lt;br /&gt;
&lt;br /&gt;
Things to note:&lt;br /&gt;
&lt;br /&gt;
The message of an exception is checked to control program flow. This breaks encapsulation, since the message belongs to the exception class. It would have been better to make a subclass of the exception class and then use different catch clauses for different exception classes.&lt;br /&gt;
&lt;br /&gt;
The comment says, that this has been a temporary measure. But the programmer should have known, that there isn&#039;t something like a temporary measure in programming. Once you&#039;ve introduced a bad thing, you have to live with it for a very long time. Subversion also states, that this temporary measure has been introduced before January 2008.&lt;br /&gt;
&lt;br /&gt;
Update: Found the appropriate statement in the ZF &lt;a href=&quot;http://framework.zend.com/wiki/display/ZFDEV/PHP+Coding+Standard+(draft)#PHPCodingStandard(draft)-Exceptionbestpractices&quot;&gt;Coding Standard&lt;/a&gt; forbidding the above code:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;Don&#039;t put important diagnostic information only in the text of the exception method. Create methods and members in derived exception classes as needed, to provide information to the catch block. Create an exception constructor method that takes appropriate arguments, and populate the members of the class with those arguments.&lt;/blockquote&gt; 
    </content:encoded>

    <pubDate>Thu, 26 Feb 2009 16:27:20 +0100</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/108-guid.html</guid>
    
</item>
<item>
    <title>GIT for the eZ Ecosystem - Survey results</title>
    <link>http://koch.ro/blog/index.php?/archives/104-GIT-for-the-eZ-Ecosystem-Survey-results.html</link>
            <category>eZ Publish</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/104-GIT-for-the-eZ-Ecosystem-Survey-results.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=104</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=104</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    A few days ago I posted a link to a very tiny survey on source control I made to prepare myself for the eZ Systems Developer Conference in Barcelona in two weeks.&lt;br /&gt;
Until now, 28 people took the survey. The unscientific results are:&lt;br /&gt;
&lt;ul&gt; &lt;li&gt;The second most used and preferred VCS after SVN is GIT.&lt;/li&gt; &lt;li&gt;13 of 28 participants declare to use feature branches with SVN. This number is quite higher then I expected given the pain involved with branching in SVN.&lt;/li&gt; &lt;li&gt;16 people declare to use a patched version of eZ Publish.&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;
Some choosen responses from the free text field: Would you like to get more involved in the development of eZ Publish? Is there anything that holds you back from getting more involved? &lt;ul&gt; &lt;li&gt;Funding&lt;/li&gt; &lt;li&gt;Source code access, eZ is not seen as a Community development project. It is eZ who decides the direction &amp;amp; completes the work.&lt;/li&gt; &lt;li&gt;Ez systems being less and less willing to accept anything from the community.&lt;/li&gt; &lt;li&gt;not any more &lt;img src=&quot;http://koch.ro/blog/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/li&gt; &lt;li&gt;Missing a cleary community focused process (comparing to typo3)&lt;/li&gt; &lt;li&gt;long process of approval of patches&lt;/li&gt; &lt;li&gt;I can&#039;t ever see eZ allowing community development of the core product, but the use of GIT would allow much better patching options.&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;
Some of the above statements are rather pessimistic in regard to community involvment in eZ Publish development. However I&#039;d like to point out some more optimistic personal views on this topic:&lt;br /&gt;
&lt;ul&gt; &lt;li&gt;eZ Systems manages to keep the quality of it&#039;s products very high, compared to other PHP products. This of course has the drawback of high barriers for involvement.&lt;/li&gt; &lt;li&gt;Good tools for patch review workflows start to appear only since some months.&lt;/li&gt; &lt;li&gt;The eZ Components project is a model for open decision making and documentation.&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;
The survey data:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://koch.ro/blog/uploads/misc/gitforez.ods&quot; title=&quot;gitforez.ods&quot; target=&quot;_blank&quot;&gt;gitforez.ods&lt;/a&gt;, &lt;a href=&quot;http://koch.ro/blog/uploads/misc/gitforez.csv&quot; title=&quot;gitforez.csv&quot; target=&quot;_blank&quot;&gt;gitforez.csv&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
BTW.: Want to enter yourself in the participants list of the Barcelona conference on &lt;a href=&quot;http://upcoming.yahoo.com/event/1493057/?ps=8&quot;&gt;upcoming&lt;/a&gt;? 
    </content:encoded>

    <pubDate>Sun, 18 Jan 2009 16:36:19 +0100</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/104-guid.html</guid>
    
</item>
<item>
    <title>Survey on source control management for the eZ Systems Developer conference</title>
    <link>http://koch.ro/blog/index.php?/archives/103-Survey-on-source-control-management-for-the-eZ-Systems-Developer-conference.html</link>
            <category>eZ Publish</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/103-Survey-on-source-control-management-for-the-eZ-Systems-Developer-conference.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=103</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=103</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    Time will be short on the &lt;a href=&quot;http://ez.no/company/events/ez_international_winter_conferences&quot;&gt;eZ Systems Developer conference.&lt;/a&gt; So I&#039;ll try my best to be well prepared and meet your interest in my short talk on &lt;a href=&quot;http://www.koch.ro/blog/index.php?/archives/96-GIT-for-the-eZ-Ecosystem.html&quot;&gt;Git for the eZ ecosystem.&lt;/a&gt; You could, however, do me a great favor in filling out a short six-question &lt;a href=&quot;http://gitforez.limequery.org/index.php?sid=64457&amp;lang=en&quot;&gt;survey about source control management and eZ Publish&lt;/a&gt;.  
    </content:encoded>

    <pubDate>Mon, 12 Jan 2009 14:04:45 +0100</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/103-guid.html</guid>
    
</item>
<item>
    <title>GIT for the eZ Ecosystem</title>
    <link>http://koch.ro/blog/index.php?/archives/96-GIT-for-the-eZ-Ecosystem.html</link>
            <category>eZ Publish</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/96-GIT-for-the-eZ-Ecosystem.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=96</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=96</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    It seems, that &lt;a href=&quot;http://www.ymc.ch&quot;&gt;my company&lt;/a&gt; will send me to the &lt;a href=&quot;http://ez.no/company/events/ez_international_winter_conferences&quot;&gt;eZ International Winter Conferences&lt;/a&gt;. There are four points for me, why I want to participate:&lt;br /&gt;
&lt;ol&gt; &lt;li&gt;Get to know the people&lt;/li&gt; &lt;li&gt;discus the future development of eZ Publish&lt;/li&gt; &lt;li&gt;get certified for eZ Publish 4&lt;/li&gt; &lt;li&gt;evangelize for &lt;a href=&quot;http://en.wikipedia.org/wiki/Git_(software)&quot;&gt;GIT&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;&lt;br /&gt;
Because there is little time for discussions on the conference itself, I want to start already with the last point: Why is it important for the eZ Ecosystem to use GIT? The easier point is, why GIT and not another &lt;a href=&quot;http://en.wikipedia.org/wiki/Distributed_revision_control&quot;&gt;distributed reversion control system&lt;/a&gt;, like Mercurial, Bazaar or ...?&lt;br /&gt;
Well, I&#039;m not totally fixed on GIT, it&#039;s just the system I know. But it seems to me, that it has very good chances to get THE next version control system. Let&#039;s have a look at only some of the most important projects using GIT:&lt;br /&gt;
&lt;ul&gt; &lt;li&gt;Linux Kernel&lt;/li&gt; &lt;li&gt;YUI3 (YAHOO!)&lt;/li&gt; &lt;li&gt;android (Google)&lt;/li&gt; &lt;li&gt;X.org and related projects, Compiz&lt;/li&gt; &lt;li&gt;Fedora&lt;/li&gt; &lt;li&gt;GNU Autoconf, Automake, core utils&lt;/li&gt; &lt;li&gt;prototype (Javascript library)&lt;/li&gt; &lt;li&gt;Ruby on Rails&lt;/li&gt; &lt;li&gt;Samba&lt;/li&gt; &lt;li&gt;Qt (Trolltech/Nokia)&lt;/li&gt; &lt;li&gt;Most Debian related projects, if not SVN&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;
This list shows several things. The big projects using GIT is a sign, that GIT is &quot;production ready&quot;. (BTW: I think it is a little bit silly from the PHP internals, if they regard GIT as still being to &quot;new&quot; for them.) But the big projects are not only a sign, they also contribute back to GIT. Google developed a toolset for their android project to &lt;a href=&quot;http://source.android.com/download/using-repo&quot;&gt;revise patches&lt;/a&gt;, based on GIT. A similiar tool is &lt;a href=&quot;http://ozlabs.org/~jk/projects/patchwork/&quot;&gt;patchwork&lt;/a&gt; from IBM, used to track patches to the linux kernel.&lt;br /&gt;
If you look at the type of projects using git, you see web related projects like YUI, prototype or Ruby, you see projects on the operating system level like Samba, GNU and the kernel itself and you see projects from the multimedia area like X.org, Compiz and some media players I&#039;ve not listed. So if you&#039;re an open source software developer, chances are, that you must learn GIT at least to download the sources of projects related to your area of expertise. &lt;br /&gt;
&lt;br /&gt;
But now to the more complicated question, about &lt;strong&gt;GIT, the eZ Ecosystem and eZ Publish&lt;/strong&gt;. There are different and conflicting requirements for the development of eZ Publish:&lt;br /&gt;
&lt;ul&gt; &lt;li&gt; A stable API that keeps backwards compatibility over long time.  &lt;/li&gt; &lt;li&gt; Quick addition of new features.  &lt;/li&gt; &lt;li&gt; All copyright belongs to one party, eZ Systems (which is a good thing).  &lt;/li&gt; &lt;li&gt; Possibility to integrate third party code.  &lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;
The list can surely be extended. It may become clear, that it&#039;s hard to combine these different requirements in only one central code repository.&lt;br /&gt;
GIT would allow us, to make our own changes in or on top of eZ Publish, sharing patches with other eZ Partners and contribute patches back to the &quot;master&quot; eZ Publish branch.&lt;br /&gt;
&lt;div class=&quot;serendipity_imageComment_left&quot; style=&quot;&quot;&gt;&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://koch.ro/blog/uploads/free_software/git_distributed.jpg&#039;&gt;&lt;!-- s9ymdb:44 --&gt;&lt;img style=&quot;width:30em;&quot; src=&quot;http://koch.ro/blog/uploads/free_software/git_distributed.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;&lt;a href=&quot;http://manishchaks.googlepages.com/SVNtoGitMigration.pdf&quot;&gt;source&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
The most important thing would be, that GIT eases the update of our patched eZ Publish against a new upstream version. While merging in Subversion is a huge pain, it&#039;s a no-brainer with GIT.&lt;br /&gt;
It&#039;s even simple to automatically run a daily testsuite of the most recent eZ Publish trunk against your patched version of eZ Publish.&lt;br /&gt;
I stop here and would love to hear your opinion: Do you already have experiences with distributed version control? Do you also see advantages or do you think it&#039;s much too complicate? Just leave your comment! 
    </content:encoded>

    <pubDate>Thu, 27 Nov 2008 13:42:05 +0100</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/96-guid.html</guid>
    
</item>
<item>
    <title>If you're a web designer working alongside print designers....</title>
    <link>http://koch.ro/blog/index.php?/archives/95-If-youre-a-web-designer-working-alongside-print-designers.....html</link>
            <category>eZ Publish</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/95-If-youre-a-web-designer-working-alongside-print-designers.....html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=95</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=95</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    Oh god, bless the author of &lt;a href=&quot;http://www.reddit.com/r/web_design/comments/7fu6x/if_youre_a_web_designer_working_alongside_print/c06jlj1&quot;&gt;this&lt;/a&gt;:&lt;blockquote&gt;  &lt;p&gt;If you&#039;re a web designer working alongside print designers with little to no web design/dev knowledge, how is your experience?&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Teeth-grindingly annoying.&lt;/p&gt; &lt;p&gt;Print-turned-web designers:&lt;/p&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Learn the medium you&#039;re working in.  A five minute video of even the best print advert makes for a lousy TV advert.  Likewise, techniques and habits refined by years of print design are often sub-optimal or &lt;em&gt;flatly counter-productive&lt;/em&gt; when applied to the web.&lt;/li&gt;&lt;li&gt;For the love of god, give up on pixel-perfect positioning and learn to appreciate flow layout.  Sure, it makes design harder... but if you think designing flow layouts is hard, think about us poor schmucks who have to &lt;em&gt;implement&lt;/em&gt; the damn things.  And if you think flow layouts are ugly, let&#039;s see how good your precious pixel-perfect design works when I do something freakishly unusual like &lt;em&gt;resize my browser window&lt;/em&gt;.&lt;/li&gt;&lt;li&gt;Print pages are Things To Look At. Web sites are Things To Use.  Prioritising aesthetics over usability or functionality is like putting a car steering wheel in the middle of the dashboard &quot;because it looks nicer there&quot;.  You think it&#039;s pretty and a real design coup, but everyone else is laughing at your idiocy (... or swearing at it if the design ever gets into production).  Incidentally, I swear if I get one more design through with a &quot;button&quot; image but no &lt;em&gt;pressed&lt;/em&gt; button image (or &quot;link&quot; style but no &quot;active/hover/visited&quot; link style) I will personally bite off your head and defecate into your body-cavity.  You have been warned.&lt;/li&gt;&lt;li&gt;Conventions are not boring - conventions are &lt;em&gt;your friend&lt;/em&gt;.  Putting light-switches near doors is a convention.  Sure, putting them square in the middle of the ceiling is &lt;em&gt;innovative&lt;/em&gt;, but then so is cheesegrating your knees (hey - do &lt;em&gt;you&lt;/em&gt; know anyone who&#039;s done it?).  Innovative means &quot;nobody else is doing it&quot;.  Accept the possibility that nobody else is doing it because &lt;em&gt;it&#039;s a fucking stupid idea&lt;/em&gt;.&lt;/li&gt;&lt;li&gt;I don&#039;t want to &quot;explore the interface&quot;.  I want to get in, do my shit and get out again.  If you think forcing users to explore the interface is such a good idea, try ripping the labels off all the cans of food in your cupboard.  A couple of meals of cat-food, chilli and peaches should demonstrate exactly how &quot;fun&quot; this is.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;p&gt;&lt;em&gt;Pant, pant&lt;/em&gt;, pant, pant... pant... ahem.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 27 Nov 2008 08:46:47 +0100</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/95-guid.html</guid>
    
</item>
<item>
    <title>Webtreff: Content Storage</title>
    <link>http://koch.ro/blog/index.php?/archives/93-Webtreff-Content-Storage.html</link>
            <category>eZ Publish</category>
            <category>PHP</category>
            <category>Webtreff</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/93-Webtreff-Content-Storage.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=93</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=93</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    Monday we had the topic of &lt;a href=&quot;http://koch.ro/blog/uploads/presentations/content_storage.pdf&quot; title=&quot;content_storage.pdf&quot; target=&quot;_blank&quot;&gt;content storage (pdf)&lt;/a&gt; technologies at our webtreff meeting. We talked about the &lt;a href=&quot;http://ez.no/developer/articles/the_ez_content_model&quot;&gt;content model of eZ Publish&lt;/a&gt;, about ideas how it could be improved together with some general database design topics.&lt;br /&gt;
We already looked at two other approaches: The &lt;a href=&quot;http://en.wikipedia.org/wiki/JSR-170&quot;&gt;Java Content Repository&lt;/a&gt; and &lt;a href=&quot;http://www.google.com/search?as_q=couchdb&amp;as_filetype=pdf&quot;&gt;CouchDB&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Especially CouchDB appealed much to the folks and Benjamin offered to prepare a talk about it for dec/01. The next meeting will be on nov/17, 18:30 about Typo3. For more informations you can join our &lt;a href=&quot;http://lists.koch.ro/listinfo/webtreff&quot;&gt;mailing list&lt;/a&gt;.  
    </content:encoded>

    <pubDate>Wed, 05 Nov 2008 15:42:56 +0100</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/93-guid.html</guid>
    
</item>
<item>
    <title>YMC GIT Wiki</title>
    <link>http://koch.ro/blog/index.php?/archives/92-YMC-GIT-Wiki.html</link>
            <category>eZ Publish</category>
            <category>PHP</category>
    
    <comments>http://koch.ro/blog/index.php?/archives/92-YMC-GIT-Wiki.html#comments</comments>
    <wfw:comment>http://koch.ro/blog/wfwcomment.php?cid=92</wfw:comment>

    <wfw:commentRss>http://koch.ro/blog/rss.php?version=2.0&amp;type=comments&amp;cid=92</wfw:commentRss>
    

    <author>nospam@example.com (Thomas Koch)</author>
    <content:encoded>
    At &lt;a href=&quot;http://ymc.ch&quot;&gt;YMC&lt;/a&gt; we frequently use wikis for client projects. The wiki then serves as whiteboard for specification and documentation. Normally we use &lt;a href=&quot;http://en.wikipedia.org/wiki/MediaWiki&quot;&gt;MediaWiki&lt;/a&gt;, the engine that powers Wikipedia, for this.&lt;br /&gt;
But I personally don&#039;t like MediaWiki that much, because it&#039;s too feature rich for our purpose, it needs a Database and I&#039;d rather use another Markup Language then the default Wikipedia language. So I searched for an alternative and found &lt;a href=&quot;http://el-tramo.be/blog/wigit-intro&quot;&gt;WiGit&lt;/a&gt;, a very basic PHP wiki which uses my beloved &lt;a href=&quot;http://git.or.cz/&quot;&gt;GIT&lt;/a&gt; as storage backend. Unfortunately WiGit is still written in a rather ugly PHP4 style so I forked it and am now moving it step by step to use &lt;a href=&quot;http://ezcomponents.org&quot;&gt;eZ Components&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
So far it uses:&lt;ul&gt;&lt;li&gt;ezcTemplate&lt;/li&gt;&lt;li&gt;ezcConfiguration&lt;/li&gt;&lt;li&gt;ezcUrl&lt;/li&gt;&lt;/ul&gt;The next steps are to integrate ezcAuthenticate to use different means of login, most importantly OpenId, ezcDocument to provide different wiki markups or restructured text and the recently released &lt;a href=&quot;http://ezcomponents.org/resources/news/news-2008-10-06&quot;&gt;ezcMvcTools&lt;/a&gt; to clean up the index.php.&lt;br /&gt;
&lt;br /&gt;
I&#039;m doing this project for fun together with my collegue &lt;a href=&quot;http://comunix.info/&quot;&gt;Emanuel&lt;/a&gt;. If you like to join us, you can find the GIT repository at &lt;a href=&quot;http://git.koch.ro/?p=ymcgitwiki;a=summary&quot;&gt;http://git.koch.ro/?p=ymcgitwiki;a=summary&lt;/a&gt; and clone via&lt;br /&gt;
&lt;div class=&quot;bb-code-title&quot;&gt;CODE:&lt;/div&gt;&lt;div class=&quot;bb-code&quot;&gt;git&amp;#160;clone&amp;#160;git&amp;#58;//git.koch.ro/git/ymcgitwiki&lt;/div&gt;&lt;br /&gt;
There is also an &lt;a href=&quot;http://www.ohloh.net/projects/ymcgitwiki&quot;&gt;Ohloh&lt;/a&gt; page for our litte toy project. 
    </content:encoded>

    <pubDate>Tue, 07 Oct 2008 09:23:59 +0200</pubDate>
    <guid isPermaLink="false">http://koch.ro/blog/index.php?/archives/92-guid.html</guid>
    
</item>

</channel>
</rss>