<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>qooxdoo News</title>
	
	<link>http://news.qooxdoo.org</link>
	<description>News from the qooxdoo open-source JS framework</description>
	<lastBuildDate>Fri, 17 May 2013 16:30:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/qooxdoo/news/content" /><feedburner:info uri="qooxdoo/news/content" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>qooxdoo/news/content</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fqooxdoo%2Fnews%2Fcontent" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fqooxdoo%2Fnews%2Fcontent" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fqooxdoo%2Fnews%2Fcontent" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><item>
		<title>The week in qooxdoo (2013-05-17)</title>
		<link>http://feedproxy.google.com/~r/qooxdoo/news/content/~3/469xlg0izqg/the-week-in-qooxdoo-2013-05-17</link>
		<comments>http://news.qooxdoo.org/the-week-in-qooxdoo-2013-05-17#comments</comments>
		<pubDate>Fri, 17 May 2013 16:30:21 +0000</pubDate>
		<dc:creator>Andreas Ecker</dc:creator>
				<category><![CDATA[Activity Reports]]></category>

		<guid isPermaLink="false">http://news.qooxdoo.org/?p=9588</guid>
		<description><![CDATA[Welcome to the weekly status update. Merge of diet branch into master A while ago we announced the &#8216;diet&#8217; branch and asked the qooxdoo community to help us test the changes. We received plenty of great feedback including detailed bug &#8230; <a href="http://news.qooxdoo.org/the-week-in-qooxdoo-2013-05-17">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Welcome to the weekly status update.</p>
<h2>Merge of diet branch into master</h2>
<p>A while ago we <a href="/qooxdoo-on-a-diet" target="_blank">announced the &#8216;diet&#8217; branch</a> and asked the qooxdoo community to help us test the changes. We received plenty of great feedback including detailed bug reports and pull requests, so a big thank you to everyone who participated. Since most bugs are ironed out and no show-stopping issues popped up, we&#8217;re going to go ahead as planned and <strong>merge diet into master around the middle of the next week</strong>.</p>
<h2>CSS gradients and border-radius in IE9</h2>
<p>While working on the <a href="/qooxdoo-on-a-diet">diet branch</a>, we found ourselves in need of a new solution for an old problem that affects Internet Explorer 9 if border-radius and a gradient filter background are applied to a DOM element. See the <a href="http://news.qooxdoo.org/combining-css-gradients-and-border-radius-in-ie9">recent blog post</a> for details about a smart solution, that allows for a combination of both features without requiring doubled DOM elements.</p>
<h2>Config File Branching</h2>
<p>In general there is no way of conditional branching in the <a href="http://manual.qooxdoo.org/2.1.x/pages/tool/generator/generator_config.html">configuration DSL</a> of the tool chain. qooxdoo configuration files are JSON-based and have no <em>&#8220;if&#8221;</em> construct of any kind. So there is no way of directly expressing e.g. <em>&#8220;If the value of this macro is true include this list of classes, otherwise include a different list&#8221;</em>. But you can achieve much of the same by using the value of macros in references to other job names. Here is <a href="/branching-in-configuration-files">how to do that</a>.</p>
<h2>Bugfixes</h2>
<p>For a complete list of tasks accomplished during the last working week, use this <a href="http://bugzilla.qooxdoo.org/buglist.cgi?query_format=advanced&amp;resolution=FIXED&amp;chfieldfrom=2013-05-11&amp;chfieldto=2013-05-18&amp;chfield=resolution">bugzilla query</a>.</p>
<p><br/></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=469xlg0izqg:RpEyVsilZTM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=469xlg0izqg:RpEyVsilZTM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=469xlg0izqg:RpEyVsilZTM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=469xlg0izqg:RpEyVsilZTM:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=469xlg0izqg:RpEyVsilZTM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=469xlg0izqg:RpEyVsilZTM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=469xlg0izqg:RpEyVsilZTM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=469xlg0izqg:RpEyVsilZTM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=469xlg0izqg:RpEyVsilZTM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=469xlg0izqg:RpEyVsilZTM:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=469xlg0izqg:RpEyVsilZTM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/qooxdoo/news/content/~4/469xlg0izqg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://news.qooxdoo.org/the-week-in-qooxdoo-2013-05-17/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://news.qooxdoo.org/the-week-in-qooxdoo-2013-05-17</feedburner:origLink></item>
		<item>
		<title>Combining CSS gradients and border-radius in IE9</title>
		<link>http://feedproxy.google.com/~r/qooxdoo/news/content/~3/fYCZyIJSZV4/combining-css-gradients-and-border-radius-in-ie9</link>
		<comments>http://news.qooxdoo.org/combining-css-gradients-and-border-radius-in-ie9#comments</comments>
		<pubDate>Fri, 17 May 2013 07:44:54 +0000</pubDate>
		<dc:creator>Daniel Wagner</dc:creator>
				<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://news.qooxdoo.org/?p=9416</guid>
		<description><![CDATA[While working on the diet branch, we found ourselves in need of a new solution for an old problem that affects Internet Explorer 9 if border-radius and a gradient filter background are applied to a DOM element. Consider a div &#8230; <a href="http://news.qooxdoo.org/combining-css-gradients-and-border-radius-in-ie9">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>While working on the <a href="http://news.qooxdoo.org/qooxdoo-on-a-diet" target="_blank">diet branch</a>, we found ourselves in need of a new solution for an old problem that affects Internet Explorer 9 if <em>border-radius</em> and a gradient filter background are applied to a DOM element.</p>
<p>Consider a div element with rounded corners:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#test</span> <span style="color: #00AA00;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">200px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">100px</span><span style="color: #00AA00;">;</span>
  border-radius<span style="color: #00AA00;">:</span> <span style="color: #933;">20px</span><span style="color: #00AA00;">;</span>
  <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #933;">5px</span> <span style="color: #993333;">solid</span> <span style="color: #993333;">red</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>To give it a color gradient background, we add a CSS <em>linear-gradient</em> which is supported in most modern browsers (Firefox, Chrome, Opera, IE10):</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">background-image</span><span style="color: #00AA00;">:</span> linear-gradient<span style="color: #00AA00;">&#40;</span><span style="color: #cc00cc;">#0000FF</span> <span style="color: #933;">0%</span><span style="color: #00AA00;">,</span> <span style="color: #cc00cc;">#FFFF00</span> <span style="color: #933;">100%</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span></pre></div></div>

<div id="attachment_9571" class="wp-caption aligncenter" style="width: 135px"><a href="http://news.qooxdoo.org/wp-content/uploads/2013/05/gradient_css.png"><img class="size-full wp-image-9571" title="gradient_css" src="http://news.qooxdoo.org/wp-content/uploads/2013/05/gradient_css.png" alt="Element with CSS linear-gradient" width="125" height="75" /></a><p class="wp-caption-text">Element with CSS linear-gradient (Chrome)</p></div>
<p>Internet Explorer 9 doesn&#8217;t support <em>linear-gradient</em>, but it features the proprietary Filters and Transitions API which we can use to achieve mostly the same result:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">filter<span style="color: #00AA00;">:</span> progid<span style="color: #3333ff;">:DXImageTransform</span><span style="color: #6666ff;">.Microsoft</span>.Gradient<span style="color: #00AA00;">&#40;</span>GradientType<span style="color: #00AA00;">=</span><span style="color: #cc66cc;">0</span><span style="color: #00AA00;">,</span> StartColorStr<span style="color: #00AA00;">=</span><span style="color: #ff0000;">'#FF0000FF'</span><span style="color: #00AA00;">,</span> EndColorStr<span style="color: #00AA00;">=</span><span style="color: #ff0000;">'#FFFFFF00'</span><span style="color: #00AA00;">;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span></pre></div></div>

<div id="attachment_9573" class="wp-caption aligncenter" style="width: 135px"><a href="http://news.qooxdoo.org/wp-content/uploads/2013/05/gradient_filter.png"><img class="size-full wp-image-9573" title="gradient_filter" src="http://news.qooxdoo.org/wp-content/uploads/2013/05/gradient_filter.png" alt="Element with DXImageTransform gradient filter" width="125" height="75" /></a><p class="wp-caption-text">Element with DXImageTransform gradient filter (IE9)</p></div>
<p>And there&#8217;s the problem: The gradient filter doesn&#8217;t respect the <em>border-radius</em> property so the background overlaps the corners. A common solution for this is to wrap two elements, applying the <em>border-radius</em> to the outer element and the gradient to the inner element. qooxdoo&#8217;s decorators take this approach as well, but for diet our goal was to eliminate the decorator elements entirely and apply all styles directly to the content element, so we had to come up with a new solution.</p>
<p>Fortunately, IE9 supports Canvas and drawing a gradient is pretty simple:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> startColor <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;#0000FF&quot;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> startColorPosition <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> endColor <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;#FFFF00&quot;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> endColorPosition <span style="color: #339933;">=</span> <span style="color: #CC0000;">100</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> width <span style="color: #339933;">=</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> height <span style="color: #339933;">=</span> <span style="color: #CC0000;">200</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> canvas <span style="color: #339933;">=</span> document.<span style="color: #660066;">createElement</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;canvas&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
canvas.<span style="color: #660066;">width</span> <span style="color: #339933;">=</span> width<span style="color: #339933;">;</span>
canvas.<span style="color: #660066;">height</span> <span style="color: #339933;">=</span> height<span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> ctx <span style="color: #339933;">=</span> canvas.<span style="color: #660066;">getContext</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'2d'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> lingrad <span style="color: #339933;">=</span> ctx.<span style="color: #660066;">createLinearGradient</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> height<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
lingrad.<span style="color: #660066;">addColorStop</span><span style="color: #009900;">&#40;</span>startColorPosition <span style="color: #339933;">/</span> <span style="color: #CC0000;">100</span><span style="color: #339933;">,</span> startColor<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
lingrad.<span style="color: #660066;">addColorStop</span><span style="color: #009900;">&#40;</span>endColorPosition <span style="color: #339933;">/</span> <span style="color: #CC0000;">100</span><span style="color: #339933;">,</span> endColor<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
ctx.<span style="color: #660066;">fillStyle</span> <span style="color: #339933;">=</span> lingrad<span style="color: #339933;">;</span>
ctx.<span style="color: #660066;">fillRect</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> width<span style="color: #339933;">,</span> height<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>In qx.desktop&#8217;s theming system the gradient is rendered only once and will then be applied to any widget using the same decorator. Since we don&#8217;t know in advance how tall each widget is going to be, we use a fixed size of 1 x 200 pixels. Finally, we convert the drawing into a data URL and apply it like a regular background image, stretching it to fill out the element:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> el <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;test&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
el.<span style="color: #660066;">style</span><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;background-image&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'url('</span> <span style="color: #339933;">+</span> canvas.<span style="color: #660066;">toDataURL</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">')'</span><span style="color: #339933;">;</span>
el.<span style="color: #660066;">style</span><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;background-size&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;100% 100%&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<div id="attachment_9574" class="wp-caption aligncenter" style="width: 135px"><a href="http://news.qooxdoo.org/wp-content/uploads/2013/05/gradient_canvas.png"><img class="size-full wp-image-9574" title="gradient_canvas" src="http://news.qooxdoo.org/wp-content/uploads/2013/05/gradient_canvas.png" alt="Element with Canvas-generated background image" width="125" height="75" /></a><p class="wp-caption-text">Element with Canvas-generated background image (IE9)</p></div>
<p>And that&#8217;s it, <em>border-radius</em> and background gradient combined without a wrapper element.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=fYCZyIJSZV4:-th4fL7DWsc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=fYCZyIJSZV4:-th4fL7DWsc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=fYCZyIJSZV4:-th4fL7DWsc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=fYCZyIJSZV4:-th4fL7DWsc:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=fYCZyIJSZV4:-th4fL7DWsc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=fYCZyIJSZV4:-th4fL7DWsc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=fYCZyIJSZV4:-th4fL7DWsc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=fYCZyIJSZV4:-th4fL7DWsc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=fYCZyIJSZV4:-th4fL7DWsc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=fYCZyIJSZV4:-th4fL7DWsc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=fYCZyIJSZV4:-th4fL7DWsc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/qooxdoo/news/content/~4/fYCZyIJSZV4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://news.qooxdoo.org/combining-css-gradients-and-border-radius-in-ie9/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://news.qooxdoo.org/combining-css-gradients-and-border-radius-in-ie9</feedburner:origLink></item>
		<item>
		<title>Branching in Configuration Files</title>
		<link>http://feedproxy.google.com/~r/qooxdoo/news/content/~3/HXQfDzEE-6Q/branching-in-configuration-files</link>
		<comments>http://news.qooxdoo.org/branching-in-configuration-files#comments</comments>
		<pubDate>Mon, 13 May 2013 12:25:18 +0000</pubDate>
		<dc:creator>Thomas Herchenröder</dc:creator>
				<category><![CDATA[Feature Highlight]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Tool Chain]]></category>

		<guid isPermaLink="false">http://news.qooxdoo.org/?p=9497</guid>
		<description><![CDATA[In general there is no way of conditional branching in the configuration DSL of the tool chain. qooxdoo configuration files are JSON-based and have no &#8220;if&#8221; construct of any kind. So there is no way of directly expressing e.g. &#8220;If &#8230; <a href="http://news.qooxdoo.org/branching-in-configuration-files">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In general there is no way of conditional branching in the <a href="http://manual.qooxdoo.org/2.1.x/pages/tool/generator/generator_config.html">configuration DSL</a> of the tool chain. qooxdoo configuration files are JSON-based and have no <em>&#8220;if&#8221;</em> construct of any kind. So there is no way of directly expressing e.g. <em>&#8220;If the value of this macro is true include this list of classes, otherwise include a different list&#8221;</em>. But you can achieve much of the same by using the value of macros in references to other job names. Here is how to do that.</p>
<h2>Includer Jobs</h2>
<p>In qooxdoo configurations the general way to inject settings into a job is by using the <a href="http://manual.qooxdoo.org/2.1.x/pages/tool/generator/generator_config_ref.html#extend">extend</a> key. So if you want settings from one job to propagate into another job you make the second job extend the first:</p>
<pre>"jobA" : {
  "environment" : { "foo" : "bar" }
},

"jobB" : {
  "extend" : [ "jobA" ],
  ... // more job settings
}</pre>
<p>So now jobB will get the environment setting from jobA as if you had written them into jobB directly (There is some conflict resolution going on if jobB already has an <em>environment</em> key). This of course makes more sense if you want to have more than one job inherit these settings, like when you substitute &#8220;jobB&#8221; with &#8220;source&#8221; and &#8220;build&#8221;. It&#8217;s a common way in qooxdoo configs to maintain multiply used settings in a single place.</p>
<p>As in this example the job names in the <em>extend</em> key can refer to jobs that do nothing on their own and are just provided to hold some setting to be used in other jobs (often referred to as <em>&#8220;includer jobs&#8221;</em>).</p>
<h2>Using Macros in Job Names</h2>
<p>What&#8217;s also interesting here is that the names in the <em>extend</em> key can contain macros. This allows you to select a job according to the value of some macro.</p>
<pre>"jobA1" : {
  "environment" : { "foo" : "bar" }
},

"jobA2" : {
   "environment" : { "foo" : "xyz" }
},

"jobB" : {
  "extend" : [ "job${JobSuffix}" ]
  ...
}</pre>
<p>By setting the value of the <em>JobSuffix</em> macro to either &#8220;A1&#8243; or &#8220;A2&#8243; you now select which job is being included into the extending job, and by that select the configuration keys and values that come with it.</p>
<p>In this example you could either specify the concrete value of <em>JobSuffix</em> in the global &#8220;let&#8221; section of the configuration file</p>
<pre>"let" : {
  "JobSuffix" : "A1"     // or "A2"
}</pre>
<p>or you could provide it on the command line when invoking the generator:</p>
<pre>generate.py -m JobSuffix:A2 ...</pre>
<h2>Pairs of Includers</h2>
<p>Often you will create pairs of includer jobs like in the above example for the same set of settings, to provide alternative values. To pick up the example from the beginning, to provide two different include lists to a source job you could write:</p>
<pre>"oneInclude" : {
  "=include" : [ "foo.ClassA", "foo.theme.ThemeA" ]
},

"otherInclude" : {
  "=include" : [ "foo.ClassB", "foo.theme.ThemeB" ]

"source" : {
  "extend" : [ "${IncJob}Include" ]
}</pre>
<p>(Don&#8217;t worry about the equal sign in <code>"=include"</code> for the moment). Now you only have to provide the value for the <em>IncJob</em> macro, either <code>"one"</code> or <code>"other"</code>, and your <em>source</em> job will use the corresponding include lists.</p>
<p>This basically is it, you can now construct different jobs by just assigning different values to macros. Mind that this kind of selecting includer jobs will only work with values of macros, and only if those values are strings. This also means you cannot e.g. refer to the value of a specific <em>environment</em> setting. But in many cases you can work the other way round and make the value of an environment setting part of an includer job which is then selected by the value of a macro.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=HXQfDzEE-6Q:22yRUQF6tVw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=HXQfDzEE-6Q:22yRUQF6tVw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=HXQfDzEE-6Q:22yRUQF6tVw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=HXQfDzEE-6Q:22yRUQF6tVw:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=HXQfDzEE-6Q:22yRUQF6tVw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=HXQfDzEE-6Q:22yRUQF6tVw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=HXQfDzEE-6Q:22yRUQF6tVw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=HXQfDzEE-6Q:22yRUQF6tVw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=HXQfDzEE-6Q:22yRUQF6tVw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=HXQfDzEE-6Q:22yRUQF6tVw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=HXQfDzEE-6Q:22yRUQF6tVw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/qooxdoo/news/content/~4/HXQfDzEE-6Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://news.qooxdoo.org/branching-in-configuration-files/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://news.qooxdoo.org/branching-in-configuration-files</feedburner:origLink></item>
		<item>
		<title>The week in qooxdoo (2013-05-10)</title>
		<link>http://feedproxy.google.com/~r/qooxdoo/news/content/~3/OGvkL4kmXno/the-week-in-qooxdoo-2013-05-10</link>
		<comments>http://news.qooxdoo.org/the-week-in-qooxdoo-2013-05-10#comments</comments>
		<pubDate>Mon, 13 May 2013 08:13:54 +0000</pubDate>
		<dc:creator>Andreas Ecker</dc:creator>
				<category><![CDATA[Activity Reports]]></category>

		<guid isPermaLink="false">http://news.qooxdoo.org/?p=9486</guid>
		<description><![CDATA[A summary of a week in review. Lightweight desktop widgets You might have already seen the blog post that qooxdoo is on a diet. This announces a large internal change to the widgets of qx.Desktop. By reducing the number of &#8230; <a href="http://news.qooxdoo.org/the-week-in-qooxdoo-2013-05-10">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A summary of a week in review.</p>
<h2>Lightweight desktop widgets</h2>
<p>You might have already seen the blog post that <a href="/qooxdoo-on-a-diet">qooxdoo is on a diet</a>. This announces a large internal change to the widgets of qx.Desktop. By reducing the number of DOM elements usually from about three down to just one, this leads to a more lightweight widget set. Still most of qooxdoo&#8217;s advanced features could be retained. As the previous implementation was required to bring fully-featured rich user interfaces to some older browsers, support for legacy browsers had to be reduced for the benefit of leveraging features of modern browsers.</p>
<h2>Compile with fast linting</h2>
<p>During compile time, i.e. when creating a runnable application from the library classes, the Generator does a restricted lint checking to detect some of the more fundamental issues. Unknown globals is one of them, and those <a href="http://news.qooxdoo.org/compile-time-globals-checking">checks have significantly been improved</a> recently. @-hints embedded in JSDoc type code comments are now properly supported. These hints allow you to silence warnings about unknown symbols that you know will be available at runtime. The new implementation results in a fast unknown globals check that adds nearly no performance penalty to the existing compile functionality.</p>
<h2>Bugfixes</h2>
<p>For a complete list of tasks accomplished during the last working week, use this <a href="http://bugzilla.qooxdoo.org/buglist.cgi?query_format=advanced&amp;resolution=FIXED&amp;chfieldfrom=2013-05-04&amp;chfieldto=2013-05-11&amp;chfield=resolution">bugzilla query</a>.</p>
<p><br/></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=OGvkL4kmXno:WxwVxSsfq5g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=OGvkL4kmXno:WxwVxSsfq5g:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=OGvkL4kmXno:WxwVxSsfq5g:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=OGvkL4kmXno:WxwVxSsfq5g:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=OGvkL4kmXno:WxwVxSsfq5g:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=OGvkL4kmXno:WxwVxSsfq5g:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=OGvkL4kmXno:WxwVxSsfq5g:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=OGvkL4kmXno:WxwVxSsfq5g:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=OGvkL4kmXno:WxwVxSsfq5g:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=OGvkL4kmXno:WxwVxSsfq5g:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=OGvkL4kmXno:WxwVxSsfq5g:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/qooxdoo/news/content/~4/OGvkL4kmXno" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://news.qooxdoo.org/the-week-in-qooxdoo-2013-05-10/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://news.qooxdoo.org/the-week-in-qooxdoo-2013-05-10</feedburner:origLink></item>
		<item>
		<title>qooxdoo on a diet</title>
		<link>http://feedproxy.google.com/~r/qooxdoo/news/content/~3/EXMPenyS6w8/qooxdoo-on-a-diet</link>
		<comments>http://news.qooxdoo.org/qooxdoo-on-a-diet#comments</comments>
		<pubDate>Wed, 08 May 2013 07:31:28 +0000</pubDate>
		<dc:creator>Daniel Wagner</dc:creator>
				<category><![CDATA[Activity Reports]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://news.qooxdoo.org/?p=9370</guid>
		<description><![CDATA[You may have noticed that we&#8217;ve been busy working on a big topic recently: Improving UI responsiveness by reducing the amount of DOM elements created for each desktop widget. Those additional elements were necessary in older browsers to allow for &#8230; <a href="http://news.qooxdoo.org/qooxdoo-on-a-diet">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>You may have noticed that we&#8217;ve been busy working on a big topic recently: Improving UI responsiveness by <strong>reducing the amount of DOM elements created for each desktop widget</strong>.</p>
<p>Those additional elements were necessary in older browsers to allow for fully-featured rich user interfaces. Now we can take advantage of native features in <em>modern</em> browsers while trying to implement graceful degradation in <em>older</em> browsers and discontinuing support for some <em>legacy</em> browsers.</p>
<p>Every desktop widget now consists of <em>just one</em> content element. Before, each widget consisted of at least two (often even 3-5) DOM elements and their corresponding JavaScript object representations. So the new element or object count is significantly reduced by about 3:1.</p>
<div id="attachment_9425" class="wp-caption aligncenter" style="width: 540px"><img class="size-full wp-image-9425" title="3D DOM View: master vs diet" src="http://news.qooxdoo.org/wp-content/uploads/2013/05/master_vs_diet.png" alt="3D DOM View: master vs. diet" width="530" height="242" /><p class="wp-caption-text">qooxdoo Widget Browser in Firefox&#39; 3D DOM view: master branch (left) vs. diet branch</p></div>
<p>This work happens in a <a href="https://github.com/qooxdoo/qooxdoo/tree/diet" target="_blank">feature branch appropriately named &#8216;diet&#8217;</a>, which we now consider ready for public testing. We&#8217;ve prepared a document explaining the <a href="http://manual.qooxdoo.org/diet/pages/desktop/migration/migration_from_2_x.html" target="_blank">changes in detail</a>. This also includes a migration guide for anyone willing to test the modifications. If you don&#8217;t use your own <em>custom</em> themes, layouts or widgets, it should be particularly easy to build your app against the diet branch. Give us feedback on the usual channels, e.g the <a href="http://lists.sourceforge.net/lists/listinfo/qooxdoo-devel" target="_blank">mailing list</a> or <a href="http://bugs.qooxdoo.org/" target="_blank">Bugzilla</a>.</p>
<p>If you don&#8217;t have the time to migrate your applications, you can still help us out by testing the <a href="http://demo.qooxdoo.org/diet/" target="_blank">framework&#8217;s demo applications</a> in your favorite (modern) browser.</p>
<p>We&#8217;re planning to merge the diet branch into master in about two weeks. Anyone currently using the master branch is strongly encouraged to test their application using diet before this time to prevent any unpleasant surprises.</p>
<p>Since these are major modifications including some API changes, they will be published along with a next major release qooxdoo 3.0 this summer.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=EXMPenyS6w8:R9M2DjAMfCk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=EXMPenyS6w8:R9M2DjAMfCk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=EXMPenyS6w8:R9M2DjAMfCk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=EXMPenyS6w8:R9M2DjAMfCk:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=EXMPenyS6w8:R9M2DjAMfCk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=EXMPenyS6w8:R9M2DjAMfCk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=EXMPenyS6w8:R9M2DjAMfCk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=EXMPenyS6w8:R9M2DjAMfCk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=EXMPenyS6w8:R9M2DjAMfCk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=EXMPenyS6w8:R9M2DjAMfCk:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=EXMPenyS6w8:R9M2DjAMfCk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/qooxdoo/news/content/~4/EXMPenyS6w8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://news.qooxdoo.org/qooxdoo-on-a-diet/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		<feedburner:origLink>http://news.qooxdoo.org/qooxdoo-on-a-diet</feedburner:origLink></item>
		<item>
		<title>Compile-time Globals Checking</title>
		<link>http://feedproxy.google.com/~r/qooxdoo/news/content/~3/l2zq4kAWkMM/compile-time-globals-checking</link>
		<comments>http://news.qooxdoo.org/compile-time-globals-checking#comments</comments>
		<pubDate>Tue, 07 May 2013 10:41:42 +0000</pubDate>
		<dc:creator>Thomas Herchenröder</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Tool Chain]]></category>

		<guid isPermaLink="false">http://news.qooxdoo.org/?p=9446</guid>
		<description><![CDATA[If you are slightly familiar with qooxdoo&#8217;s tool chain you probably came across the lint job that scrutinizes your code for known pitfalls. One of the major checks lint is doing is to find unknown global symbols. These are name &#8230; <a href="http://news.qooxdoo.org/compile-time-globals-checking">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>If you are slightly familiar with qooxdoo&#8217;s tool chain you probably came across the <a href="http://manual.qooxdoo.org/2.1.x/pages/tool/source_code_validation.html">lint</a> job that scrutinizes your code for known pitfalls. One of the major checks lint is doing is to find unknown global symbols. These are name references in your code that are neither known built-in classes, objects or functions (like <code>Date</code>, <code>RegExp</code>, <code>arguments</code> or <code>isNaN</code>), nor qooxdoo-style classes found in any of the involved libraries. These unknown globals can potentially break your code at runtime if you don&#8217;t take any measure outside the qooxdoo application to provide them, like including another script that contains their definitions in the index.html.</p>
<p>During compile time, i.e. when creating a runnable application from the library classes, the Generator does a restricted lint checking to detect some of the more fundamental issues. Unknown globals is one of them, and necessarily so as the Generator uses unresolved globals to add classes to the application build (so called &#8220;class list/dependency exploration&#8221;). When the new lint module was introduced all this checking was offloaded onto it with a suitable configuration, which worked fine functionally but was considered too slow performance-wise.</p>
<p>With recent master this has been amended. Unknown globals-checking is again done during dependency exploration to take advantage of the already existing logic. This was much faster but a major issue with the old implementation was the lack of support for <a href="http://manual.qooxdoo.org/2.1.x/pages/development/api_jsdoc_ref.html#ignore">@-hints</a> embedded in JSDoc type code comments. These hints allow you to silence warnings about unknown symbols that you know will be available at runtime, and to guide further dependency exploration.</p>
<p>In order to add @-hint support and make it fast a new approach was taken. With every syntax tree of a class an a<em>djacent tree of hint nodes</em> is now calculated, derived from the corresponding JSDoc comments. Later when checking unresolved symbols this hint tree can be traversed and inspected very quickly, in order to decide whether an unknown symbols should be pursued, the corresponding class be added to the build, warned about or left alone.</p>
<p>The result is a fast unknown globals check that adds nearly no performance penalty to the existing compile functionality.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=l2zq4kAWkMM:Eraab5dWeG0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=l2zq4kAWkMM:Eraab5dWeG0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=l2zq4kAWkMM:Eraab5dWeG0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=l2zq4kAWkMM:Eraab5dWeG0:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=l2zq4kAWkMM:Eraab5dWeG0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=l2zq4kAWkMM:Eraab5dWeG0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=l2zq4kAWkMM:Eraab5dWeG0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=l2zq4kAWkMM:Eraab5dWeG0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=l2zq4kAWkMM:Eraab5dWeG0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=l2zq4kAWkMM:Eraab5dWeG0:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=l2zq4kAWkMM:Eraab5dWeG0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/qooxdoo/news/content/~4/l2zq4kAWkMM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://news.qooxdoo.org/compile-time-globals-checking/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://news.qooxdoo.org/compile-time-globals-checking</feedburner:origLink></item>
		<item>
		<title>The week in qooxdoo (2013-05-03)</title>
		<link>http://feedproxy.google.com/~r/qooxdoo/news/content/~3/OPtOYKuRQ18/the-week-in-qooxdoo-2013-05-03</link>
		<comments>http://news.qooxdoo.org/the-week-in-qooxdoo-2013-05-03#comments</comments>
		<pubDate>Fri, 03 May 2013 14:40:31 +0000</pubDate>
		<dc:creator>Andreas Ecker</dc:creator>
				<category><![CDATA[Activity Reports]]></category>

		<guid isPermaLink="false">http://news.qooxdoo.org/?p=9433</guid>
		<description><![CDATA[Welcome. Deprecated code removed Following our established development and release process we have now &#8211; being in-between releases &#8211; removed all deprecated code in master. Before running your projects with the latest development snapshots, make sure you no longer encounter &#8230; <a href="http://news.qooxdoo.org/the-week-in-qooxdoo-2013-05-03">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Welcome.</p>
<h2>Deprecated code removed</h2>
<p>Following our established development and <a href="http://qooxdoo.org/project/releases">release process</a> we have now &#8211; being in-between releases &#8211; <a href="http://bugzilla.qooxdoo.org/show_bug.cgi?id=6865">removed</a> all deprecated code in <a href="https://github.com/qooxdoo/qooxdoo/tree/master">master</a>.<br />
Before running your projects with the latest development snapshots, make sure you no longer encounter deprecation warnings. Such development hints were added with the previous official releases. Check your browser&#8217;s console and get rid of the deprecated code for a clean, up-to-date code base.</p>
<h2>Bugfixes</h2>
<p>For a complete list of tasks accomplished during the last working week, use this <a href="http://bugzilla.qooxdoo.org/buglist.cgi?query_format=advanced&amp;resolution=FIXED&amp;chfieldfrom=2013-04-27&amp;chfieldto=2013-05-04&amp;chfield=resolution">bugzilla query</a>.</p>
<p>Stay tuned for some exciting announcement next week &#8230;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=OPtOYKuRQ18:4j_72cOytaw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=OPtOYKuRQ18:4j_72cOytaw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=OPtOYKuRQ18:4j_72cOytaw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=OPtOYKuRQ18:4j_72cOytaw:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=OPtOYKuRQ18:4j_72cOytaw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=OPtOYKuRQ18:4j_72cOytaw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=OPtOYKuRQ18:4j_72cOytaw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=OPtOYKuRQ18:4j_72cOytaw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=OPtOYKuRQ18:4j_72cOytaw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=OPtOYKuRQ18:4j_72cOytaw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=OPtOYKuRQ18:4j_72cOytaw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/qooxdoo/news/content/~4/OPtOYKuRQ18" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://news.qooxdoo.org/the-week-in-qooxdoo-2013-05-03/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://news.qooxdoo.org/the-week-in-qooxdoo-2013-05-03</feedburner:origLink></item>
		<item>
		<title>The week in qooxdoo (2013-04-26)</title>
		<link>http://feedproxy.google.com/~r/qooxdoo/news/content/~3/Eh9lpBuvwM0/the-week-in-qooxdoo-2013-04-26</link>
		<comments>http://news.qooxdoo.org/the-week-in-qooxdoo-2013-04-26#comments</comments>
		<pubDate>Fri, 26 Apr 2013 14:55:39 +0000</pubDate>
		<dc:creator>Andreas Ecker</dc:creator>
				<category><![CDATA[Activity Reports]]></category>

		<guid isPermaLink="false">http://news.qooxdoo.org/?p=9404</guid>
		<description><![CDATA[Welcome to the weekly status update. Your Real-life Example We just called to the community of qooxdoo app creators, as we seek for an updated and extended overview of real-life examples. Let us all know about your specific use of &#8230; <a href="http://news.qooxdoo.org/the-week-in-qooxdoo-2013-04-26">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Welcome to the weekly status update.</p>
<h2>Your Real-life Example</h2>
<p>We just <a href="http://news.qooxdoo.org/your-real-life-example">called to the community</a> of qooxdoo app creators, as we seek for an updated and extended overview of real-life examples. Let us all know about your specific use of the qooxdoo framework, thanks.</p>
<h2>qooxdoo-contrib 2.0</h2>
<p>There has been a lively discussion around the <a href="http://news.qooxdoo.org/qooxdoo-contrib-2-0-the-blueprint">proposed new infrastructure</a> of qooxdoo-contrib. Thanks for your interest and all the input so far. Please feel free to provide more feedback or new aspects, particularly if you happen to join the discussion just now.</p>
<h2>Bugfixes</h2>
<p>For a complete list of tasks accomplished during the last working week, use this <a href="http://bugzilla.qooxdoo.org/buglist.cgi?query_format=advanced&amp;resolution=FIXED&amp;chfieldfrom=2013-04-20&amp;chfieldto=2013-04-27&amp;chfield=resolution">bugzilla query</a>.</p>
<p>Bye.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=Eh9lpBuvwM0:k1wt3l849-E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=Eh9lpBuvwM0:k1wt3l849-E:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=Eh9lpBuvwM0:k1wt3l849-E:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=Eh9lpBuvwM0:k1wt3l849-E:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=Eh9lpBuvwM0:k1wt3l849-E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=Eh9lpBuvwM0:k1wt3l849-E:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=Eh9lpBuvwM0:k1wt3l849-E:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=Eh9lpBuvwM0:k1wt3l849-E:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=Eh9lpBuvwM0:k1wt3l849-E:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=Eh9lpBuvwM0:k1wt3l849-E:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=Eh9lpBuvwM0:k1wt3l849-E:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/qooxdoo/news/content/~4/Eh9lpBuvwM0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://news.qooxdoo.org/the-week-in-qooxdoo-2013-04-26/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://news.qooxdoo.org/the-week-in-qooxdoo-2013-04-26</feedburner:origLink></item>
		<item>
		<title>Your Real-life Example</title>
		<link>http://feedproxy.google.com/~r/qooxdoo/news/content/~3/lM5NqQhWmxg/your-real-life-example</link>
		<comments>http://news.qooxdoo.org/your-real-life-example#comments</comments>
		<pubDate>Fri, 26 Apr 2013 14:31:23 +0000</pubDate>
		<dc:creator>Andreas Ecker</dc:creator>
				<category><![CDATA[Contrib]]></category>

		<guid isPermaLink="false">http://news.qooxdoo.org/?p=9350</guid>
		<description><![CDATA[Talking about real-life examples and taking into account a recent discussion on the mailing list, this is a call to creators of applications with qooxdoo. As an open source project &#8211; free but with enterprise-grade aspiration &#8211; we seek for &#8230; <a href="http://news.qooxdoo.org/your-real-life-example">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://news.qooxdoo.org/the-week-in-qooxdoo-2013-04-19">Talking about</a> real-life examples and taking into account a recent discussion on the mailing list, this is a call to creators of applications with qooxdoo.</p>
<p>As an open source project &#8211; free but with enterprise-grade aspiration &#8211; we seek for an updated and extended overview of <a href="http://qooxdoo.org/community/real_life_examples">real-life examples</a>, apps that you develop and release &#8220;into the wild&#8221;. </p>
<p>Unlike commercially driven projects qooxdoo puts less stress on marketing, but more on advancing and shipping state-of-the-art technologies for you and us to create modern applications. It aims to support a professional, sustainable development and deployment of apps for a wide range of platforms. </p>
<p>These aspects were probably relevant when you chose qooxdoo, and hopefully it is that what you found when you used it in projects. If this is the case then <a href="mailto:contribute-AT-qooxdoo-DOT-org">let us and others know</a> about your specific use of the qooxdoo framework. Sometimes that would be publicly available internet applications; sometimes proprietary solutions only available within your intranet; sometimes even open-source solutions such as frameworks built on-top of qooxdoo. </p>
<p>Even if you think you cannot disclose much about an internal enterprise solution or product, please reconsider as this is valuable input for an open source project like qooxdoo. To be frank, we ourselves could do better here. Thus we will also promote real-life examples that emerge within our vicinity.</p>
<p>In any case, we&#8217;d be glad to gather your use cases and share them among the members of the qooxdoo community and potential new users. You are welcome to use either of the two existing input channels: you may add your app to the real-life examples page yourself (as this belongs to the wiki-based parts of the homepage, you simply need to register if you haven&#8217;t already). Alternatively, we&#8217;d also be fine to receive <a href="mailto:contribute-AT-qooxdoo-DOT-org">your input by email</a>. Make sure to supply 1-2 paragraphs describing your app in English, links to your app/company if available, and preferably a screenshot. We will copy edit your input, and get back to you for a quick sync if necessary.</p>
<p>Thanks.<br />
<br/></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=lM5NqQhWmxg:21_PmjKY9qw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=lM5NqQhWmxg:21_PmjKY9qw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=lM5NqQhWmxg:21_PmjKY9qw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=lM5NqQhWmxg:21_PmjKY9qw:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=lM5NqQhWmxg:21_PmjKY9qw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=lM5NqQhWmxg:21_PmjKY9qw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=lM5NqQhWmxg:21_PmjKY9qw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=lM5NqQhWmxg:21_PmjKY9qw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=lM5NqQhWmxg:21_PmjKY9qw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=lM5NqQhWmxg:21_PmjKY9qw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=lM5NqQhWmxg:21_PmjKY9qw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/qooxdoo/news/content/~4/lM5NqQhWmxg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://news.qooxdoo.org/your-real-life-example/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://news.qooxdoo.org/your-real-life-example</feedburner:origLink></item>
		<item>
		<title>qooxdoo-contrib 2.0 – The Blueprint</title>
		<link>http://feedproxy.google.com/~r/qooxdoo/news/content/~3/z22NYzDWe8k/qooxdoo-contrib-2-0-the-blueprint</link>
		<comments>http://news.qooxdoo.org/qooxdoo-contrib-2-0-the-blueprint#comments</comments>
		<pubDate>Wed, 24 Apr 2013 09:54:00 +0000</pubDate>
		<dc:creator>Thomas Herchenröder</dc:creator>
				<category><![CDATA[Administrative]]></category>
		<category><![CDATA[Contrib]]></category>
		<category><![CDATA[Survey]]></category>

		<guid isPermaLink="false">http://news.qooxdoo.org/?p=8962</guid>
		<description><![CDATA[Discussing an overhaul of the existing qooxdoo contribution infrastructure has been around for awhile, leaving traces in both the mailing list and our wiki. Beyond all written evidence we have been thinking and tinkering with a new concept on and &#8230; <a href="http://news.qooxdoo.org/qooxdoo-contrib-2-0-the-blueprint">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Discussing an overhaul of the existing <a href="http://qooxdoo.org/contrib">qooxdoo contribution</a> infrastructure has been around for awhile, leaving traces in both the mailing list and our <a href="http://qooxdoo.org/contrib/qooxdoo-contrib2.0">wiki</a>. Beyond all written evidence we have been thinking and tinkering with a new concept on and off for quite some months. This posts sketches a basic outline of the new approach, in order to gather your feedback early on.</p>
<p>The new approach is not like npm or the package handling of Go but somewhere in the middle. It&#8217;s intentionally kept simple, and will mostly work through conventions of the people dealing with it rather than code. Most of this affects maintainers of contributions. <em>Users</em> of contributions will see only little change (affecting their config.json).</p>
<h3>Reprise &#8211; What we wanted to achieve</h3>
<p>The existing system maintains the code for all contributions in a single <a href="http://sourceforge.net/p/qooxdoo-contrib/code/HEAD/tree/">SourceForge SVN repository</a> where they are also looked up and from where they are downloaded. The main goal with the new design is to decouple contributions from a specific store, so contrib authors would be free to develop their contribution on a platform they choose, whichever source control system and hosting provider they prefer (SourceForge, Github, Launchpad, Bitbucket, &#8230;).</p>
<p>Leaving the issue of code maintenance to the hands of the authors, the remaining issues are that of finding and using such distributed contributions. For the finding part we want to establish a qooxdoo-contrib <em>catalog</em>.</p>
<h3> The Catalog &#8211; A Github Repo</h3>
<p>The catalog is just the index of known contributions with a bit of necessary meta information for each. To make maintenance of the catalog simple and straight-forward, we decided to implement it as a Github repository. It will have the same top-level directory structure you might know from the <a href="http://sourceforge.net/p/qooxdoo-contrib/code/HEAD/tree/trunk/qooxdoo-contrib/">Sourceforge qooxdoo-contrib repo</a>, namely</p>
<ul>
<li>the contribution <em>names</em> top-level</li>
<li>beneath each contribution a set of directories with <em>version names</em>, and pot.a general Readme</li>
<li>in each version directory a <em>Manifest.json</em> file that describes this particular version of the contribution</li>
</ul>
<p>The Manifest.json file is exactly the Manifest file you know from qooxdoo libraries, with a few new keys. Contribution maintainers can copy it straight over from their project to the catalog repo. You need to make sure that all necessary fields in it will be filled, particularly the <em>info/download</em> field. A new Generator job, <em>validate-<em>manifest</em></em>, will help you with that.</p>
<p>That means maintaining your contribution in the catalog will require you to fork the catalog repo, make necessary changes and then issue a pull request which we will incorporate. (This obviously also means you will need a Github account to be a contribution maintainer, but we hope this requirement will be trivial).</p>
<h3>Contributions come as Archives</h3>
<p>The important thing here is that the <em>info/download</em> field will point to an <strong>archive</strong> (.zip or .tar.gz) containing the contribution. This puts an extra load on the contrib maintainers as they need to create archives from their contributions. But this is also more efficient and more robust for downloading than spidering Web-hosted files and directories, as is done in the old system (Anyone who tried to spider a directory tree from decorated HTML knows what I&#8217;m talking about). So while you authors are now free to maintain the source code of your contribution wherever you prefer you will need to find a place on the Web where you can place the corresponding archives.</p>
<p>Another new field in the Manifest.json for contributions will be <em>information/checksum</em> which will be a Sha1 checksum over the archive. This will be used by the Generator to both validate the archive after download as well as determine whether a contribution has changed online and needs to be re-downloaded.</p>
<h3>Author&#8217;s Workflow</h3>
<p>So the basic workflow for an author having a new revision of his contribution&#8217;s version is:</p>
<ul>
<li>Create an archive containing the contribution and put it online.</li>
<li>Edit the contribution&#8217;s Manifest.json to contain the download location and a Sha1 checksum over the archive.</li>
<li>Copy this Manifest.json to the appropriate path in the catalog repo.</li>
<li>Send a pull request for the catalog.</li>
</ul>
<p>Once the pull request has been incorporated your new revision is available to contribution users.</p>
<p>For an author choosing Github to host his contribution all this can be quite easily achieved (except for the checksum thing) by maintaining contribution versions as Git branches and exploiting the archive downloads that Github offers. You just use an URL like <code>https://codeload.github.com/&lt;user&gt;/&lt;contrib&gt;/zip/&lt;branch_name&gt;</code> as the Manifest&#8217;s download URL.</p>
<h3> Changes for Contribution Users</h3>
<p>Users of contributions will just have to adapt their <em>library/manifest</em> configuration keys in config.json. For the new system they will use <code>http://</code> URLs as values which point to the contribution and version in the catalog. Here is how that would look like for the popular <em>UploadWidget</em>:</p>
<pre>{
  "libraries" : {
    "library" : [
      {
        "manifest" : "https://raw.github.com/qooxdoo/contrib-catalog/master/UploadWidget/0.2/Manifest.json"
      }
    ]
  }
}</pre>
<p>&nbsp;</p>
<p>That&#8217;s it. It looks a bit technical but will also allow hosting libraries online outside of any catalog, or for alternative catalogs e.g. maintained on Intranets. The traditional <em>contrib://</em> pseudo scheme will continue to work for some time to support contributions living in the old system.</p>
<h3> Outlook</h3>
<p>That&#8217;s the basic system and how to work with it. As said we encourage feedback, especially from contribution authors who will have the most exposure to it. It&#8217;s simple but will hopefully serve the basic needs of authors and users.</p>
<p>It&#8217;s easy to envision enhancements, like a nice, good-looking, searchable, sortable, category-driven Web interface to the catalog. It is also a question whether there should be a dedicated download step for the Generator (like <code>generate.py update-contribs</code>), instead of doing it all in the background and while building an application. But let&#8217;s discuss those when the basic system is in place. For now we just want to do the first step in the right direction.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=z22NYzDWe8k:SiiRH6b1ODI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=z22NYzDWe8k:SiiRH6b1ODI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=z22NYzDWe8k:SiiRH6b1ODI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=z22NYzDWe8k:SiiRH6b1ODI:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=z22NYzDWe8k:SiiRH6b1ODI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=z22NYzDWe8k:SiiRH6b1ODI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=z22NYzDWe8k:SiiRH6b1ODI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=z22NYzDWe8k:SiiRH6b1ODI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=z22NYzDWe8k:SiiRH6b1ODI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=z22NYzDWe8k:SiiRH6b1ODI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=z22NYzDWe8k:SiiRH6b1ODI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/qooxdoo/news/content/~4/z22NYzDWe8k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://news.qooxdoo.org/qooxdoo-contrib-2-0-the-blueprint/feed</wfw:commentRss>
		<slash:comments>18</slash:comments>
		<feedburner:origLink>http://news.qooxdoo.org/qooxdoo-contrib-2-0-the-blueprint</feedburner:origLink></item>
	</channel>
</rss>
