<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.invenzzia.org/en/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Invenzzia... in English - Tag - releases</title>
  <link>http://blog.invenzzia.org/en/</link>
  <atom:link href="http://blog.invenzzia.org/en/feed/tag/releases/rss2" rel="self" type="application/rss+xml"/>
  <description></description>
  <language>en</language>
  <pubDate>Fri, 09 Jul 2010 05:49:14 +0100</pubDate>
  <copyright>Copyright &amp;copy; Invenzzia</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Open Power Template 2.0.0 is ready!</title>
    <link>http://blog.invenzzia.org/en/post/Open-Power-Template-2.0.0-is-ready%21</link>
    <guid isPermaLink="false">urn:md5:289d171afca92f335d23613184a0be22</guid>
    <pubDate>Tue, 14 Jul 2009 09:14:00 +0200</pubDate>
    <dc:creator>Zyx</dc:creator>
        <category>Open Power Template</category>
        <category>history</category><category>OPT2</category><category>releases</category>    
    <description>&lt;p&gt;Finally, after a 1.5 years of the development process, we managed to release the first stable version of Open Power Template. The road was very long but I hope that it was worth it. In this short entry, I'd like to make a small introduction to the project history for you, as it is quite interesting and could give some clue, how this all began.&lt;/p&gt;    &lt;p&gt;Open Power Template is a quite old project, lasting for almost five years now. The development started in November 2004, as a small template engine for the open-source discussion board project called Open Power Board. The library was a creative variation of the Smarty engine, and I was the right person in the team to write it, as I was writing small template engines much earlier and had some experience in this area. Fortunately or not, the OpenPB project failed and my library was the only which survived the crash. After some huge code revisions, I released the first stable version, 1.0.0 in July 2006, three years ago. At the first sight, the template engine was quite similar to Smarty, especially because it used curly brackets, too. However, we could find there some ideas that were later improved and featured in the 2.0 branch. OPT 1.0.0 contained:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sections&lt;/li&gt;
&lt;li&gt;Components&lt;/li&gt;
&lt;li&gt;Snippets (under different name)&lt;/li&gt;
&lt;li&gt;I18n support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The 1.1 branch brought the pagination support and tree rendering instruction. The template engine did not understand the document structure, but the parser used some ideas taken from XML parsers. For example, it constructed a node tree for the content similar to DOM, and the nodes were instruction tags and the text content. Furthermore, there was a feature called &lt;em&gt;XML Compatibility Mode&lt;/em&gt; which replaced the curly brackets with XML-like instruction delimiters. However, this was only a visual change.&lt;/p&gt;


&lt;p&gt;Early in 2007, after some talks with the users, I started thinking about using a real XML parser in Open Power Template. On my blog, I published a note dated to April 19, where I suggested that a compiler with an XML parser could be written, as an extra compiler for the project. It did not mean that the works began then, as I was beginning my studies on AGH University in Cracow and had little time to deal with it, too. The first lines of code were written about seven months later, in November. On November 23, I wrote on my blog that the parser loaded the first XML document into memory, and a couple of days later it compiled its first (very simple) template.&lt;/p&gt;


&lt;p&gt;OPT was a really productive project. Soon, I realized, that the old infrastructure from OpenPB used so far is crappy and unreliable which led to the formation of Invenzzia Group in January. You may ask where the name came from. We were thinking about it very long, and the further, the more stupid ideas were coming into our minds. As I was fascinated with linguistics and artifical (constructed) languages, we opened the dictionary of one of my languages, Ferrinti with the word: &lt;code&gt;invenzzia - invention&lt;/code&gt;. By the way, it has nothing to do with Polish language, where the word for &lt;em&gt;invention&lt;/em&gt; is &lt;em&gt;wynalazek&lt;/em&gt; and &lt;em&gt;inwencja&lt;/em&gt; means something completely different.&lt;/p&gt;


&lt;p&gt;A couple of months later, I was becoming more and more annoyed with DocBook, especially because of the lack of any simple-in-use framework for generating user manuals and documentations from them. Because I did not want to deal with various XML parsers, incompatibility issues between Windows, Linux and everything else, I decided to write a completely new tool in PHP. This was the second project inspired by Open Power Template and it is known now as TypeFriendly. At the same time, we closed the 1.1 branch of OPT, to focus on the other projects. In July, the branch was actually rewritten from scratch, introducing a completely new API that had nothing to do with the earlier versions, as it was using many new features, such as autoloading, or better use of exceptions. Furthermore, I removed the explicit recursion from the compiler that produced very serious trouble due to the PHP stack limitations. Precisely after a year, on November 23, 2008, Invenzzia Group released the last &lt;em&gt;2.0-DEV&lt;/em&gt; version with actually all the planned features finished and began the beta-tests and the debugging process. After deep analysis, some parts of the code were rewritten once more (notably sections and data formats), providing a more stable and flexible source code, and many other features were widely tested both with unit tests and the real projects.&lt;/p&gt;


&lt;p&gt;In March, I published the first revision of the Zend Framework port on our SVN. The community created a port for Kohana framework a couple of months earlier. I started also thinking about the tutorials. In the last few days, we managed to finish the user manual and the huge tutorial &lt;em&gt;A photo gallery with Doctrine and Open Power Template&lt;/em&gt;, and we decided that we are ready to release the first stable version. And here we are!&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.invenzzia.org/en/post/Open-Power-Template-2.0.0-is-ready%21#comment-form</comments>
      <wfw:comment>http://blog.invenzzia.org/en/post/Open-Power-Template-2.0.0-is-ready%21#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.invenzzia.org/en/feed/atom/comments/62</wfw:commentRss>
      </item>
    
  <item>
    <title>Invenzzia Summary #5</title>
    <link>http://blog.invenzzia.org/en/post/Invenzzia-Summary-5</link>
    <guid isPermaLink="false">urn:md5:9501eb1b8405bb1cf988d05738cef0bf</guid>
    <pubDate>Wed, 08 Jul 2009 13:28:00 +0200</pubDate>
    <dc:creator>Zyx</dc:creator>
        <category>Summaries</category>
        <category>development</category><category>documentation</category><category>OPF</category><category>OPT2</category><category>releases</category><category>summary</category><category>typefriendly</category>    
    <description>&lt;p&gt;Welcome back after a short break. Although there were no summaries in the last month, Invenzzia projects are still active and maintained. We have released two new versions in June, and now we are reaching the moment of releasing... the first stable version of Open Power Template 2! Stay with us and read more about the progress and the current status of the projects.&lt;/p&gt;    &lt;h2&gt;Open Power Template 2&lt;/h2&gt;


&lt;p&gt;The project is actually finished and we are expecting to deal with all the formalities in the next few days. There is only one chapter missing in the user documentation and if you would like to check the code right now, you can find it on our Subversion repository. So, what would take so long? The answer is simple: the tutorials. Since April, I have been working on a huge article entitled &quot;A photogallery with Doctrine and Open Power Template 2.0&quot; showing the process of writing a web gallery using the libraries mentioned in the title. Furthermore, it is going to be available in two language versions: Polish and English. We have to finish the translation and rewrite it into Markdown, so that it could be published on Invenzzia. Anyway, the development process is over and now we can focus on implementing the new features and the new libraries.&lt;/p&gt;


&lt;h2&gt;TypeFriendly 0.1.2&lt;/h2&gt;


&lt;p&gt;A couple of weeks ago, we released TypeFriendly 0.1.2 with many new features, such as appendix support and tag manager. Since then, there were new commits and new works-in-progress. eXtreme improves the layout of the chapter headers, there are expected new tags and fixed some minor bugs.&lt;/p&gt;


&lt;h2&gt;What's next?&lt;/h2&gt;


&lt;p&gt;I plan to finish the caching system for OPT that will be distributed with Open Power Classes, and start developing the source code of long-awaited Open Power Forms. We have an idea, what we want to get and how to achieve the goals.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.invenzzia.org/en/post/Invenzzia-Summary-5#comment-form</comments>
      <wfw:comment>http://blog.invenzzia.org/en/post/Invenzzia-Summary-5#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.invenzzia.org/en/feed/atom/comments/61</wfw:commentRss>
      </item>
    
  <item>
    <title>Open Power Template 2.0-RC1</title>
    <link>http://blog.invenzzia.org/en/post/Open-Power-Template-2.0-RC1</link>
    <guid isPermaLink="false">urn:md5:f4febc94a94955293cab40218faab3b7</guid>
    <pubDate>Tue, 12 May 2009 13:06:00 +0200</pubDate>
    <dc:creator>Zyx</dc:creator>
        <category>Open Power Template</category>
        <category>OPT2</category><category>releases</category>    
    <description>&lt;p&gt;Finally, the first Release Candidate of Open Power Template is available to download, after 4 months of testing and implementing the remaining features. The library seems to be completed and stable enough for both development and production environments. Of course, there is still a small possibility that a fatal bug will be found, but I do not think this will happen, as there are lots of unit tests present and the code has been checked with two real-world web applications.&lt;/p&gt;    &lt;h2&gt;Where to download?&lt;/h2&gt;


&lt;p&gt;Of course, from our website: &lt;a href=&quot;http://www.invenzzia.org/en/download&quot; hreflang=&quot;en&quot;&gt;Invenzzia&lt;/a&gt;. There are available the ordinary packages, and moreover, for the first time we publish the PHAR-s. PHAR means &lt;em&gt;PHP ARchive&lt;/em&gt; - it is a package of executable PHP code that works much like JAR-s in Java. It is going to become a part of the official PHP release since 5.3.0 version. Unfortunately, our web system is not prepared to publish so many different files in one branch, so I publish the links right here till the problem will be solved:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://static.invenzzia.org/files/opt-phar-2.0-rc1.tar.bz2&quot; hreflang=&quot;en&quot;&gt;PHAR-s in TAR.BZ2 format&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://static.invenzzia.org/files/opt-phar-2.0-rc1.tar.gz&quot; hreflang=&quot;en&quot;&gt;PHAR-s in TAR.GZ format&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://static.invenzzia.org/files/opt-phar-2.0-rc1.zip&quot; hreflang=&quot;en&quot;&gt;PHAR-s in ZIP format&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The packages contain two PHAR-s: for OPL and OPT, license texts and the README. They do not include the documentation.&lt;/p&gt;


&lt;h2&gt;What now?&lt;/h2&gt;


&lt;p&gt;Well, Release Candidate does not mean the end. There is also the stable release, and lots of plans for the 2.1 branch. However, for some time the development process of OPT will slow down, as there are some other projects that need our urgent attention. First of all, we have all the resources for the programmers: tutorials, tips, case studies etc. Open Power Template brings a completely new philosophy of creating the presentation layer and there must be good articles available in order to show, how to make a good use of it. Moreover, there are next libraries on the way: Open Power Classes, Open Power Forms and the Zend Framework port.&lt;/p&gt;


&lt;h2&gt;Conclusion&lt;/h2&gt;


&lt;p&gt;At the end, we would like to thank all the current users of the library, especially those ones who have helped us with the development process. These projects are created for you.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.invenzzia.org/en/post/Open-Power-Template-2.0-RC1#comment-form</comments>
      <wfw:comment>http://blog.invenzzia.org/en/post/Open-Power-Template-2.0-RC1#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.invenzzia.org/en/feed/atom/comments/58</wfw:commentRss>
      </item>
    
  <item>
    <title>Invenzzia Summary #2</title>
    <link>http://blog.invenzzia.org/en/post/Invenzzia-Summary-2</link>
    <guid isPermaLink="false">urn:md5:5cdc479eed2d88d4fd421c561dd3e474</guid>
    <pubDate>Tue, 28 Apr 2009 14:22:00 +0200</pubDate>
    <dc:creator>Zyx</dc:creator>
        <category>Summaries</category>
        <category>OPT2</category><category>releases</category><category>summary</category><category>tutorials</category><category>zend framework</category>    
    <description>&lt;p&gt;Invenzzia Summaries are the way to inform about what's going on in Invenzzia and its open-source projects. In the second episode we will talk about incoming OPT 2.0-RC1, OPL port for Zend Framework and the incoming first bigger practical tutorial about OPT.&lt;/p&gt;    &lt;h2&gt;OPT 2.0-RC1&lt;/h2&gt;


&lt;p&gt;The source code of OPT is almost ready to publish the Release Candidate 1. The remaining issues concern the user manual and the examples that should be included now in some form. In the last few days, the source code itself was enriched with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The unit tests for the template functions.&lt;/li&gt;
&lt;li&gt;The final version of the caching API.&lt;/li&gt;
&lt;li&gt;Fixes of the bugs found in the Beta3 release.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is a small change in the previously accepted API. The &lt;code&gt;Opt_Component_Interface::setDatasource()&lt;/code&gt; method does not require the reference now which allows to read the data from objects and any other forms of expressions. We are sorry for this oversight and the necessity of updating your component APIs.&lt;/p&gt;


&lt;h2&gt;Recently fixed bugs&lt;/h2&gt;


&lt;p&gt;The bugs fixed in the last days include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;(OPT) - bug #81 - The &lt;code&gt;opt:tree&lt;/code&gt; instruction did not perform the error checking, which could be used to produce the invalid output code if the &lt;code&gt;depth&lt;/code&gt; parameter was not set properly. Currently, the depth does not have to start with 0, and each raise above the initial depth is reported with an exception.&lt;/li&gt;
&lt;li&gt;(OPT) - bug #80 - The expression parser did not capture the single occurences of the apostrophes. The output code was not affected, so this was not a critical problem, but now the parser throws an exception in this situation.&lt;/li&gt;
&lt;li&gt;(OPT) - not reported - the defined components were generating invalid PHP code.&lt;/li&gt;
&lt;li&gt;(OPT) - not reported - the output systems used invalid constant indicating the XML mode.&lt;/li&gt;
&lt;li&gt;(TypeFriendly) - bug #79 - If the header section in the source document was not ended with a valid section delimiter, the script was going into the infinite loop.&lt;/li&gt;
&lt;li&gt;(ZFPort) - not reported - the components attempted to read the CSS classes for the invalid fields from wrong template variables.&lt;/li&gt;
&lt;li&gt;(ZFPort) - not reported - fixed the implementation of &lt;code&gt;url()&lt;/code&gt; template function.&lt;/li&gt;
&lt;li&gt;(ZFPort) - not reported - fixed the problem with Invenzzia_Controller_Response_Http and flushing the output buffer which caused to produce the &quot;1&quot; string in the output.&lt;/li&gt;
&lt;li&gt;(ZFPort) - not reported - some of the overloaded methods had wrong prototypes which caused E_STRICT messages.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;OPL port for Zend Framework&lt;/h2&gt;


&lt;p&gt;Recently, the port has been extended with the cache wrapper that allows to use the Zend_Cache component to cache the OPT views using the new OPT caching interface. Moreover, during April we have removed some annoying bugs in the code and tested the port in the real project. It works nice, but still needs some extra functionality. We are going to start the pagination support soon.&lt;/p&gt;


&lt;h2&gt;OPT tutorial&lt;/h2&gt;


&lt;p&gt;OPT provides the end users a lot of features, so nobody should be suprised that there is a need to write good practical tutorials for this library. In the last weeks, I have been working on the article entitled 'A photo gallery with Doctrine and OPT'. It shows the basic usage of Open Power Template and &lt;a href=&quot;http://www.doctrine-project.org/&quot; hreflang=&quot;en&quot;&gt;Doctrine&lt;/a&gt; library while writing a simple photo gallery script. The article will be available in two language versions: English and Polish and distributed under the Creative Commons license together with the accompanying, ready-to-run source code. Currently, the article is on the translation stage and will be published soon after the OPT 2.0-RC1 appearance.&lt;/p&gt;


&lt;h2&gt;Conclusion&lt;/h2&gt;


&lt;p&gt;We are very happy that the development stage of Open Power Template finally reaches the happy end. We know it was very long (a year and five months), but there was a lot of work to do. We are not going to stop here. Some of you may have probably noticed that the bugtacker is full of TODO tickets for the 2.1 branch which are going to bring even greater revolution in the template engine world.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.invenzzia.org/en/post/Invenzzia-Summary-2#comment-form</comments>
      <wfw:comment>http://blog.invenzzia.org/en/post/Invenzzia-Summary-2#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.invenzzia.org/en/feed/atom/comments/56</wfw:commentRss>
      </item>
    
  <item>
    <title>Zend Framework port is available!</title>
    <link>http://blog.invenzzia.org/en/post/Zend-Framework-port-is-available%21</link>
    <guid isPermaLink="false">urn:md5:afb294441c208e9c95de9777a6437187</guid>
    <pubDate>Wed, 25 Mar 2009 15:12:00 +0100</pubDate>
    <dc:creator>Zyx</dc:creator>
        <category>Projects</category>
        <category>framework</category><category>OPL</category><category>OPT2</category><category>releases</category><category>zend framework</category>    
    <description>&lt;p&gt;I've recently uploaded the first revision of Open Power Libs port for Zend Framework to our SVN repositories and it is available there for public audience. The port is not completed yet, but the basic functionality is present and seems to work. I encourage everyone to test it and submit suggestions or noticed bugs. The package includes a test ZF application, and the source code is well-commented. I'll put some extra information on wiki soon, as well as set up the &quot;real&quot; user manual.&lt;/p&gt;    &lt;h2&gt;How to obtain?&lt;/h2&gt;


&lt;p&gt;If you have a SVN client, you can download it like any other Invenzzia project:&lt;/p&gt;

&lt;pre&gt;
svn co http://svn.invenzzia.org/svn/opl4zf/trunk
&lt;/pre&gt;


&lt;p&gt;Note that you must also download Zend Framework and OPL.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.invenzzia.org/en/post/Zend-Framework-port-is-available%21#comment-form</comments>
      <wfw:comment>http://blog.invenzzia.org/en/post/Zend-Framework-port-is-available%21#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.invenzzia.org/en/feed/atom/comments/51</wfw:commentRss>
      </item>
    
  <item>
    <title>OPT 2.0-beta2</title>
    <link>http://blog.invenzzia.org/en/post/OPT-2.0-beta2</link>
    <guid isPermaLink="false">urn:md5:018c3371d26b97bf3ba4c641e8af2aad</guid>
    <pubDate>Sat, 21 Feb 2009 09:22:00 +0100</pubDate>
    <dc:creator>Zyx</dc:creator>
        <category>Open Power Template</category>
        <category>development</category><category>OPT2</category><category>releases</category>    
    <description>&lt;p&gt;It's true, the new beta version of Open Power Template is available to download. It was planned to be released a week ago, but because of problems with SVN I didn't manage to do that (again, but hopefully for the last time). This is mostly a bugfix release, but there are some small improvements and changes in the component API, which was not documented then. The changes are not too big and were quite necessary to be introduced.&lt;/p&gt;    &lt;p&gt;The changes in the component and block API:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;code&gt;setOptInstance()&lt;/code&gt; became &lt;code&gt;setView&lt;/code&gt; and takes the current &lt;code&gt;Opt_View&lt;/code&gt; object as an argument. Now the components and blocks can refer to the template variables.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;createAttributes()&lt;/code&gt; became &lt;code&gt;manageAttributes()&lt;/code&gt;, and moreover, the semantics has been changed. The new method takes an array of tag attribute values and returns the modified version. OPT translates it to the valid XML attribute list.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The tutorials can be found in the documentation. Another improvement are the &lt;code&gt;get()&lt;/code&gt; and &lt;code&gt;getGlobal()&lt;/code&gt; methods in &lt;code&gt;Opt_View&lt;/code&gt; that allow to read the template variable values from the view object.&lt;/p&gt;


&lt;p&gt;The things that need to be done now are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;To check the caching port interface.&lt;/li&gt;
&lt;li&gt;To test several rarely-used compiler API features.&lt;/li&gt;
&lt;li&gt;To check, whether all the features mentioned in the documentation are implemented and vice versa.&lt;/li&gt;
&lt;li&gt;To fix more bugs :).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By the way, it is possible that in a few next days, there will be PHAR files with the beta2 available to download for use with PHP 5.3.&lt;/p&gt;


&lt;p&gt;The library can be downloaded from &lt;a href=&quot;http://libs.invenzzia.org/en/download&quot; hreflang=&quot;en&quot;&gt;our file repositories&lt;/a&gt; and the English documentation can be found &lt;a href=&quot;http://www.invenzzia.org/docs/opt2-en/&quot; hreflang=&quot;en&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.invenzzia.org/en/post/OPT-2.0-beta2#comment-form</comments>
      <wfw:comment>http://blog.invenzzia.org/en/post/OPT-2.0-beta2#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.invenzzia.org/en/feed/atom/comments/47</wfw:commentRss>
      </item>
    
  <item>
    <title>OPT 2.0.0-beta1 released</title>
    <link>http://blog.invenzzia.org/en/post/OPT-2.0.0-beta1-released</link>
    <guid isPermaLink="false">urn:md5:cbb9f97b7390941653039d1e10994582</guid>
    <pubDate>Tue, 06 Jan 2009 22:45:00 +0100</pubDate>
    <dc:creator>Zyx</dc:creator>
        <category>Open Power Template</category>
        <category>OPT2</category><category>releases</category>    
    <description>&lt;p&gt;Well, after many adventures with SVN and recently discovered problems with XML prologs and DTD I finally managed to release the first beta version of Open Power Template. From now, we are going to focus on removing as many bugs and problems as possible and we need here your help. Furthermore, we also need to complete the English manual, which is quite big now, but still does not explain some issues.&lt;/p&gt;    &lt;p&gt;I hope the library will mature soon, because I want to start works on next libraries: Open Power Forms and Open Power Classes. Thankfully, our quite small community is quite active. Recently, Nowaker informed me he prepared a port for Kohana framework and he is going to release it, soon. As eXtreme will complete the new Invenzzia website, we will be able to put such add-ons in one place, as well as tutorials and sample projects.&lt;/p&gt;


&lt;p&gt;The library can be found in our &lt;a href=&quot;http://libs.invenzzia.org/en/download&quot; hreflang=&quot;en&quot;&gt;download&lt;/a&gt; sites. The packages contain English manual, which is also available &lt;a href=&quot;http://www.invenzzia.org/docs/opt2-en/&quot; hreflang=&quot;en&quot;&gt;on-line&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.invenzzia.org/en/post/OPT-2.0.0-beta1-released#comment-form</comments>
      <wfw:comment>http://blog.invenzzia.org/en/post/OPT-2.0.0-beta1-released#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.invenzzia.org/en/feed/atom/comments/43</wfw:commentRss>
      </item>
    
  <item>
    <title>One year of hard work</title>
    <link>http://blog.invenzzia.org/en/post/One-year-of-hard-work</link>
    <guid isPermaLink="false">urn:md5:75e09a4f6268c6b49709df680bacc1c8</guid>
    <pubDate>Thu, 20 Nov 2008 18:59:00 +0100</pubDate>
    <dc:creator>Zyx</dc:creator>
        <category>Open Power Template</category>
        <category>development</category><category>OPT2</category><category>releases</category>    
    <description>&lt;p&gt;Somewhere in the middle of November 2007, I wrote the first (working!) lines of the Open Power Template 2.0.0 source code. After a year of hard work, I've already uploaded a revision that finally gives you all the invented features implemented. For that time, OPTv2 grew and changed its shape. The first development releases resembled OPT 1.1.x when it comes to API and some features. They were just ported to the new XML compiler. Nowadays, OPT is a totally different library. It is much more modularized and designed to make the integration with frameworks easier. There is still a lot to do. The incoming release will be the last one with the &quot;-dev&quot; prefix, and in the next few weeks, the beta versions will appear, then Release Candidates and at last, the first stable release.&lt;/p&gt;    &lt;p&gt;I still get questions, why the hell I'm writing &quot;yet another template engine if PHP is a template language itself&quot;. In my opinion, it is not PHP which is so good. The template engines are simply too bad, and unsually offer some control structures taken from PHP, variables, put them into different syntax and that's all. Why the hell someone would like to use such stuff if PHP gives him the same things plus object oriented programming to make the code more reusable. But take a look at another issue. Do you think that imperative languages, like PHP, are comfortable enough to be good languages to write, in fact, simple templates? In my opinion, the language that required to be taught, how to display a nested list and escape script data every time we want it is a mistake in this place. Such languages are created to express fast and advanced algorithms, where we need the full control over the process, not to take some data from the script and put them in a string. Yes, we can modularize them with loads of classes, interfaces etc. but is it still a comfortable way and a good use of OOP? In my opinion - no.&lt;/p&gt;


&lt;h2&gt;What give us new languages&lt;/h2&gt;

&lt;p&gt;When people noticed that writing in assembler is too complicated, they invented Fortran and Lisp, the first two high-level programming languages. They allowed to express the same algorithms and calculations in more human-readable form. Later, they invented C and C++, two general-purpose imperative languages. As the WWW appeared on the Internet, another group of people noticed that existing programming languages are too complicated to make dynamic websites. Would you like to deal with memory allocation while writing a CMS? The computers are nowadays faster and faster, and people noticed that sometimes it is much better to use simpler language designed for certain tasks at a cost of performance. In the template engines, the rule is similar. PHP in its current shape was never a good template language, so we try to create something different that simplify this process. And how to achieve this? We have to change the programming paradigm. As we design the new programming language, we can do almost everything with it and add features that are impossible in another language.&lt;/p&gt;


&lt;h2&gt;OPT template language&lt;/h2&gt;


&lt;p&gt;The basis of OPT template language is XML. Unlike PHP, OPT understands entire structure of the XHTML code in the templates and checks its syntax before we see something in the browser. All the language constructs are allowed to manipulate the code in the way that is impossible in PHP, using an interface similar to DOM. They can add new attributes, create tags, and the compiler prevents them from generating invalid output. Moreover, I wanted to get rid of programming in the templates, so I designed the control structures in a declarative style. An example of such declarative language is SQL, where you describe, what data you want to have and the database engine decides, how to find them. Here, you simply inform, what you want to see, and the template compiler provides you the implementation. Below, we have an example of displaying a hierarchical list of categories (a category tree):&lt;/p&gt;

&lt;pre&gt;xml
&amp;lt;opt:tree name=&amp;quot;categories&amp;quot;&amp;gt;
 	&amp;lt;opt:list&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;opt:content /&amp;gt;&amp;lt;/ul&amp;gt;&amp;lt;/opt:list&amp;gt; &amp;lt;!-- 1 --&amp;gt;
  	&amp;lt;opt:node&amp;gt;&amp;lt;li&amp;gt;{$categories.title} &amp;lt;opt:content /&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/opt:node&amp;gt; &amp;lt;!-- 2 --&amp;gt;
  	&amp;lt;opt:treeelse&amp;gt;&amp;lt;p&amp;gt;Sorry, there are no categories in the system.&amp;lt;/p&amp;gt;&amp;lt;/opt:treeelse&amp;gt; &amp;lt;!-- 3 --&amp;gt;
&amp;lt;/opt:tree&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Do you see here any tree rendering algorithm? We have only elegant definitions, how a flat list looks like (1), how a node looks like (2) what what to show if there are no categories. We even know nothing about the data format. The template would not tell us whether the category tree must be provided as a big object or an array, and what are the details of its structure. As OPT provides a complete declarative programming model, similar solutions can be found almost everywhere in OPT. It really works. A couple of days ago I started writing a small website for my friend. Thanks to OPT, I managed to write all the presentation layer in 15 minutes. The fact that I did not have a working script yet did not concern me. I knew that OPT would do everything for me once I finally decide, where the script would return arrays, where objects, and what they would really be. I do not worry about code refactoring, because the templates remain untouched. Once I make a critical change, I simply recompile the templates and that's all. Try to achieve this in pure PHP or Smarty!&lt;/p&gt;


&lt;p&gt;OPT language features:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;True XML parser with configurable level of standard-compliance (from strict mode to quirks mode, where everything that is not directly parsed by OPT is a static text).&lt;/li&gt;
&lt;li&gt;Variables are data format independent - the data structures are chosen during the compilation thanks to information from the PHP script.&lt;/li&gt;
&lt;li&gt;Two complete models of handling modular templates: by including and by template inheritance (also dynamic).&lt;/li&gt;
&lt;li&gt;Intuitive support for nested lists&lt;/li&gt;
&lt;li&gt;Smart and semi-automatic data escaping.&lt;/li&gt;
&lt;li&gt;Additional useful instructions to create cyclically changed values or to add separators between elements.&lt;/li&gt;
&lt;li&gt;XML manipulation instructions.&lt;/li&gt;
&lt;li&gt;Support for runtime instructions: blocks and components that are designed especially to deal with HTML forms.&lt;/li&gt;
&lt;li&gt;Code reusability: write once, use everywhere.&lt;/li&gt;
&lt;li&gt;Set of data manipulation and aggregation functions.&lt;/li&gt;
&lt;li&gt;Support for i18n.&lt;/li&gt;
&lt;li&gt;A complete expression language designed especially for use with XML. It includes the complete PHP object access support.&lt;/li&gt;
&lt;li&gt;A basic set of programming structures: conditions and loops, if they are really necessary.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;What about the API?&lt;/h2&gt;


&lt;p&gt;OPT source code design resembles Zend Framework conventions, when it comes to the class/method naming and file structure. It is fully objective - the templates are represented in the script as view objects, where we can assign the script results to and set the data format. Once the view is fed with the data, we create an output object and order to render the view. OPT provides two default views: HTTP and Return. The first one sends the results to the browser and maintains the HTTP headers. The second one returns the generated code back to the script. Of couse everything is extendable: you can write new outputs, define new data formats, write new functions, components and even instructions with the powerful compiler API. The management of all this stuff is also simple, because there is a plugin system.&lt;/p&gt;


&lt;p&gt;The templates can be loaded and stored everywhere thanks to PHP streams. All you have to do is to write a new stream wrapper and register it in PHP. The advantage of this solution is that the wrapper can be used with all the file access functions in your script, even with &lt;strong&gt;require&lt;/strong&gt; and &lt;strong&gt;include&lt;/strong&gt;. The output results can be cached, but this time OPT does not provide its own cache handler, allowing the frameworks to do their job. In order to help the programmers manage the templates, the debug console is provided that shows information about the current configuration, executed and compiled templates and the resources used to perform those tasks. The errors are handled with the exceptions and the default error handler provides extra context information with additional explainations, how to fix the problem and where to find the solutions.&lt;/p&gt;


&lt;p&gt;Below, you can see a sample use of OPT in the scripts:&lt;/p&gt;

&lt;pre&gt;php
try
{
	$view = new Opt_View('template_file.tpl');		
	$view-&amp;gt;foo = value;
		
	$out = new Opt_Output_Http;
	$out-&amp;gt;setContentType(Opt_Output_Http::XHTML, 'utf-8'); // Content negotiation available!
	$out-&amp;gt;render($view);
}
catch(Opt_Exception $e)
{
	Opt_Error_Handler($e);
}
&lt;/pre&gt;


&lt;p&gt;However, OPT is not a standalone script. It is the first library in the Open Power Libs series. They share a common core with the basic core that provides the necessary features, like autoloader, configuration, plugin architecture, debugging issues and PHAR support.&lt;/p&gt;


&lt;h2&gt;Project status&lt;/h2&gt;


&lt;p&gt;As I mentioned in the excerpt, all the planned features are currently completed, but not fully tested yet. The code seems to work in all the common use cases, but lots of deeper interactions between various elements are a big unknown. At this time we are going to start beta tests that will take some time. Meanwhile, the following tasks are waiting:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;To complete the English documentation.&lt;/li&gt;
&lt;li&gt;To write the complete unit tests and support for PHAR-s.&lt;/li&gt;
&lt;li&gt;To write tutorials, FAQ-s and sample codes for OPT.&lt;/li&gt;
&lt;li&gt;To provide the initial add-ons: Unicode function set for the templates, complex port to Zend Framework and probably Kohana. In the near future we are going to provide the support for Symfony, too.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Moreover, the next OPL projects are going to be opened. Currently, we have already started works on Open Power Classes, a set of small PHP classes to deal with various useful stuff. Our next big goal is Open Power Forms - a complete form handling solution for your script that shows the real power of Open Power Template.&lt;/p&gt;


&lt;h2&gt;How to help?&lt;/h2&gt;


&lt;p&gt;In the next few days, OPT 2.0.0-dev8 should appear. The source code for this version is already available in SVN, but I want to finish some API reference translations. Test it and send us you opinions. If you think you found a bug, use the bugtracker and let us know about it. Do not be afraid to ask - our community is still quite small, but the Invenzzia team is very helpful and does its best to help you deal with the coding problems.&lt;/p&gt;


&lt;h2&gt;To sum up&lt;/h2&gt;


&lt;p&gt;I know this post is full of propaganda stuff, but on this blog, it has not been announced so far and I think it is necessary to show, what this project really is and why we are writing it. Open Power Template is something more that just a template engine - it is probably the first presentation layer framework designed as a complex solution, and in addition - fast. I hope you'll enjoy it. Many people managed to enjoy OPT 1.1.x, and incoming 2.0.0 is simply much better.&lt;/p&gt;


&lt;p&gt;Update: OPT 2.0.0-dev8 is available to &lt;a href=&quot;http://www.invenzzia.org/en/files&quot; hreflang=&quot;en&quot;&gt;download&lt;/a&gt;. The English manual can be found &lt;a href=&quot;http://www.invenzzia.org/docs/opt2-en/&quot; hreflang=&quot;en&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.invenzzia.org/en/post/One-year-of-hard-work#comment-form</comments>
      <wfw:comment>http://blog.invenzzia.org/en/post/One-year-of-hard-work#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.invenzzia.org/en/feed/atom/comments/41</wfw:commentRss>
      </item>
    
  <item>
    <title>TypeFriendly 0.1.0 released</title>
    <link>http://blog.invenzzia.org/en/post/TypeFriendly-010-released</link>
    <guid isPermaLink="false">urn:md5:b75234195a2997b4de10c3707d8670eb</guid>
    <pubDate>Wed, 23 Jul 2008 10:34:00 +0200</pubDate>
    <dc:creator>Zyx</dc:creator>
        <category>TypeFriendly</category>
        <category>development</category><category>releases</category><category>typefriendly</category>    
    <description>    &lt;p&gt;At last, the translation of the manual into English is complete and the source code has been already released as the first version of TypeFriendly, the documentation generator. In is available in &lt;a href=&quot;http://www.invenzzia.org/en/files&quot; hreflang=&quot;en&quot;&gt;Files&lt;/a&gt; on the main site. The user manual is provided in the source form and it works also as an example, so please do not worry that something is missing. All the necessary information to build the HTML version can be found in &lt;code&gt;/info/README.txt&lt;/code&gt; file. All you need is to type one command in the system console. The on-line documentation will be available soon, as we are preparing new website. To get more information about TypeFriendly, take a look at the previous note.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.invenzzia.org/en/post/TypeFriendly-010-released#comment-form</comments>
      <wfw:comment>http://blog.invenzzia.org/en/post/TypeFriendly-010-released#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.invenzzia.org/en/feed/atom/comments/32</wfw:commentRss>
      </item>
    
</channel>
</rss>