<?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>etobi</title>
	<atom:link href="http://etobi.de/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://etobi.de/blog</link>
	<description>Tobias Liebig - Freelancer</description>
	<lastBuildDate>Thu, 03 May 2012 10:00:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Deployment: Setup TYPO3.Surf</title>
		<link>http://etobi.de/blog/2012/05/deployment-setup-typo3-surf/</link>
		<comments>http://etobi.de/blog/2012/05/deployment-setup-typo3-surf/#comments</comments>
		<pubDate>Thu, 03 May 2012 10:00:58 +0000</pubDate>
		<dc:creator>etobi</dc:creator>
				<category><![CDATA[Deployment]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[deploy]]></category>
		<category><![CDATA[typo3]]></category>
		<category><![CDATA[typo3.surf]]></category>

		<guid isPermaLink="false">http://etobi.de/blog/?p=174</guid>
		<description><![CDATA[TYPO3.Surf is a package for FLOW3 to do automatic deployments for FLOW3 applications. However as the concepts of TYPO3.Surf are pretty generic, why not deploying a TYPO3 v4/v6 website with Surf? Today we're going to learn how to setup a &#8230; <a class="small" href="http://etobi.de/blog/2012/05/deployment-setup-typo3-surf/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>TYPO3.Surf is a package for FLOW3 to do automatic deployments for FLOW3 applications. However as the concepts of TYPO3.Surf are pretty generic, why not deploying a TYPO3 v4/v6 website with Surf?</p>

<p>Today we're going to learn how to setup a TYPO3.Surf installation.</p>

<p>You can use one TYPO3.Surf setup to deploy as many different sites or applications as you want. So you don't need a TYPO3.Surf for each project, but one for them all.
TYPO3.Surf does not need a webserver. Actually it does not provide any web interface but is completely CLI based. For the moment we will trigger/execute TYPO3.Surf manually by hand. Later we could have an <a href="http://jenkins-ci.org/">Jenkins</a> to do that for us.</p>

<p>First, we need a blank FLOW3 installation:</p>

<pre><code>git clone --recursive git://git.typo3.org/FLOW3/Distributions/Base.git SurfNTurf
cd SurfNTurf
./flow3 cache:warmup
</code></pre>

<p>Next, we install TYPO3.Surf:</p>

<pre><code>./flow3 package:import TYPO3.Surf

./flow3 package:activate TYPO3.Surf
# find out which new commands are provided by the package "TYPO3.Surf"
./flow3 help

# the package itself is available here:
ls -l Packages/Application/TYPO3.Surf/
</code></pre>

<p>Basically thats it. To actually use TYPO3.Surf you need to write a Surf configuration. They are pretty simple PHP-Files, placed in <code>Build/Surf/</code>. Later you will have one configuration for each installation/website (project/customer) and node (staging, production/live) on which you are going to deploy to. Currently TYPO3.Surf provides everything you need for deploying a FLOW3 application. However we need to cover some special needs for TYPO3v4/v6. Some TYPO3.Surf changes for that are already pending in Gerrit for review and some more are in the pipeline.</p>

<p>How to write your own Surf configuration, what you will need to deploy a TYPO3v4/v6 installation, what a "Workflow", "Application" and a "Node" is, will be covered in the next blog post.</p>

<p>For the time being you will find the recent <a href="http://git.typo3.org/FLOW3/Packages/TYPO3.Surf.git?a=blob_plain;f=Documentation/Guide/Index.rst;hb=HEAD">TYPO3.Surf documentation here</a>.</p>
 <p><a href="http://etobi.de/blog/?flattrss_redirect&amp;id=174&amp;md5=7c2f28f975f6d53ddbd1c587d36621a3" title="Flattr" target="_blank"><img src="http://etobi.de/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://etobi.de/blog/2012/05/deployment-setup-typo3-surf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=etobi&amp;popout=1&amp;url=http%3A%2F%2Fetobi.de%2Fblog%2F2012%2F05%2Fdeployment-setup-typo3-surf%2F&amp;language=en_GB&amp;category=text&amp;title=Deployment%3A+Setup+TYPO3.Surf&amp;description=TYPO3.Surf+is+a+package+for+FLOW3+to+do+automatic+deployments+for+FLOW3+applications.+However+as+the+concepts+of+TYPO3.Surf+are+pretty+generic%2C+why+not+deploying+a+TYPO3+v4%2Fv6+website+with...&amp;tags=deploy%2Ctypo3%2Ctypo3.surf%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Blog series about &#8220;TYPO3v4/v6 Deployment&#8221;</title>
		<link>http://etobi.de/blog/2012/05/blog-series-about-typo3v4v6-deployment/</link>
		<comments>http://etobi.de/blog/2012/05/blog-series-about-typo3v4v6-deployment/#comments</comments>
		<pubDate>Wed, 02 May 2012 14:24:38 +0000</pubDate>
		<dc:creator>etobi</dc:creator>
				<category><![CDATA[Deployment]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[typo3]]></category>
		<category><![CDATA[typo3.surf]]></category>

		<guid isPermaLink="false">http://etobi.de/blog/?p=151</guid>
		<description><![CDATA[While sitting together at the Core Team Meeting in prior to the T3DD12 in Munich, someone raised the topic "Deployment" for TYPO3v4/6. Many agencies already have their own solution for deploying a TYPO3 site/setup. They based on e.g. phing or &#8230; <a class="small" href="http://etobi.de/blog/2012/05/blog-series-about-typo3v4v6-deployment/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://etobi.de/blog/2012/05/blog-series-about-typo3v4v6-deployment/coreteam/" rel="attachment wp-att-155"><img src="http://etobi.de/blog/wp-content/uploads/2012/05/coreteam-300x160.jpg" alt="" title="coreteam" width="300" height="160" class="box" /></a></p>

<p>While sitting together at the Core Team Meeting in prior to the T3DD12 in Munich, someone raised the topic "Deployment" for TYPO3v4/6. Many agencies already have their own solution for deploying a TYPO3 site/setup. They based on e.g. phing or even a bunch of plain shell scripts.
During the lasts months being a freelancer for several agencies and while talking about deployment with others I noticed most of the people have the same issues again and again. It's always like "how to get some content/pages from this to another installation" or the need for a scriptable way (CLI) to do "TYPO3 things" like clear the cache or run the "database compare tool". There are a bunch of "problems" everybody seems to have, if he tries to automatically deploy an Enterprise TYPO3 Installation.</p>

<p>We really want to tackle this issue, so I setup a forge project (http://forge.typo3.org/projects/extension-deployment/wiki) to collect all ideas and use cases and to actually solve the issues and missing features.</p>

<p>The goal of this project is to setup a "best practice" for deploying a TYPO3 (v4/v6) installation. Also i'm going to develop some tools/extensions or cleanup/extend existing things for how i think a deployment chain might look like.</p>

<p>In the next weeks i will do a series of blog posts here. I'm going to cover "TYPO3.Surf" (which is the "deployment tool" we are join to use), best practice for Git versioning (releasing/branching/...), deployment-friendly TYPO3 setup (where and how to store configurations) as well as "Content migration" (this is real tricky one; more on that later).</p>

<p>If you have any suggestions, ideas, want to contribute to this project or like to sponsor me please do not hesitate to contact me!</p>

<p>The first post will be about "How to setup TYPO3.Surf".</p>
 <p><a href="http://etobi.de/blog/?flattrss_redirect&amp;id=151&amp;md5=98907cbb7cf138fae5610e53422fc28c" title="Flattr" target="_blank"><img src="http://etobi.de/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://etobi.de/blog/2012/05/blog-series-about-typo3v4v6-deployment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=etobi&amp;popout=1&amp;url=http%3A%2F%2Fetobi.de%2Fblog%2F2012%2F05%2Fblog-series-about-typo3v4v6-deployment%2F&amp;language=en_GB&amp;category=text&amp;title=Blog+series+about+%26%238220%3BTYPO3v4%2Fv6+Deployment%26%238221%3B&amp;description=While+sitting+together+at+the+Core+Team+Meeting+in+prior+to+the+T3DD12+in+Munich%2C+someone+raised+the+topic+%22Deployment%22+for+TYPO3v4%2F6.+Many+agencies+already+have+their+own+solution+for...&amp;tags=deployment%2Ctypo3%2Ctypo3.surf%2Cblog" type="text/html" />
	</item>
		<item>
		<title>TYPO3&#8242;s own Summer of Code 2012</title>
		<link>http://etobi.de/blog/2012/04/typo3s-own-summer-of-code-2012/</link>
		<comments>http://etobi.de/blog/2012/04/typo3s-own-summer-of-code-2012/#comments</comments>
		<pubDate>Thu, 26 Apr 2012 10:35:13 +0000</pubDate>
		<dc:creator>etobi</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://etobi.de/blog/?p=127</guid>
		<description><![CDATA[Read the official news on http://typo3.org/news/article/typo3-summer-of-code-2012-it-happens/ If you have any questions, drop ma a mail at tobias.liebig(at)typo3.org We are really looking forward to your awesome projects!]]></description>
			<content:encoded><![CDATA[<p>Read the official news on <a href="http://typo3.org/news/article/typo3-summer-of-code-2012-it-happens/">http://typo3.org/news/article/typo3-summer-of-code-2012-it-happens/</a></p>

<p>If you have any questions, drop ma a mail at tobias.liebig(at)typo3.org</p>

<p>We are really looking forward to your awesome projects!</p>
 <p><a href="http://etobi.de/blog/?flattrss_redirect&amp;id=127&amp;md5=84ed5fe59efeec87bbd48e81ea00b519" title="Flattr" target="_blank"><img src="http://etobi.de/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://etobi.de/blog/2012/04/typo3s-own-summer-of-code-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=etobi&amp;popout=1&amp;url=http%3A%2F%2Fetobi.de%2Fblog%2F2012%2F04%2Ftypo3s-own-summer-of-code-2012%2F&amp;language=de_DE&amp;category=text&amp;title=TYPO3%26%238242%3Bs+own+Summer+of+Code+2012&amp;description=Read+the+official+news+on+http%3A%2F%2Ftypo3.org%2Fnews%2Farticle%2Ftypo3-summer-of-code-2012-it-happens%2F+If+you+have+any+questions%2C+drop+ma+a+mail+at+tobias.liebig%28at%29typo3.org+We+are+really+looking+forward+to+your+awesome+projects%21&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>It&#8217;s spring!</title>
		<link>http://etobi.de/blog/2012/03/its-spring/</link>
		<comments>http://etobi.de/blog/2012/03/its-spring/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 21:55:48 +0000</pubDate>
		<dc:creator>etobi</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[gsoc]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[typo3]]></category>

		<guid isPermaLink="false">http://etobi.de/blog/?p=99</guid>
		<description><![CDATA[The Google Summer of Code 2012 is coming up. The last two years I participate the GSoC as a mentor and last year I had the great opportunity to join the mentor summit in SF. I really got into the &#8230; <a class="small" href="http://etobi.de/blog/2012/03/its-spring/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://etobi.de/blog/2012/03/its-spring/20120301-220912-jpg/" rel="attachment wp-att-106"><img src="http://etobi.de/blog/wp-content/uploads/2012/03/20120301-220912-e1330638860324.jpg" alt="Join the Google Summer Of Code 2012" title="20120301-220912.jpg" width="549" height="279" class="box" /></a></p>

<h2>The <a href="http://code.google.com/soc/">Google Summer of Code 2012</a> is coming up.</h2>

<p>The last two years I participate the GSoC as a mentor and last year I had the great opportunity to join the <a title="My Summer of Code (Part 1 of 2)" href="http://etobi.de/blog/2011/11/my-summer-of-code-part-1-of-2/">mentor summit in SF</a>. I really got into the idea of GSoC. You might have <a title="TYPO3′s Summer of Code (Part 2)" href="http://etobi.de/blog/2011/11/typo3s-summer-of-code-part-2/">read my article about what can be improved this year</a>. Maybe thats why I have been asked recently to join the this years TYPO3-GSoC-Admin-Team to organize TYPO3's Summer of Code.</p>

<p>One of the main issues of the last year was the lack of inner and outer communication. Ingo and I already started to discuss how to improve that. However, beside of the regular "official reports" on news.typo3.org, I'm going to blog about my personal point of view during the summer. At least I'm trying to do so.</p>

<h2>We need you!</h2>

<p>On last monday the organization application phase did start. The deadline is the next friday the 9.3. Which means we have like one week from now.</p>

<p>Now it's our turn to apply and to do so and to get the best out of this summer, we urgently need <em>your</em> help!</p>

<p>For the moment we need a) possible Mentors and b) ideas for projects.</p>

<h3>Could you imagine beeing a mentor?</h3>

<p>The mentor is like the project manager for a student and his project. You going to decide, together with the other mentors, which students proposals will be accepted and you will guide one of these projects over the summer.
You should already be involved in the TYPO3-Community and really feel the spirit of TYPO3. You are not going to actualy 'work' or even code on your students project. That's really the students part. The mentors task is more about involving the student into our community, getting and keeping the student on track and beeing available for your students questions.
Expect like 3-5 hours of work per week. You will need to do hand in a midterm and a final evaluation to google, which actualy is a short questionaire. You going to do regular status meetings with your student (e.g. by skype), reviewing the students work, joining our regular mentor meetings in BigBlueButton e.g. to report about the project status.
Never done something like this before? No problem: You won't be alone. We will have some experienced mentors from the last years again, which gladly will help to solve all questions. This is one of the reasons why we will do regular mentor meetings this year.
What you will get? First of all a great summer with a cool project and a cool student. Also there is a small(!) compensation. Two of our mentors will join the mentor summit in San Francisco at the Google HQ. But most important: you will do something good for the student, for the OpenSource spirit and for TYPO3!
And hey: There will be T-Shirts for everyone!</p>

<p>As I was a mentor for two years now, I can tell you it's a really nice and fun job and worthful experience.</p>

<p>Any questions about beeing a mentor? Like to be one? <a href="mailto:tobias.liebig@typo3.org">Get in touch with me!</a></p>

<h3>Ideas for possible projects</h3>

<p>When the students apply in the next phase of GSoC, they will hand in project proposals.
As most of the students are not that deep into TYPO3 and about our current projects, we need to provide some possible ideas. In the last years we had an <a href="http://typo3.org/development/gsoc2011/ideas/">'ideas' page</a> (actualy Google requires us to have one), which we need to update for this years application.</p>

<p>We need any project idea related to the TYPO3 core, FLOW3 or 'Phoenix'. Any rough idea will do! No need for fully concepted/drafted projects, just ideas.
I'm going to collect all of these ideas and discuss them with the mentors. These ideas, which we think are doable by a student during the summer, will be presented on the ideas page.</p>

<p>For example: completely rewriting the v4 list module might not be doable for someone never have seen TYPO3 before. A <a href="http://browser.srv.pascalj.de/">FLOW3 package to browse model data</a> is.</p>

<p>If you are a core team member, core project team member (/leader), a experienced TYPO3 developer or just someone actualy heavily using TYPO3 or FLOW3 and have an idea? <a href="mailto:tobias.liebig@typo3.org">Drop me a line!</a></p>

<h2>Make it our "summer of code"</h2>

<p>I'm really looking forward to this summer.</p>

<p>Do not hesitate to contact me if you like to participate or if you have any questions or ideas:
<ul>
    <li><a href="mailto:tobias.liebig@typo3.org">tobias.liebig(at)typo3.org</a></li>
    <li>Twitter: <a href="http://twitter.com/etobi">@etobi</a> or <a href="http://twitter.com/typo3_gsoc">@typo3_gsoc</a></li>
    <li>Jabber: <a href="jabber:etobi@jabber.ccc.de">etobi@jabber.ccc.de</a></li>
    <li>Skype: <a href="skype:tobias7031">tobias7031</a></li>
    <li>or just leave a comment here</li>
</ul></p>
 <p><a href="http://etobi.de/blog/?flattrss_redirect&amp;id=99&amp;md5=80b03653dc6264eaef98502b995688d2" title="Flattr" target="_blank"><img src="http://etobi.de/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://etobi.de/blog/2012/03/its-spring/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=etobi&amp;popout=1&amp;url=http%3A%2F%2Fetobi.de%2Fblog%2F2012%2F03%2Fits-spring%2F&amp;language=de_DE&amp;category=text&amp;title=It%26%238217%3Bs+spring%21&amp;description=The+Google+Summer+of+Code+2012+is+coming+up.+The+last+two+years+I+participate+the+GSoC+as+a+mentor+and+last+year+I+had+the+great+opportunity+to+join...&amp;tags=gsoc%2Ctypo3%2Cblog" type="text/html" />
	</item>
		<item>
		<title>TYPO3&#8242;s Summer of Code (Part 2)</title>
		<link>http://etobi.de/blog/2011/11/typo3s-summer-of-code-part-2/</link>
		<comments>http://etobi.de/blog/2011/11/typo3s-summer-of-code-part-2/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 08:08:31 +0000</pubDate>
		<dc:creator>etobi</dc:creator>
				<category><![CDATA[gsoc]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[mentor summit]]></category>
		<category><![CDATA[typo3]]></category>

		<guid isPermaLink="false">http://etobi.de/blog/?p=76</guid>
		<description><![CDATA[Like I promised this is the second part of the "Summer of Code" article. If you have no idea what this is about, read My Summer of Code here. This blog post is almost only about what I think needs &#8230; <a class="small" href="http://etobi.de/blog/2011/11/typo3s-summer-of-code-part-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div style="float:right;"><a href="http://etobi.de/blog/2011/11/typo3s-summer-of-code-part-2/img_3039-resize/" rel="attachment wp-att-94"><img src="http://etobi.de/blog/wp-content/uploads/2011/11/IMG_3039.resize-200x300.jpg" alt="" title="Google Summer Of Code Mentor Summit" width="200" height="300" class="box" /></a></div>

<p>Like I promised this is the second part of the "Summer of Code" article. If you have no idea what this is about, read <a href="http://etobi.de/blog/2011/11/my-summer-of-code-part-1-of-2/">My Summer of Code</a> here.</p>

<p>This blog post is almost only about what I think needs to be improved. It's not about how to actually solve these issues (in some cases I actually don't have any idea how). <strong>Consider this being an invitaion for discussion.</strong> I'd love to get your feedback, thoughts, ideas on this article and GSoC in general.</p>

<p>Do not hesitate to drop me a mail, nudge me on <a href="http://twitter.com/etobi">twitter</a>, jabber, skype or leave a comment below.</p>

<h2>"You're are doing it wrong"</h2>

<p>As I already wrote in the last article:</p>

<p>We, the mentors, the students nor the org-admins of TYPO3 did not do it (completely) wrong. But - hey - it's a budget of 27.000 US$ for TYPO3. We definitly should get something out of it, right?</p>

<p>While chatting and listening to other people at the Mentor Summit talking about their projects, their students, and their summer, I realized that we (TYPO3) didn't take advantage of the possibilities. And it's not just us. Many organizations had problems finding qualified students, filtering the proposals, projects worth doing, actually merge/use the code the students produced, and maybe most importantly keeping the students contributing after the summer.</p>

<h2>The issues (from my point of view)</h2>

<p>Here is what i think are the major issues:</p>

<ul>
<li>What's our goal participating in GSoC?</li>
<li>Improve communication.</li>
<li>Choosing qualified students, choosing the right proposal.</li>
<li>Define the tasks and guides for the student and the mentors.</li>
</ul>

<p>In more detail:</p>

<h3>What's our goal participating in GSoC?</h3>

<p>The major question while reading this article and for all mentors participating: "What's our goal participating in GSoC?".</p>

<ul>
<li>Is it to get (a little) buzz about TYPO3 in the Open Source world? Is it just to be part of the summer? GSoC is a great opportunity. We should get more out of it.</li>
<li>Do we want to get new contributers? Students, who do their project and stick to it (and the TYPO3 project in general) after the summer, becoming an active contributor?</li>
<li>Do we want to get things done (maybe things no one else cares about)? We have a bunch of tasks we could let a student do. But on the other hand not all tasks are suitable for a student, especially for first time contributors like most of the students are.</li>
<li>What's going to happen with the code the student contributes? I think it's important that the student's code should find its way into the core or at least should be used in a real project afterwards. This definitly has an impact on what could be a GSoC project and what's not suitable.</li>
</ul>

<p>When we - the mentors - are reading and voting on the students' proposals, no one told us what the "goal" is. To be honest I didn't even think about it in the first step myself. Actually it just poped up in my mind while writing these lines. If you are a mentor or going to be a mentor, you should ask yourself why you are participating: what's your personal goal? What's your student's goal? And what the organization's goal is about.</p>

<p>TYPO3 should have a defined goal for participating. At least a general goal, why participating at all. And maybe we can have a goal for the upcomming summer, too. E.g. if the summer's goal might be something like "improving usability" (although it's not a perfect example), one can look for a task, which will help to reach that goal. This does not mean a student can't propose anything else as a project. The goal should be a guide, an idea where to go in the big picture.</p>

<p>However, the goal needs to be discused before the studends apply and all possible mentors should participate in the discussion or - at least - should aggree on it.</p>

<p>And maybe someone already thought about it and defined a goal for TYPO3 in GSoC in general. I did not ask anybody about it. But if someone did, it's a lack of communication.</p>

<h3>Improve Communication</h3>

<p>This is a very general issue. We (including me!) definitly need to improve communication on all levels. Between the mentors, between the students and especially to not-GSoC-participating people.</p>

<p>To give an example: I - as one of the mentors - had no idea what the status of the five other projects was! To be honest and in retrospect: i didn't ask anyone about it. I'm pretty sure most of the others had no idea how our (Pascal and mine) project is going. At least I (as one of the inner circle) knew the subjects of the single projects, but most people from the outside have no idea what the projects are about, what the project's goals are and what the status is.</p>

<p>During the summer (correct me if i'm wrong) we had like two posts about GSoC on <a href="http://typo3.org">http://typo3.org</a> (<a href="http://news.typo3.org/news/article/-0907c155fc/">1</a>, <a href="http://news.typo3.org/news/article/typo3-accepted-for-gsoc-2011/">2</a>). At the end of the summer no final post/summary was posted yet. I know it's prepared and almost finished, but it's not published however.</p>

<p>Reminder: this is not to offend someone. I know we all are busy and writing blog/news articles has a pretty low priority. Hey - it took me more then 5 weeks for this article, right. Just saying people are curious about what's going on and have no chance to get any information if no one communicates about it.</p>

<p>Oh yes, we have a mailinglist and two IRC-channels for the students and the mentors. I had started a little indroduction thread (i think Karsten suggested it) in the mailinglist back in May. Not even that was answered by all students. Even worth: not one other mentor replied! After that half introduction thread only two other threads appeared on the list: one student asking for feedback (Yay! \o/ wish to read more like that one) and one thread someone asking for the results of the summer (reasonable question, see above - no real answers in that thread).</p>

<p>We also have <a href="http://buzz.typo3.org">http://buzz.typo3.org</a>, which lacks of buzz at all (in general, totally). So it's not a problem of missing infrastructure or plattform or tools, it's just no one using it (including me)!</p>

<p>What do you think? Can/should we "enforce" more communication by e.g. requiring each student and each mentor to write at least one public status report per month/week? One paragraph should be fine and it's more than nothing. Can/should the org-admins be more consequent and strict when asking for (short) paragraphs about the project untill a certain date?</p>

<p>Remember: students and mentors are getting payed for working on the project. I think it's okay to expect some writing as a result of the project.</p>

<h3>Choosing qualified students, choosing the right proposals</h3>

<p>A really hard task for the mentors prior to the actual summer is choosing, and voting on the students proposals and the students itself.</p>

<p>Really: Some of the proposals are really crap. Copy and paste from the <a href="http://typo3.org/development/gsoc2011/ideas/">ideas page</a>. Others don't make sense at all for TYPO3. Again others are way to ambitious for someone who has never worked and/or contributed to TYPO3 before. It's not too hard to filter these.</p>

<p>However the other proposals may not be final or perfect when the student hands them in either. We as the possible mentors should take care and help the students to improve their proposals. A little guide how a proposal should look like will definitely help.</p>

<p>Further having a goal for the summer could help to improve the quality of the proposals. If the students know what the goal is, they can focus on it and/or get inspiration how to reach that goal. I think this could increase the number of proposals as well as the quality of them.</p>

<p>When you have a well written and well thought-out proposal paper you still do not know, whether the student is a good student and if he can reach his goal. I heard from serveral projects who let the prospective students contribute a simple no-brainer patch to the project.</p>

<p>I really like the idea. Its an easy way to prove the student gets your workflow how to contribute. He learns about the infrastucture and the tools. And after all: if he took this hassle and got through it, he has proven that he is really willing to participate and contribute.</p>

<p>And if the student gets stuck, did not know how to start or how things work, it might be a problem with our documentation which really should be tackled. If the student can't figure out how to contribute, how are others supposed to do!</p>

<h3>Define the tasks and guides for the student and the mentors.</h3>

<p>It really would help if we define what the general tasks are during the summer for the student (beside of doing and finishing his project) and the mentor.</p>

<p>This might be f.e.:</p>

<ul>
<li>setting up a forge project.</li>
<li>regularly blog/write about the current status of the project (e.g. on <a href="http://buzz.typo3.org">http://buzz.typo3.org</a>) and not only on mid-term and after the final evaluation.</li>
<li>having status meetings each week or maybe even twice a week (and stick to it). </li>
<li>as a mentor first reviewing the proposals and later reviewing the students code and his articles.</li>
<li>targeting on getting the code merged into the core (this could be an additional motivation).</li>
</ul>

<p>These are only some rough ideas. The important thing is that we need to define these tasks and rules and even more importantly to write them down. For example ""The Perl Foundation"" has written down <a href="https://github.com/rafl/tpf-soc/blob/master/mentors-guidelines">guidelines for mentors</a> and <a href="https://github.com/rafl/tpf-soc/blob/master/student-guidelines">students</a>. We definitly should have something like that too.</p>

<h2>Even more ideas...</h2>

<p>What if we ask the students to come to the next T3CON or T3DeveloperDays to talk about their projects. Kind of a little TYPO3 GSoC summit with the students and the mentors. I know this might be hard to archive due to students being distributed all over the world and some not being able to afford coming to such an event. It's just an idea. Maybe we could apply for a little budget at the Assoc (may be too late for 2012 though).</p>

<p>Two mentors for each project. I heard from serveral projects that they assign a second co-mentor for each student. Actually that's a good idea. The co-mentor could help out if the first one is not available. He could write the article, reviewing the student's code (two +1s from both mentors are enough to merge a change into the core). As the main work will still remain on the main-mentor, the co-mentor could be a co-mentor in multible projects at the same time.</p>

<h2>Bonus: Mentor summit</h2>

<p>One last thing: if you're being a mentor during the summer: do anything to get the chance to go to the Mentor Summit. It's really worth it! And we really should send two mentors to the summit, not one going alone (at least one is way better then no one going).</p>

<p>So what do you think about the summer of code?<br />
You are a student or a mentor? Tell me about the issues you had.<br />
You did not participate in Google Summer of Code? Tell me how you have heard/read about the project and it's outcome.</p>
 <p><a href="http://etobi.de/blog/?flattrss_redirect&amp;id=76&amp;md5=9f2e216445b6fe895da0d39a41e0e71e" title="Flattr" target="_blank"><img src="http://etobi.de/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://etobi.de/blog/2011/11/typo3s-summer-of-code-part-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=etobi&amp;popout=1&amp;url=http%3A%2F%2Fetobi.de%2Fblog%2F2011%2F11%2Ftypo3s-summer-of-code-part-2%2F&amp;language=de_DE&amp;category=text&amp;title=TYPO3%26%238242%3Bs+Summer+of+Code+%28Part+2%29&amp;description=Like+I+promised+this+is+the+second+part+of+the+%22Summer+of+Code%22+article.+If+you+have+no+idea+what+this+is+about%2C+read+My+Summer+of+Code+here.+This...&amp;tags=gsoc%2Cmentor+summit%2Ctypo3%2Cblog" type="text/html" />
	</item>
		<item>
		<title>My Summer of Code (Part 1 of 2)</title>
		<link>http://etobi.de/blog/2011/11/my-summer-of-code-part-1-of-2/</link>
		<comments>http://etobi.de/blog/2011/11/my-summer-of-code-part-1-of-2/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 16:15:07 +0000</pubDate>
		<dc:creator>etobi</dc:creator>
				<category><![CDATA[gsoc]]></category>
		<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[mentor summit]]></category>
		<category><![CDATA[typo3]]></category>

		<guid isPermaLink="false">http://etobi.de/blog/?p=61</guid>
		<description><![CDATA[There are some task one keeps pushing from one week to another. Writing a blog article is definitely one of these tasks. I planed to write down my thoughts about the Google Summer of Code (GSoC) and the mentor summit &#8230; <a class="small" href="http://etobi.de/blog/2011/11/my-summer-of-code-part-1-of-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>There are some task one keeps pushing from one week to another. Writing a blog article is definitely one of these tasks. I planed to write down my thoughts about the Google Summer of Code (GSoC) and the mentor summit in San Francisco, since the day the summit was over. However it took me till today to actually do it.</p>

<p>This article consists of two parts (i already wrote both, really!). This (the first part) is about GSoC and the mentor summit in general. The second part will be published on Wednesday and is about my thoughts how a organisation could improve participating the GSoC.</p>

<h2>GSoC!? What's it and Why?</h2>

<p>Some of you may already know about GSoC, but some of you may have no idea why Google invited me to San Francisco. This is how the "summer" works and why I went to SF:</p>

<p>Every year Google invites students to participate and contribute to Open Source projects. The basic idea: Google is giving stipends to students to work (write code) for three month on a task for an Open Source project. Google calls it the "Google Summer of Code". Many small and some really large open source projects (<a href="http://de.wikipedia.org/wiki/Google_Summer_of_Code">Mozilla, Apache, Kernel.org, MediaWiki, Git, TYPO3, Drupal, ...</a>) apply to the programm. Actually every Open Source project can apply. Once the organizations are "accepted" by Google, students from all over the world can apply with the organizations by handing in proposals and ideas on what they want to work on during the summer. The organization (in my case the <a href="http://association.typo3.org/">TYPO3 Association</a>) provides a bunch of mentors which decide and vote on the proposals. Depending on the number of student proposals and available mentors of the organisation, Google decides how many students are going to work on their suggested projects. For TYPO3 this year we got six "slots", which means six projects/students.</p>

<p>Each student has at least on mentor assigned. There can be a co-mentor too. The mentor should guide the student in his project, bring him into the community and also evaluates the student's work. Only if the student passes the mentor's evaluation (there is a mid-term and a final evaluation), Google pays the student for his work.</p>

<p>This year 1115 students and 175 organizations took part. Doing a little math: 1100 Students; 5000US$ each; plus 500US$ for each mentor; plus uncounted T-Shirts; plus the Mentor Summit (which is free for all participating mentors). In sum that's a lot of money! Just the students stipends are worth 5.500.000 US$. By what I heared it's the largest single budget spent on supporting Open Source projects by one company.</p>

<h2>The Mentor Summit</h2>

<p>At the end of the summer, Google invites two mentors from each organization to meet up in Mountain View near San Francisco to exchange experiences. That's the GSoC Mentor Summit. It takes place at the Google Campus - also known as Googleplex - for two days, organized as a "unconference" (kind of like a BarCamp). 350 mentors were invited this year.</p>

<p>As I was mentoring <a href="http://www.pascalj.de">Pascal Jungblut</a> on his <a href="http://browser.srv.pascalj.de">FLOW3 Browser project</a> this year, and it happens that no other of us six mentors for TYPO3 had time to go, it was just lucky me who got the chance to go to the summit.</p>

<p>Beside San Francisco being a great city to visit, it was summerly in mid of October and I had far too little time to visit the city (<a href="http://etobi.de/blog/2011/10/hey-how-are-you-eine-kurzreise-nach-san-francisco/">see my photos</a>), I had a <em>great</em> mentor summit.</p>

<p>As it was an "unconference", the event started with a planning session. People suggested sessions and topics to discuss for the next two days. On these two days more then 60 sessions took place. Up to 15 in parallel. Unfortunately there is no way to join every session you're intrested in.</p>

<p>The sessions, the discussions, the talks in between outside in the sun, during the meals, in the chocolate room or at the pool party in the evening, meeting so many different people... It was a really inspiring event! It was a little bit like the TYPO3 developer days back in 2009 in Elmshorn, just not focused on one specific topic (like TYPO3 development), but more general, more widely.</p>

<p>When I said "inspiring" I mean I had the chance to reflect on how we did this summer, realizing that others had the same issues and getting ideas how to improve it in the next year.</p>

<h2>"You're are doing it wrong"</h2>

<p>Actually TYPO3 did not do it wrong the way we participated in the Summer of Code. But i think we can improve here and there. But that's the second part of the story.</p>
 <p><a href="http://etobi.de/blog/?flattrss_redirect&amp;id=61&amp;md5=e3823b6967cb6c3c02c7ae7184943ec4" title="Flattr" target="_blank"><img src="http://etobi.de/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://etobi.de/blog/2011/11/my-summer-of-code-part-1-of-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=etobi&amp;popout=1&amp;url=http%3A%2F%2Fetobi.de%2Fblog%2F2011%2F11%2Fmy-summer-of-code-part-1-of-2%2F&amp;language=de_DE&amp;category=text&amp;title=My+Summer+of+Code+%28Part+1+of+2%29&amp;description=There+are+some+task+one+keeps+pushing+from+one+week+to+another.+Writing+a+blog+article+is+definitely+one+of+these+tasks.+I+planed+to+write+down+my+thoughts+about...&amp;tags=gsoc%2Cmentor+summit%2Ctypo3%2Cblog" type="text/html" />
	</item>
		<item>
		<title>&#8220;Hey! How are you?&#8221; &#8211; Eine Kurzreise nach San Francisco</title>
		<link>http://etobi.de/blog/2011/10/hey-how-are-you-eine-kurzreise-nach-san-francisco/</link>
		<comments>http://etobi.de/blog/2011/10/hey-how-are-you-eine-kurzreise-nach-san-francisco/#comments</comments>
		<pubDate>Sat, 22 Oct 2011 07:13:22 +0000</pubDate>
		<dc:creator>etobi</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[privat]]></category>

		<guid isPermaLink="false">http://etobi.de/blog/?p=40</guid>
		<description><![CDATA[Es ist Freitag, kurz nach 23:00. GTM-8. San Francisco. Genauer: Sunnyvale im SiliconValley. Zuhause müsste es jetzt also so gegen 8:00 morgens sein. Seit ein paar Tagen bin ich in San Francisco. Das erste mal auf der anderen Seite vom &#8230; <a class="small" href="http://etobi.de/blog/2011/10/hey-how-are-you-eine-kurzreise-nach-san-francisco/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Es ist Freitag, kurz nach 23:00. GTM-8. San Francisco. Genauer: Sunnyvale im SiliconValley. Zuhause müsste es jetzt also so gegen 8:00 morgens sein.</p>

<p>Seit ein paar Tagen bin ich in San Francisco. Das erste mal auf der anderen Seite vom "großen Teich". Der Flug war sehr lang und anstrengend, wobei die Reise in einem A380 ehrlich schon sehr angenehm ist.</p>


<a href='http://etobi.de/blog/2011/10/hey-how-are-you-eine-kurzreise-nach-san-francisco/img_0297/' title='IMG_0297'><img width="150" height="150" src="http://etobi.de/blog/wp-content/uploads/2011/10/IMG_0297-150x150.jpg" class="attachment-thumbnail" alt="IMG_0297" title="IMG_0297" /></a>
<a href='http://etobi.de/blog/2011/10/hey-how-are-you-eine-kurzreise-nach-san-francisco/img_0342/' title='IMG_0342'><img width="150" height="150" src="http://etobi.de/blog/wp-content/uploads/2011/10/IMG_0342-150x150.jpg" class="attachment-thumbnail" alt="IMG_0342" title="IMG_0342" /></a>
<a href='http://etobi.de/blog/2011/10/hey-how-are-you-eine-kurzreise-nach-san-francisco/img_0347/' title='IMG_0347'><img width="150" height="150" src="http://etobi.de/blog/wp-content/uploads/2011/10/IMG_0347-150x150.jpg" class="attachment-thumbnail" alt="IMG_0347" title="IMG_0347" /></a>
<a href='http://etobi.de/blog/2011/10/hey-how-are-you-eine-kurzreise-nach-san-francisco/img_5155/' title='IMG_5155'><img width="150" height="150" src="http://etobi.de/blog/wp-content/uploads/2011/10/IMG_5155-150x150.jpg" class="attachment-thumbnail" alt="IMG_5155" title="IMG_5155" /></a>
<a href='http://etobi.de/blog/2011/10/hey-how-are-you-eine-kurzreise-nach-san-francisco/img_5215/' title='IMG_5215'><img width="150" height="150" src="http://etobi.de/blog/wp-content/uploads/2011/10/IMG_5215-150x150.jpg" class="attachment-thumbnail" alt="IMG_5215" title="IMG_5215" /></a>
<a href='http://etobi.de/blog/2011/10/hey-how-are-you-eine-kurzreise-nach-san-francisco/img_5336/' title='IMG_5336'><img width="150" height="150" src="http://etobi.de/blog/wp-content/uploads/2011/10/IMG_5336-150x150.jpg" class="attachment-thumbnail" alt="IMG_5336" title="IMG_5336" /></a>
<a href='http://etobi.de/blog/2011/10/hey-how-are-you-eine-kurzreise-nach-san-francisco/img_5348/' title='IMG_5348'><img width="150" height="150" src="http://etobi.de/blog/wp-content/uploads/2011/10/IMG_5348-150x150.jpg" class="attachment-thumbnail" alt="IMG_5348" title="IMG_5348" /></a>
<a href='http://etobi.de/blog/2011/10/hey-how-are-you-eine-kurzreise-nach-san-francisco/img_5357/' title='IMG_5357'><img width="150" height="150" src="http://etobi.de/blog/wp-content/uploads/2011/10/IMG_5357-150x150.jpg" class="attachment-thumbnail" alt="IMG_5357" title="IMG_5357" /></a>


<p>Kaum in SFO angekommen habe ich es schon direkt bei der Autovermietung das erste mal gehört: der Satz, der mir in den nächsten Tage noch öfter begegnen soll. "Hey! How are you?", als ob der Gegenüber einen schon länger kennt und mich jetzt - nach langer Zeit - endlich mal wieder sieht und deshalb ernsthaft daran interessiert ist, wie es mir so geht. Oder wie mein Tag bisher so war. Ich bin mir noch nicht ganz sicher, wie und ob man auf diese "Frage" reagiert. Ein "Fine. Thanks." tut's bisher ganz gut. Überall liegt man sehr viel Wert auf Freundlichkeit und guten Service. Grundsätzlich bekommt man - ohne danach fragen zu müssen - alles so dargeboten/genau erklärt, dass keine Fragen mehr offen bleiben. Das war z.B. beim Mietwagen, im Supermarkt, im Hostel im Diner und beim Fahrradverleih so.</p>

<p>Gestern habe ich mir ein Fahrrad geliehen, bin über die Golden Gate Bridge nach Sausalitos geradelt, mit der Fähre wieder zurück und dann Kreuz und Quer durch SF gefahren. Das kann ich wirklich empfehlen. SF hat viele schöne Ecken, die man sehr gut mit dem Rad erreichen und abklappern kann. Was ich NICHT empfehlen kann, zu versuchen die Hügel mit dem Rad zu überwinden. Dass an einigen Straßen die Autos 90° zur Fahrrichtung parken müssen oder keine normale Straßenbahn, sondern einer der berühmten Cablecars fahren, hat schon einen bestimmten Grund. Selbst das bergauf schieben ist sehr anstrengend. Nichtsdestotrotz eine gute Erfahrung. Bei meiner Tour durch SF habe ich die Büros von Dropbox und Github gesucht und gefunden. Übrigens nicht sehr spektakulär. Es fehlt in SF noch ein Nerd-Souvenier-Shop, wo man T-Shirts und all die Merchandise-Artikel der ansässigen Firmen kaufen kann.</p>

<p><strong>Aber warum bin ich überhaupt in SF? </strong>Google unterstützt jedes Jahr Open-Source-Projekte, wie z.B. TYPO3, und Studenten die sich in diesen engagieren möchten. Jeder Student wird dabei von einem Mentor der Projekt Organisation begleitet. Dieser "management" ein Projekt, dass der Student im Laufe des Sommers umsetzt. "Google Summer Of Code" heißt das dann.</p>

<p>Am Ende des Sommers werden von jeder teilnehmenden Organisation 1-2 Mentoren zum GooglePlex nach MountainView eingeladen, damit sich dort alle miteinander auszutauschen können. Und in diesem Jahr bin ich der glückliche, der als "Delegate" zu diesem "Mentor summit" geschickt wurde.</p>

<p>Also hab ich heute das (sehr einfache) Hostel, in dem ich die letzten zwei Nächte verbracht habe, verlassen und bin in den Süden gefahren. Der Besuch einiger bekannter Adressen durfte natürlich nicht fehlen. Heute standen u.a. die "Standfort University" und Apple in Cupertino und "Fry's" auf dem Plan. T-Shirts: √. Eingecheckt in das "Domain"-Hotel für die nächsten zwei Nächte, erlebte ich das komplette Gegenteil zum Hostel. Alles sehr großzügig bemessen. Ich kann sogar die Härte der Matratze mit einer Fernbedienung verstellen. Selbstverständlich für linke und rechte Seite des Bettes getrennt.</p>

<p>Heute Abend gab es am Pool ein kleines Warmup und Abendessen. Morgen um 8:30 gibt es dann auf dem GoogleCampus Frühstück und anschließend die eigentliche Veranstaltung, den "Google Summer Of Code Mentor Summit". Ich bin mal gespannt, werde berichten.</p>
 <p><a href="http://etobi.de/blog/?flattrss_redirect&amp;id=40&amp;md5=0fca0b863fff70a16b42362db907e366" title="Flattr" target="_blank"><img src="http://etobi.de/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://etobi.de/blog/2011/10/hey-how-are-you-eine-kurzreise-nach-san-francisco/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=etobi&amp;popout=1&amp;url=http%3A%2F%2Fetobi.de%2Fblog%2F2011%2F10%2Fhey-how-are-you-eine-kurzreise-nach-san-francisco%2F&amp;language=de_DE&amp;category=text&amp;title=%26%238220%3BHey%21+How+are+you%3F%26%238221%3B+%26%238211%3B+Eine+Kurzreise+nach+San+Francisco&amp;description=Es+ist+Freitag%2C+kurz+nach+23%3A00.+GTM-8.+San+Francisco.+Genauer%3A+Sunnyvale+im+SiliconValley.+Zuhause+m%C3%BCsste+es+jetzt+also+so+gegen+8%3A00+morgens+sein.+Seit+ein+paar+Tagen+bin+ich+in...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Multi Property Magic Finder</title>
		<link>http://etobi.de/blog/2011/10/multi-property-magic-finder/</link>
		<comments>http://etobi.de/blog/2011/10/multi-property-magic-finder/#comments</comments>
		<pubDate>Wed, 12 Oct 2011 06:42:24 +0000</pubDate>
		<dc:creator>etobi</dc:creator>
				<category><![CDATA[TYPO3]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[extbase]]></category>
		<category><![CDATA[finder]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[persistence]]></category>
		<category><![CDATA[repository]]></category>
		<category><![CDATA[typo3]]></category>

		<guid isPermaLink="false">http://etobi.de/blog/?p=12</guid>
		<description><![CDATA[If you ever developed an extbase extension you might have used the TxExtbasePersistenceRepository (or a subclass of it) to get your domain objects. If you implement an own repository for your domain models, you will usually extend TxExtbasePersistenceRepository and implement &#8230; <a class="small" href="http://etobi.de/blog/2011/10/multi-property-magic-finder/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>If you ever developed an extbase extension you might have used the <code>Tx<em>Extbase</em>Persistence<em>Repository</code> (or a subclass of it) to get your domain objects. If you implement an own repository for your domain models, you will usually extend <code>Tx</em>Extbase<em>Persistence</em>Repository</code> and implement some special finder methods.</p>

<p>Today i thought it would be cool to have an even more magic magic finder. Wouldn't it be great to match multiple properties in one finder? What about getting all "red" objects in size "XL"?</p>

<p><span id="more-12"></span></p>

<p><code>Tx<em>Extbase</em>Persistence_Repository</code> already provides some magic finder. Without any additional code, you can find all objects matching a property on a given value. E.g. if you have a model with a string property named <code>color</code>, you can easily find all objects by calling <code>$repository-&gt;findByColor('red')</code>. Even if you didn't explicit implement a <code>findByColor</code> method. It's implemented by a magic method called "__call", which parses the called method name and builds a certain query. However. If you're used to extbase you already know that.</p>

<p>Now back to our "problem", how to match multiple proptery in on finder.</p>

<p>One (obvious) solution would be implementing an explicit <code>findByColorAndSize</code> method in your repository. Creating a QueryObject, add two property constraints linked by <code>logicalAnd</code>, execute, return. As usual.</p>

<p>Another solution is two override the "__call" method by this:


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="co4">/**
 * Dispatches magic methods (findBy[Property]())
 *
 * @param string $methodName The name of the magic method
 * @param string $arguments The arguments of the magic method
 * @throws Tx_Extbase_Persistence_Exception_UnsupportedMethod
 * @return void
 * @api
 */</span>
<span class="kw2">public</span> <span class="kw2">function</span> __call<span class="br0">&#40;</span><span class="re0">$methodName</span><span class="sy0">,</span> <span class="re0">$arguments</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
	<span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$methodName</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">6</span><span class="br0">&#41;</span> <span class="sy0">===</span> <span class="st_h">'findBy'</span>
	  <span class="sy0">&amp;&amp;</span> <span class="kw3">strlen</span><span class="br0">&#40;</span><span class="re0">$methodName</span><span class="br0">&#41;</span> <span class="sy0">&gt;</span> <span class="nu0">7</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
		<span class="re0">$query</span> <span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">createQueryFromConstraintString</span><span class="br0">&#40;</span>
			<span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$methodName</span><span class="sy0">,</span> <span class="nu0">6</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="re0">$arguments</span>
		<span class="br0">&#41;</span><span class="sy0">;</span>
		<span class="kw1">return</span> <span class="re0">$query</span><span class="sy0">-&gt;</span><span class="me1">execute</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
	<span class="br0">&#125;</span> <span class="kw1">elseif</span> <span class="br0">&#40;</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$methodName</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">9</span><span class="br0">&#41;</span> <span class="sy0">===</span> <span class="st_h">'findOneBy'</span>
	  <span class="sy0">&amp;&amp;</span> <span class="kw3">strlen</span><span class="br0">&#40;</span><span class="re0">$methodName</span><span class="br0">&#41;</span> <span class="sy0">&gt;</span> <span class="nu0">10</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
		<span class="re0">$query</span> <span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">createQueryFromConstraintString</span><span class="br0">&#40;</span>
			<span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$methodName</span><span class="sy0">,</span> <span class="nu0">9</span><span class="br0">&#41;</span><span class="sy0">,</span>
			<span class="re0">$arguments</span>
		<span class="br0">&#41;</span><span class="sy0">;</span>
		<span class="re0">$object</span> <span class="sy0">=</span> <span class="re0">$query</span><span class="sy0">-&gt;</span><span class="me1">setLimit</span><span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">execute</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">getFirst</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
		<span class="kw1">return</span> <span class="re0">$object</span><span class="sy0">;</span>
&nbsp;
	<span class="br0">&#125;</span> <span class="kw1">elseif</span> <span class="br0">&#40;</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$methodName</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">7</span><span class="br0">&#41;</span> <span class="sy0">===</span> <span class="st_h">'countBy'</span>
	  <span class="sy0">&amp;&amp;</span> <span class="kw3">strlen</span><span class="br0">&#40;</span><span class="re0">$methodName</span><span class="br0">&#41;</span> <span class="sy0">&gt;</span> <span class="nu0">8</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
		<span class="re0">$query</span> <span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">createQueryFromConstraintString</span><span class="br0">&#40;</span>
			<span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$methodName</span><span class="sy0">,</span> <span class="nu0">7</span><span class="br0">&#41;</span><span class="sy0">,</span>
			<span class="re0">$arguments</span>
		<span class="br0">&#41;</span><span class="sy0">;</span>
		<span class="re0">$result</span> <span class="sy0">=</span> <span class="re0">$query</span><span class="sy0">-&gt;</span><span class="me1">execute</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="kw3">count</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
		<span class="kw1">return</span> <span class="re0">$result</span><span class="sy0">;</span>
	<span class="br0">&#125;</span>
	<span class="kw1">throw</span> <span class="kw2">new</span> Tx_Extbase_Persistence_Exception_UnsupportedMethod<span class="br0">&#40;</span>
		<span class="st_h">'The method &quot;'</span> <span class="sy0">.</span> <span class="re0">$methodName</span> <span class="sy0">.</span> <span class="st_h">'&quot; is not supported by the repository.'</span><span class="sy0">,</span>
		<span class="nu0">1233180480</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="co4">/**
 * @param string $constrainString
 * @param array $arguments
 * @return Tx_Extbase_Persistence_QueryInterface
 */</span>
<span class="kw2">protected</span> <span class="kw2">function</span> createQueryFromConstraintString<span class="br0">&#40;</span><span class="re0">$constraintString</span><span class="sy0">,</span> <span class="re0">$arguments</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
	<span class="re0">$query</span> <span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">createQuery</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
	<span class="re0">$constraints</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
	<span class="re0">$argumentPointer</span> <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
	<span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw3">strstr</span><span class="br0">&#40;</span><span class="re0">$constraintString</span><span class="sy0">,</span> <span class="st_h">'And'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
		<span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="kw3">explode</span><span class="br0">&#40;</span><span class="st_h">'And'</span><span class="sy0">,</span> <span class="re0">$constraintString</span><span class="br0">&#41;</span> <span class="kw1">as</span> <span class="re0">$propertyName</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
			<span class="re0">$propertyName</span> <span class="sy0">=</span> <span class="kw3">strtolower</span><span class="br0">&#40;</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$propertyName</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="sy0">.</span>
				<span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$propertyName</span><span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span>
			<span class="re0">$constraints</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$query</span><span class="sy0">-&gt;</span><span class="me1">equals</span><span class="br0">&#40;</span>
				<span class="re0">$propertyName</span><span class="sy0">,</span>
				<span class="re0">$arguments</span><span class="br0">&#91;</span><span class="re0">$argumentPointer</span><span class="br0">&#93;</span>
			<span class="br0">&#41;</span><span class="sy0">;</span>
			<span class="re0">$argumentPointer</span><span class="sy0">++;</span>
		<span class="br0">&#125;</span>
		<span class="re0">$query</span><span class="sy0">-&gt;</span><span class="me1">matching</span><span class="br0">&#40;</span><span class="re0">$query</span><span class="sy0">-&gt;</span><span class="me1">logicalAnd</span><span class="br0">&#40;</span><span class="re0">$constraints</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
	<span class="br0">&#125;</span> <span class="kw1">elseif</span> <span class="br0">&#40;</span><span class="kw3">strstr</span><span class="br0">&#40;</span><span class="re0">$constraintString</span><span class="sy0">,</span> <span class="st_h">'Or'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
		<span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="kw3">explode</span><span class="br0">&#40;</span><span class="st_h">'Or'</span><span class="sy0">,</span> <span class="re0">$constraintString</span><span class="br0">&#41;</span> <span class="kw1">as</span> <span class="re0">$propertyName</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
			<span class="re0">$propertyName</span> <span class="sy0">=</span> <span class="kw3">strtolower</span><span class="br0">&#40;</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$propertyName</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="sy0">.</span>
				<span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$propertyName</span><span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span>
			<span class="re0">$constraints</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$query</span><span class="sy0">-&gt;</span><span class="me1">equals</span><span class="br0">&#40;</span>
				<span class="re0">$propertyName</span><span class="sy0">,</span>
				<span class="re0">$arguments</span><span class="br0">&#91;</span><span class="re0">$argumentPointer</span><span class="br0">&#93;</span>
			<span class="br0">&#41;</span><span class="sy0">;</span>
			<span class="re0">$argumentPointer</span><span class="sy0">++;</span>
		<span class="br0">&#125;</span>
		<span class="re0">$query</span><span class="sy0">-&gt;</span><span class="me1">matching</span><span class="br0">&#40;</span><span class="re0">$query</span><span class="sy0">-&gt;</span><span class="me1">logicalOr</span><span class="br0">&#40;</span><span class="re0">$constraints</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
	<span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span>
		<span class="re0">$propertyName</span> <span class="sy0">=</span> <span class="kw3">strtolower</span><span class="br0">&#40;</span><span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$constraintString</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="sy0">.</span>
			<span class="kw3">substr</span><span class="br0">&#40;</span><span class="re0">$constraintString</span><span class="sy0">,</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span>
		<span class="re0">$query</span><span class="sy0">-&gt;</span><span class="me1">matching</span><span class="br0">&#40;</span><span class="re0">$query</span><span class="sy0">-&gt;</span><span class="me1">equals</span><span class="br0">&#40;</span><span class="re0">$propertyName</span><span class="sy0">,</span> <span class="re0">$arguments</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
	<span class="br0">&#125;</span>
	<span class="kw1">return</span> <span class="re0">$query</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div></div></div></div></div></div>

</p>

<p>I've cleaned up the <code>__call</code> method a little. The called method name (e.g. <code>findByColorAndSize</code>) is chopped and the second part (<code>ColorAndSize</code>) passed to <code>createQueryFromConstraintString</code>. This parses the string for "And" or "Or", gets all property names an builds a certain query object.</p>

<p>Using this new magic <code>__call</code> method, it's possible to use finder like:


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="php"><pre class="de1"><span class="re0">$repository</span><span class="sy0">-&gt;</span><span class="me1">findByColorAndSize</span><span class="br0">&#40;</span><span class="st_h">'red'</span><span class="sy0">,</span> <span class="st_h">'XL'</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$repository</span><span class="sy0">-&gt;</span><span class="me1">findByColorAndSizeAndPrice</span><span class="br0">&#40;</span><span class="st_h">'red'</span><span class="sy0">,</span> <span class="st_h">'XL'</span><span class="sy0">,</span> <span class="nu19">10.99</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$repository</span><span class="sy0">-&gt;</span><span class="me1">findByFooOrBar</span><span class="br0">&#40;</span><span class="st_h">'foo'</span><span class="sy0">,</span> <span class="st_h">'bar'</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$repository</span><span class="sy0">-&gt;</span><span class="me1">findOneByFooOrBar</span><span class="br0">&#40;</span><span class="st_h">'foo'</span><span class="sy0">,</span> <span class="st_h">'bar'</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="re0">$repository</span><span class="sy0">-&gt;</span><span class="me1">countByFooOrBar</span><span class="br0">&#40;</span><span class="st_h">'foo'</span><span class="sy0">,</span> <span class="st_h">'bar'</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="co1">// ...</span></pre></div></div></div></div></div></div></div>

</p>

<p>I think you get the point.</p>
 <p><a href="http://etobi.de/blog/?flattrss_redirect&amp;id=12&amp;md5=8e3e0393d97da84e21fefc6e1d268dfb" title="Flattr" target="_blank"><img src="http://etobi.de/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://etobi.de/blog/2011/10/multi-property-magic-finder/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=etobi&amp;popout=1&amp;url=http%3A%2F%2Fetobi.de%2Fblog%2F2011%2F10%2Fmulti-property-magic-finder%2F&amp;language=de_DE&amp;category=text&amp;title=Multi+Property+Magic+Finder&amp;description=If+you+ever+developed+an+extbase+extension+you+might+have+used+the+TxExtbasePersistenceRepository+%28or+a+subclass+of+it%29+to+get+your+domain+objects.+If+you+implement+an+own+repository+for...&amp;tags=code%2Cextbase%2Cfinder%2Chowto%2Cpersistence%2Crepository%2Ctypo3%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Next up: Setup a website and blog on a regular basis</title>
		<link>http://etobi.de/blog/2011/10/next-up-setup-a-website-and-blog-on-a-regular-basis/</link>
		<comments>http://etobi.de/blog/2011/10/next-up-setup-a-website-and-blog-on-a-regular-basis/#comments</comments>
		<pubDate>Thu, 06 Oct 2011 20:32:46 +0000</pubDate>
		<dc:creator>etobi</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[etobi]]></category>
		<category><![CDATA[freelancer]]></category>

		<guid isPermaLink="false">http://etobi.de/blog/?p=7</guid>
		<description><![CDATA[Es ist eine ganze Weile her, dass ich irgendwas auf meiner Website gemacht habe. Die letzten Versuche einen Blog zu betreiben sind - wie vermutlich viele andere auch - an zu wenig Zuwendung gescheitert. Aber: Neuer "Job" - Neue Motivation - &#8230; <a class="small" href="http://etobi.de/blog/2011/10/next-up-setup-a-website-and-blog-on-a-regular-basis/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Es ist eine ganze Weile her, dass ich <em>irgendwas</em> auf meiner Website gemacht habe. Die letzten Versuche einen Blog zu betreiben sind - wie vermutlich viele andere auch - an zu wenig Zuwendung gescheitert.</p>

<p>Aber: Neuer "Job" - Neue Motivation - Neuer Versuch.</p>

<p>Ich möchte hier ein bisschen Know-how teilen. Und sei es, dass ich für mich selber hier Snippets, Workarounds, Bugfixes, Tipps hier ablege um sie später wiederzufinden ("ich hab doch schonmal...").</p>

<p>&nbsp;</p>
 <p><a href="http://etobi.de/blog/?flattrss_redirect&amp;id=7&amp;md5=d01dc09ee76358d45b1188430a911224" title="Flattr" target="_blank"><img src="http://etobi.de/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://etobi.de/blog/2011/10/next-up-setup-a-website-and-blog-on-a-regular-basis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=etobi&amp;popout=1&amp;url=http%3A%2F%2Fetobi.de%2Fblog%2F2011%2F10%2Fnext-up-setup-a-website-and-blog-on-a-regular-basis%2F&amp;language=de_DE&amp;category=text&amp;title=Next+up%3A+Setup+a+website+and+blog+on+a+regular+basis&amp;description=Es+ist+eine+ganze+Weile+her%2C+dass+ich+irgendwas%C2%A0auf+meiner+Website+gemacht+habe.+Die+letzten+Versuche+einen+Blog+zu+betreiben+sind+-+wie+vermutlich+viele+andere+auch+-+an+zu...&amp;tags=etobi%2Cfreelancer%2Cblog" type="text/html" />
	</item>
	</channel>
</rss>

