<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TYPO3Development &#187; Development Process</title>
	<atom:link href="http://blog.typoplanet.de/category/development-process/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.typoplanet.de</link>
	<description>A blog for professional TYPO3 developers</description>
	<lastBuildDate>Mon, 28 Mar 2011 18:10:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>A book about Extbase and Fluid</title>
		<link>http://blog.typoplanet.de/2010/07/06/book-about-extbase-and-fluid/</link>
		<comments>http://blog.typoplanet.de/2010/07/06/book-about-extbase-and-fluid/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 16:22:38 +0000</pubDate>
		<dc:creator>Jochen Rau</dc:creator>
				<category><![CDATA[books]]></category>
		<category><![CDATA[Development Process]]></category>
		<category><![CDATA[Extbase]]></category>
		<category><![CDATA[My Projects]]></category>
		<category><![CDATA[Tips and Tricks]]></category>

		<guid isPermaLink="false">http://blog.typoplanet.de/?p=382</guid>
		<description><![CDATA[Writing a book is a huge project. I never believed those people saying &#8220;Just double the time of your first estimate&#8221;. Now, after the book is finally available I would say they are wrong. You have to increase it threefold. The book about Extbase and Fluid was written in close collaboration with Sebastian Kurfürst (core [...]]]></description>
			<content:encoded><![CDATA[<p>Writing a book is a huge project. I never believed those people saying &#8220;Just double the time of your first estimate&#8221;. Now, after the book is finally available I would say they are wrong. You have to increase it threefold.</p>
<p>The book about <a href="http://forge.typo3.org/projects/typo3v4-mvc">Extbase</a> and <a href="http://forge.typo3.org/projects/show/package-fluid">Fluid</a> was written in close collaboration with Sebastian Kurfürst (core developer of Fluid) and Inken Kiupel (reader). We hope that it encourages the developers of TYPO3 extensions to get in touch with the fascinating concepts of FLOW3. And we hope that the book eases the migration to TYPO3 v5 (that&#8217;s what Extbase is all about).</p>
<p>We are aware of the fact that many of the English speaking TYPO3 developers are eagerly waiting for more Books about Extbase and Fluid  published in English. Sebastian Kurfürst and I are currently investigating the best way to to get the book translated into English to be published on <a href="http://www.typo3.org">typo3.org</a>.</p>
<p>If you have any questions regarding the book, or found some typos (at least 3), feel free to use the comments facility (if it is positive ;-) ) or write me an <a href="mailto:book@typoplanet.de">e-mail</a>. I am really looking forward to hear from you.</p>
<p>You might want to support our work by <a href="http://www.amazon.de/gp/product/3897219654?ie=UTF8&amp;tag=typoplanet-21&amp;linkCode=as2&amp;camp=1638&amp;creative=6742&amp;creativeASIN=3897219654">ordering the book through this link</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.de/e/ir?t=typoplanet-21&amp;l=as2&amp;o=3&amp;a=3897219654" border="0" alt="" width="1" height="1" />.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.typoplanet.de/2010/07/06/book-about-extbase-and-fluid/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>TYPO3 v5—The mental Transition</title>
		<link>http://blog.typoplanet.de/2009/03/30/typo3-v5%e2%80%94the-mental-transition/</link>
		<comments>http://blog.typoplanet.de/2009/03/30/typo3-v5%e2%80%94the-mental-transition/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 15:19:00 +0000</pubDate>
		<dc:creator>Jochen Rau</dc:creator>
				<category><![CDATA[Development Process]]></category>
		<category><![CDATA[extension development]]></category>
		<category><![CDATA[flow3]]></category>
		<category><![CDATA[transition]]></category>
		<category><![CDATA[typo3 v5]]></category>

		<guid isPermaLink="false">http://blog.typoplanet.de/?p=213</guid>
		<description><![CDATA[The upcoming Version 5 of TYPO3 is rewritten from scratch. It is based on a new framework called FLOW3. With TYPO3 v5 the [API&#124;Application Programming Interface] will change completely. There are also a couple of new programming paradigms and patterns. Personally, I am very enthusiastic about the &#8220;new way&#8221;. The past couple of months I had [...]]]></description>
			<content:encoded><![CDATA[<p>The upcoming <a title="Roadmap of TYPO3" href="http://typo3.org/development/roadmap/">Version 5 of TYPO3</a> is rewritten from scratch. It is based on a new framework called <a title="Link to FLOW3" href="http://flow3.typo3.org/">FLOW3</a>. With TYPO3 v5 the [API|Application Programming Interface] will change completely. There are also a couple of new programming paradigms and patterns. Personally, I am very enthusiastic about the &#8220;new way&#8221;.</p>
<p>The past couple of months I had numerous discussions about the new version and how to migrate from TYPO3 v4 to v5. And I had to realize that there are several reservations and concerns about all the new things to learn. All of them have to be taken into account to keep the community healthy.<br />
<span id="more-213"></span></p>
<p>The people I have talked with had different backgrounds (different knowledge about TYPO3, different involvement in the community, etc.). Most of them asked one of the following questions:</p>
<ol>
<li>When will TYPO3 v5 be available?</li>
<li>How to migrate content?</li>
<li>How to migrate code (extensions)?</li>
<li>How to migrate me?</li>
</ol>
<p>Questions 1.-3. are already covered by <a title="FAQ about FLOW3" href="http://flow3.typo3.org/about/faq/">an article of the v5 team</a>. The most underestimated question is, how to cope with the mental transition of the developers. Many developers pointed out that they do not have enough time to dig into the new version. Maybe that is a question of how to weight the time spent on daily business and the time spent on (self) education. This prioritization has to be done not only by the developer himself but also by the company he is working for. Therefore, many of the developers decided to wait until FLOW3/TYPO3 v5 is released at a future point in time.</p>
<p>To enable the developers to get in touch with the paradigms of FLOW3 as soon as possible was my personal motivation to be involved in doing a back-port of the  FLOW3 [MVC|MVC stands for Model-View-Controller, a way to separate different concerns of an application] frame-work. The result is <a href="http://forge.typo3.org/projects/show/typo3v4-mvc">ExtBase</a>, a new frame-work for extensions and a successor of [pi_Base|The standard Plugin Base Class of TYPO3 v4]. It will be shipped with TYPO3 v4.3. It is planned to be released in May, 2009.</p>
<p>Furthermore, I am very happy about the decision at the TYPO3 snowboard tour to back-port Fluid, too. Fluid is a very sophisticated new templating engine mainly developed by <a href="http://sandstorm-media.de/about-us.html">Sebastian Kurfürst</a>.</p>
<p>ExtBase in companion with Fluid encourages the developer of TYPO3 v4 based extensions to code the FLOW3 style right now.  There is already an example extension called BlogExample available. At time of the release of v4.3 we also plan to give a good documentation at hand.</p>
<p>Although we implemented already 80% of the features there is quite a lot of work to do (e.g. implementing view helper classes, doing code reviews, and integration testing, writing documentation and tutorials). Do not hesitate to send me a message, if you want to lend us a helping hand.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.typoplanet.de/2009/03/30/typo3-v5%e2%80%94the-mental-transition/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Domain Driven Content Management</title>
		<link>http://blog.typoplanet.de/2009/03/07/domain-driven-content-management/</link>
		<comments>http://blog.typoplanet.de/2009/03/07/domain-driven-content-management/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 12:02:31 +0000</pubDate>
		<dc:creator>Jochen Rau</dc:creator>
				<category><![CDATA[Development Process]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[DDD]]></category>
		<category><![CDATA[extension development]]></category>

		<guid isPermaLink="false">http://blog.typoplanet.de/?p=74</guid>
		<description><![CDATA[This Article is about the Domain of a Content Management System. What is the content all about? How is it structured, oredere, classified? How can it be transformed form one presentation form to another? And how can we deal with content in TYPO3 v5.x?]]></description>
			<content:encoded><![CDATA[<p>Domain Driven Design is—by experience—a strong concept and a good foundation to build TYPO3 extensions upon.</p>
<blockquote><p><strong>Domain-driven design</strong> (DDD) is an approach to the design of software, based on the two premises that complex domain designs should be based on a model, and that, for most software projects, the primary focus should be on the domain and domain logic [...].</p></blockquote>
<p>The domain represents structure, knowledge and data. A content management system (CMS) like TYPO3 has to handle the data of the domain with respect to the domain knowledge. It aggregates the data, and visualizes it as a content of an output format.</p>
<p>A question emerges: How should the data stored in a domain be mapped on the content of the output? <span id="more-74"></span>You might say: &#8220;Hey, what&#8217;s the problem? The data &#8216;stored&#8217; in the extension <em>is</em> already the content to be displayed!&#8221;. I don&#8217;t think so. Nowadays, the domain of an extension and the domain of the CMS are woven into another. And the following questions are answered by the extension itself:</p>
<ul>
<li>&#8220;What is the title of the article?&#8221;</li>
<li>&#8220;How many articles should be shown on the front-page?</li>
<li>&#8220;Should the subtitle of the article be emphasized?&#8221;</li>
</ul>
<p>So, we have to spend hours and hours to adapt all the templates of an extension to fit in the overall context of a web page. That&#8217;s annoying. Now, let&#8217;s try to solve that issue. The first thing is to assign the questions to the proper domain:</p>
<ul>
<li>&#8220;What is the title of the article?&#8221; → domain of the extension</li>
<li>&#8220;How many articles should be shown on the front-page? → domain of the CMS</li>
<li>&#8220;Should the subtitle of the article be emphasized?&#8221; → domain of the CMS</li>
</ul>
<p>If we finished the separation of the two domains we are ready to take the next step: mapping the domain of the extension onto the output generated by the CMS. I propose a two-step process:</p>
<ol>
<li>Map the domain objects of the extension onto the content object aggregate of the CMS</li>
<li>Transform the content object aggregate to the output format</li>
</ol>
<p>The first step maps the domain objects of the extension onto content objects. These aggregated content objects represent the structure and the semantics of the output, but not its syntax (like &#8220;&lt;h1&gt;The Title&lt;/h1&gt;&#8221;). The second step transforms the content objects to the output format. This can be done with a templating engine as usual.</p>
<p>The benefit of this two-step process is that the CMS &#8220;owns&#8221; the templates. So we can configure the visual representation of the domain objects of <em>all</em> extensions at one central place.</p>
<h3>An Example</h3>
<p>An example might clarify the process. Let&#8217;s assume I want to write a news extension. The first step is to design the domain of my new extension:</p>
<div id="attachment_171" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-171" title="news" src="http://blog.typoplanet.de/wp-content/uploads/2009/03/news-300x268.png" alt="news" width="300" height="268" /><p class="wp-caption-text">The domain model &quot;News Item&quot; of the extension</p></div>
<p>Then I have to examine, what the CMS built-in content object catalog offers to me. Hm, okay, there is already a content object called &#8220;article&#8221;. It seems to fit my purposes:</p>
<div id="attachment_174" class="wp-caption aligncenter" style="width: 274px"><img class="size-medium wp-image-174" title="article" src="http://blog.typoplanet.de/wp-content/uploads/2009/03/article-264x300.png" alt="The domain model &quot;Article&quot; of the CMS" width="264" height="300" /><p class="wp-caption-text">The domain model &quot;Article&quot; of the CMS</p></div>
<p>I configure the mapping as follows:</p>
<ul>
<li>Author → Author</li>
<li>Text  → Text</li>
<li>Title → Header</li>
<li>Subtitle → Subheader</li>
<li>Teaser → ShortDescription</li>
<li>PublishingDate → Date</li>
</ul>
<p>As a result, I have a generic &#8220;Article Object&#8221; which can be added to a higher-level content object, like &#8220;Main Content Area&#8221; or &#8220;Page&#8221;. My &#8220;News Item&#8221; will be rendered depending on the configuration of the transformation process and the context the article is displayed in. I—as an extension developer—don&#8217;t have to deal with the visualization of my domain objects.</p>
<p>But, what if I want to get the control back over the presentation of my domain object? Then I have to define my own content object class (which can of course extend an existing content object class).</p>
<p>This leads to much more decoupled way of content management based on domain driven design. That&#8217;s why I called it &#8220;Domain Driven Content Management&#8221;.</p>
<p>I&#8217;m anxious to read your comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.typoplanet.de/2009/03/07/domain-driven-content-management/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Some thoughts on extension development</title>
		<link>http://blog.typoplanet.de/2009/03/03/some-thoughts-on-extension-development/</link>
		<comments>http://blog.typoplanet.de/2009/03/03/some-thoughts-on-extension-development/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 17:02:15 +0000</pubDate>
		<dc:creator>Jochen Rau</dc:creator>
				<category><![CDATA[Development Process]]></category>
		<category><![CDATA[DDD]]></category>
		<category><![CDATA[extension development]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[ontology]]></category>

		<guid isPermaLink="false">http://blog.typoplanet.de/?p=92</guid>
		<description><![CDATA[Todays development process of a TYPO3 extension can be characterized by "Database Driven Design". In this article I describe my personal vision of a more modern approach - and beyond.]]></description>
			<content:encoded><![CDATA[<p>Today&#8217;s development process of a TYPO3 extension comprises (usually) the following steps:</p>
<ol>
<li>collect clients&#8217; or personal needs</li>
<li>design the relational model (database design)</li>
<li>scaffold the extension using the kickstarter</li>
<li>add a lot of database queries template handling to the file _pi1, _pi2, _pi3 etc.</li>
<li>design the templates</li>
</ol>
<p>This ends up in an extension design which is hard to maintain &#8211; especially for larger projects. A more modern approach uses the Model View Controller Pattern.<span id="more-92"></span> One of the advantages of this pattern is to enable the developer to focus on the domain of the client (and thus the domain model of the extension). So, the MVC pattern is a prerequisite for Domain Driven Design. This leads to a slightly different development process:</p>
<ol>
<li>collect clients or personal needs</li>
<li>design the domain model (classes) translating the domain knowledge of the client into UML</li>
<li>scaffolding the extension using a kickstarter</li>
<li>adding the business logic to the domain model classes</li>
<li>design the templates</li>
</ol>
<p>What are the pros of this approach</p>
<ul>
<li>The developer and the client use a common language.</li>
<li>The domain model is more decoupled from the implementation architecture.</li>
<li>It&#8217;s clearly defined where the business logic resides (in the domain model classes).</li>
</ul>
<p>&#8230; and the cons</p>
<ul>
<li>It adds complexity to the extension.</li>
<li>It forces the developer to learn new programing paradigms, which might be difficult to schedule in the daily work.</li>
</ul>
<p>To be consequent we have to go one step further. The domain knowledge is captured in natural language. But natural language is much more expressive than object oriented software design in UML. As a consequence, there is a mismatch between the domain model expressed by the domain experts (the client) and the object oriented model expressed in UML.</p>
<p>If we want to keep all the information of the domain experts we have to define an ontology. To express the domain knowledge in an ontology, OWL seems to be a good solution to me, as it is a W3C standard and targets web applications. To edit ontologies I played around with Protégé.</p>
<p>In the end, we will have a process which can be named &#8220;Ontology Driven Extension Development Process&#8221;:</p>
<ol style="text-align: left; ">
<li>collect clients or personal needs</li>
<li>design the ontology using the same language as the client does</li>
<li>scaffolding the extension using a new ontology driven kickstarter</li>
<li>adding the business logic to the domain model classes</li>
<li>design the templates</li>
</ol>
<p>What are the pros of this approach</p>
<ul>
<li>The developer and the client use a common language.</li>
<li>The ontology based domain model is independent from the implementation and can be shared across different extensions with different purposes.</li>
</ul>
<p>&#8230; and the cons</p>
<ul>
<li>It adds complexity to the development processes.</li>
<li>It&#8217;s forces the developer to learn completely new paradigms an terms.</li>
</ul>
<p>I&#8217;m looking forward to your comments an appreciate any questions.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.typoplanet.de/2009/03/03/some-thoughts-on-extension-development/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

