<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2.1" -->
<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/"
	>

<channel>
	<title>eksperimental</title>
	<link>http://eksperimental.net/blog</link>
	<description>development log of art.gnome.org 3</description>
	<pubDate>Wed, 08 Aug 2007 14:08:24 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.1</generator>
	<language>en</language>
			<item>
		<title>Versioning System</title>
		<link>http://eksperimental.net/blog/2007/08/08/versioning-system/</link>
		<comments>http://eksperimental.net/blog/2007/08/08/versioning-system/#comments</comments>
		<pubDate>Wed, 08 Aug 2007 01:21:02 +0000</pubDate>
		<dc:creator>Bruno Santos</dc:creator>
		
		<category><![CDATA[planning]]></category>

		<category><![CDATA[AGO]]></category>

		<category><![CDATA[SOC]]></category>

		<guid isPermaLink="false">http://eksperimental.net/blog/2007/08/08/versioning-system/</guid>
		<description><![CDATA[So this was the subject I&#8217;ve spent a big chunk of my day thinking in!
AGO3 ,like its predecessor(AGO2) , is going to allow variations of themes(or backgrounds). But I want to take a step further and have something more complex (and powerful). 
In AGO2 every time a user submits a update of a theme, only [...]]]></description>
			<content:encoded><![CDATA[<p>So this was the subject I&#8217;ve spent a big chunk of my day thinking in!</p>
<p>AGO3 ,like its predecessor(<a href="http://art.gnome.org">AGO2</a>) , is going to allow variations of themes(or backgrounds). But I want to take a step further and have something more complex (and powerful). </p>
<p>In AGO2 every time a user submits a update of a theme, only one version is kept in the system. So no real history is kept. This is one of the things I want to change. Users will have at their disposal all the versions of a theme since it was released(if the owner doesn&#8217;t remove).</p>
<p>There will also be the possibility to create a branch of a previous theme. However, we haven&#8217;t decided yet how this will work. Will the new branch be defined as a new tree of versioning or stays connected to the current tree? <a href="http://kdyne.net/projekty/drom-new/">Drom</a> suggested to  allow users to branch themes from other users, and if so, what about the licenses? Some may not allow those actions!<br />
As you can see there are some decisions yet to be made.</p>
<h3>Now, how am I thinking in implementing this?</h3>
<p>In paper this can be drawn as a tree of nodes. Which quite different of the representation I have in an DB (flat tables). So I have to find a solution to store hierarchical data in a Database. </p>
<h4>The bad way</h4>
<p>The easier way would be to use an adjacency list model. With this approach I only need to keep the &#8216;parent&#8217; of the current node. Whenever I need to find the &#8217;sons&#8217; of a node a single query to the DB is enough. The disadvantages of this solutions is in having to get all the nodes of the tree. For each node I need to do a query for its &#8217;sons&#8217;. For each single &#8217;son&#8217; I&#8217;ll do a query for their &#8217;sons&#8217; and so on&#8230; This nice recursion is way to heavy in the DB! This definitely isn&#8217;t a solution. At least not a good one!</p>
<h4>The Cool Way</h4>
<p>I&#8217;ll be implementing an <strong style="text-decoration:line-through">Modified Preorder Tree Transversal</strong> <strong>Nested Sets</strong>.<br />
You can find more information on that subject in the nice article on <a href="http://www.sitepoint.com/print/hierarchical-data-database">Storing Hierarchical Data in a Database</a>.<br />
With this method, each node will have two values associated to it, left and right. The way those values are set gives certain properties that allows to only need one DB query to get all the tree nodes in the proper order.<br />
This isn&#8217;t that easy to explain in few words, so if you are interested I recommend you to read the <a href="http://www.sitepoint.com/print/hierarchical-data-database">article</a> I&#8217;ve mentioned</p>
<p>One of those properties is: If you have two nodes, A and B, and B&#8217;s left and right values are between A&#8217;s left and right values, it means that B is somehow descendent of A. Thus, if I want to retrieve all the descendants of a node I only need one query to get all the nodes where the left value is between my node left and right value (something like <code>'Select * from table_name where lft between 1 AND 11'</code>)</p>
<p>I&#8217;m introducing a variation in the method and keeping a field pointing to the &#8216;parent&#8217; node. I will be needing to get the immediate &#8217;sons&#8217; of an artwork, or by other words, it&#8217;s variations. And if I don&#8217;t keep the &#8216;parent&#8217; field, the only way I can get them is by getting the whole tree bellow the &#8216;parent&#8217; node I want, and then process it to retrieve the nodes I really want.</p>
<p>I haven&#8217;t decided yet how I&#8217;m going to manage the deletion of artwork in the versioning system. But the I&#8217;m thinking in keeping the version node flagged as deleted if the corresponding artwork was deleted. Since I pictured a few cases in which I don&#8217;t know how to handle the removal of nodes, this seems to me the best solution for now. Later if I want I can implement a purging method for the flagged nodes. </p>
]]></content:encoded>
			<wfw:commentRss>http://eksperimental.net/blog/2007/08/08/versioning-system/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ago3 Progress</title>
		<link>http://eksperimental.net/blog/2007/08/04/ago3-progress/</link>
		<comments>http://eksperimental.net/blog/2007/08/04/ago3-progress/#comments</comments>
		<pubDate>Fri, 03 Aug 2007 23:23:01 +0000</pubDate>
		<dc:creator>Bruno Santos</dc:creator>
		
		<category><![CDATA[coding]]></category>

		<category><![CDATA[AGO]]></category>

		<category><![CDATA[SOC]]></category>

		<guid isPermaLink="false">http://eksperimental.net/blog/2007/08/04/ago3-progress/</guid>
		<description><![CDATA[For quite awhile I haven&#8217;t post any news about the progress of AGO3, and for that I&#8217;m sorry.
So what have I been doing during the last weeks?
To start let me tell you about a &#8216;under-heavy-development&#8217; progress table I addded to live.gnome so I have a clearer way to let others know what I have done [...]]]></description>
			<content:encoded><![CDATA[<p>For quite awhile I haven&#8217;t post any news about the progress of AGO3, and for that I&#8217;m sorry.</p>
<p>So what have I been doing during the last weeks?</p>
<p>To start let me tell you about a &#8216;under-heavy-development&#8217; progress table I addded to <a href="http://live.gnome.org/GnomeArt/Ago3/Progress">live.gnome</a> so I have a clearer way to let others know what I have done so far and what is missing. Never the less, please remember it is still being built. As the times goes by I will be adding more tasks.</p>
<p>Anyway, returning to the subject. I can consider the moderation process complete. The features it is lacking will be added when the components they depend on are complete.</p>
<p>Moderators can already vote in favor or against a users&#8217; work. If the global rating of that work reaches the imposed limits, it will be automatically moved to the public gallery (in case it was accepted) or back to the draft folder of the user (in case it was rejected). The only part of it missing is letting the user know that his work was accepted/rejected. Easily done when I have an internal message system implemented.</p>
<p>Users allowed to do so can now change others users permissions in the administrative interface and soon enough user edition will be also available.</p>
<p>Next steps will be to complete the submission process. This is a kind of boring task because it has a lot of forms to be handled. Since I&#8217;ve only completed the background submission process and I&#8217;m still missing Theme and Screenshot uploads I better finish this before starting any other part.</p>
<p>Other thing that is bothering me is that I&#8217;m slacking a bit in what concerns the looks. I think I is better to spend some time working in the layout of the whole page and specify a base style-sheet. And with this I mean define all the rules about links, paragraphs, headings, notices, etc.</p>
<p>Well, let me go back to work <img src='http://eksperimental.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://eksperimental.net/blog/2007/08/04/ago3-progress/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Quick Update</title>
		<link>http://eksperimental.net/blog/2007/07/18/quick-update/</link>
		<comments>http://eksperimental.net/blog/2007/07/18/quick-update/#comments</comments>
		<pubDate>Wed, 18 Jul 2007 10:54:00 +0000</pubDate>
		<dc:creator>Bruno Santos</dc:creator>
		
		<category><![CDATA[coding]]></category>

		<category><![CDATA[AGO]]></category>

		<category><![CDATA[SOC]]></category>

		<guid isPermaLink="false">http://eksperimental.net/blog/2007/07/18/quick-update/</guid>
		<description><![CDATA[I think is more than time to give an update on the development of ago!
All the authentication and registration process is up and running. Already coded the moderation model and all the ones related with the voting process. And currently I&#8217;m working in the artwork submission process and all the post-processing needed( create image variations, [...]]]></description>
			<content:encoded><![CDATA[<p>I think is more than time to give an update on the development of ago!</p>
<p>All the authentication and registration process is up and running. Already coded the moderation model and all the ones related with the voting process. And currently I&#8217;m working in the artwork submission process and all the post-processing needed( create image variations, check packages validity, etc). After this is complete I will be able to fully integrate the moderation process in the system.</p>
<p>After friday I won&#8217;t have any more exams to bother with, so hopefully the development rate of AGO will increase hugely!</p>
]]></content:encoded>
			<wfw:commentRss>http://eksperimental.net/blog/2007/07/18/quick-update/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Update 20.06.07</title>
		<link>http://eksperimental.net/blog/2007/06/20/update-200607/</link>
		<comments>http://eksperimental.net/blog/2007/06/20/update-200607/#comments</comments>
		<pubDate>Wed, 20 Jun 2007 08:58:49 +0000</pubDate>
		<dc:creator>Bruno Santos</dc:creator>
		
		<category><![CDATA[coding]]></category>

		<category><![CDATA[AGO]]></category>

		<guid isPermaLink="false">http://eksperimental.net/blog/2007/06/20/update-200607/</guid>
		<description><![CDATA[Hi again!
So the latest update still is related with authentication.
Registration process was finally implemented as well as the use of openID.
In case of users having an openID account they can use it to login in AGO. In case it is their first time, they&#8217;ll be asked to register.
The other users work like in any other [...]]]></description>
			<content:encoded><![CDATA[<p>Hi again!</p>
<p>So the latest update still is related with authentication.<br />
Registration process was finally implemented as well as the use of openID.</p>
<p>In case of users having an openID account they can use it to login in AGO. In case it is their first time, they&#8217;ll be asked to register.<br />
The other users work like in any other system, register an username, login and everything is set to go.</p>
<p>Ok, so current code is lacking some features like password request and account activation, so I&#8217;ll be working on that during the next days.</p>
<p>There are plans to implement internationalization so I&#8217;ll also be looking at in a near feature, before having hundred of messages lines needing to be manually changed.<br />
Btw, I&#8217;m thinking on using <a href="http://pt2.php.net/gettext">php gettext</a>. If you have any better idea, please let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://eksperimental.net/blog/2007/06/20/update-200607/feed/</wfw:commentRss>
		</item>
		<item>
		<title>First lines of code</title>
		<link>http://eksperimental.net/blog/2007/06/08/first-lines-of-code/</link>
		<comments>http://eksperimental.net/blog/2007/06/08/first-lines-of-code/#comments</comments>
		<pubDate>Fri, 08 Jun 2007 14:06:23 +0000</pubDate>
		<dc:creator>Bruno Santos</dc:creator>
		
		<category><![CDATA[coding]]></category>

		<category><![CDATA[AGO]]></category>

		<category><![CDATA[SOC]]></category>

		<guid isPermaLink="false">http://eksperimental.net/blog/2007/06/08/first-lines-of-code/</guid>
		<description><![CDATA[So I missed SOC kick off by a week and a half, but now (free from university classes) I&#8217;m starting to get back on tracks. Yesterday I&#8217;ve committed my first few lines of code(about 140 to be more accurate) to AGO repository.  
So what have I done so far?
Well, I started coding an Authentication [...]]]></description>
			<content:encoded><![CDATA[<p>So I missed SOC kick off by a week and a half, but now (free from university classes) I&#8217;m starting to get back on tracks. Yesterday I&#8217;ve committed my first few lines of code(about 140 to be more accurate) to AGO repository. <img src='http://eksperimental.net/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>So what have I done so far?<br />
Well, I started coding an Authentication library. As I mentioned in <a href="http://eksperimental.net/soc/">my proposal</a>, I&#8217;ve implemented some basic ACL.<br />
It isn&#8217;t much, I know, but more is to come in next few days!</p>
]]></content:encoded>
			<wfw:commentRss>http://eksperimental.net/blog/2007/06/08/first-lines-of-code/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Moderation</title>
		<link>http://eksperimental.net/blog/2007/04/29/moderation/</link>
		<comments>http://eksperimental.net/blog/2007/04/29/moderation/#comments</comments>
		<pubDate>Sat, 28 Apr 2007 23:20:19 +0000</pubDate>
		<dc:creator>Bruno Santos</dc:creator>
		
		<category><![CDATA[planning]]></category>

		<category><![CDATA[AGO]]></category>

		<category><![CDATA[SOC]]></category>

		<guid isPermaLink="false">http://eksperimental.net/blog/2007/04/29/moderation/</guid>
		<description><![CDATA[So this has been my major concern in the last few days.
One of AGOv3 objectives is to be an hight quality artwork repository for GNOME desktop. Thus, there is the need for moderation. Since AGO&#8217;s development community is short on staff we need to find a efficient way to have submissions checked out. On the [...]]]></description>
			<content:encoded><![CDATA[<p>So this has been my major concern in the last few days.<br />
One of AGOv3 objectives is to be an hight quality artwork repository for <a href="http://www.gnome.org/">GNOME desktop</a>. Thus, there is the need for moderation. Since AGO&#8217;s development community is short on staff we need to find a efficient way to have submissions checked out. On the other hand the community should also have the opportunity to say what they think should or shouldn&#8217;t be accepted.</p>
<p>In response to the problem I&#8217;ve already gather several ideas among the community and tried to compile what I think is a good solution to the problem. </p>
<ul>
<li>Every work should be submitted to an initial moderation process where it is voted by several moderators if it is accepted or not</li>
<li>After being accepted, it will be made fully public. Users can now vote on it. This votes will decide if a work will stay in the system or not.</li>
<li>In case of having a negative rating for a certain period of time it is removed from the public gallery and moved to the author&#8217;s draft folder.</li>
<li>The most active artwork developers are perfect candidates to become moderators. That can be seen as a way to recognize and award their commitment to the community</li>
</ul>
<p>You&#8217;ll find a complete description of the process in <a href="http://eksperimental.net/soc/planning/moderation.pdf">here</a>.</p>
<p>However I&#8217;m not fully happy with this solution. So if you have any suggestion, please, do tell. </p>
]]></content:encoded>
			<wfw:commentRss>http://eksperimental.net/blog/2007/04/29/moderation/feed/</wfw:commentRss>
		</item>
		<item>
		<title>And now what?</title>
		<link>http://eksperimental.net/blog/2007/04/17/and-now-what/</link>
		<comments>http://eksperimental.net/blog/2007/04/17/and-now-what/#comments</comments>
		<pubDate>Tue, 17 Apr 2007 09:35:06 +0000</pubDate>
		<dc:creator>Bruno Santos</dc:creator>
		
		<category><![CDATA[planning]]></category>

		<category><![CDATA[AGO]]></category>

		<category><![CDATA[SOC]]></category>

		<guid isPermaLink="false">http://eksperimental.net/blog/2007/04/17/and-now-what/</guid>
		<description><![CDATA[Well, in the past days I&#8217;ve been idling  in  #gnome-art @ irc.gnome.org. I haven&#8217;t had the opportunity to meet much of the community and I definitely should do that. They certainly have valuable ideias to the project.
Thomas(my mentor) and I have been slowly planning the database schema. Being this probably one of the [...]]]></description>
			<content:encoded><![CDATA[<p>Well, in the past days I&#8217;ve been idling  in  #gnome-art @ irc.gnome.org. I haven&#8217;t had the opportunity to meet much of the community and I definitely should do that. They certainly have valuable ideias to the project.</p>
<p>Thomas(my mentor) and I have been slowly planning the database schema. Being this probably one of the most important steps in the whole process there&#8217;s no need to rush things up.<br />
All ideas can be found in the <a href="http://live.gnome.org/GnomeArt/Ago3">gnome wiki</a> where I&#8217;m updating previous ideas aswell as adding new ones.</p>
<p>But let&#8217;s explain some ideas, that&#8217;s why this page exists.</p>
<p><strong>Authentication</strong><br />
Implement ACL to manage user permissions in the system functionalies seems to be a good option since it let&#8217;s easily change user rights whenever needed. Not that we need to be changing constantly but we are looking for a expandable system, so let&#8217;s not hardcode too much basic features. In later development this can help to speed up code writing.</p>
<p><strong>XML+RPC</strong><br />
Ok. So one of the features I&#8217;d love to implement would be this one. This integrates art.gnome.org with 3rd party applications, which can be beneficial to everyone.<br />
If you aren&#8217;t familiar with XML+RPC, it would allow us to launch an API so 3rd party applications could interact with AGO. A possible example is to download backgrounds, themes, icon sets directly to a GNOME Desktop using a small application based on AGO API.</p>
<p>That&#8217;s all for now.</p>
<p>If you have an idea you think can help the project or just want to comment about, please do. Every feedback is welcomed.</p>
]]></content:encoded>
			<wfw:commentRss>http://eksperimental.net/blog/2007/04/17/and-now-what/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google&#8217;s Summer of Code Begins</title>
		<link>http://eksperimental.net/blog/2007/04/14/googles-summer-of-code-begins/</link>
		<comments>http://eksperimental.net/blog/2007/04/14/googles-summer-of-code-begins/#comments</comments>
		<pubDate>Sun, 15 Apr 2007 01:38:42 +0000</pubDate>
		<dc:creator>Bruno Santos</dc:creator>
		
		<category><![CDATA[AGO]]></category>

		<category><![CDATA[SOC]]></category>

		<guid isPermaLink="false">http://eksperimental.net/blog/?p=3</guid>
		<description><![CDATA[ So it seems that my proposal got accepted in Google&#8217;s Summer of Code program. For those of you who don&#8217;t SOC: Google&#8217;s invites and fund students to work on an open source project while being mentored by the project Organization. During three months, over 900 students will be working in the projects they applied [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://eksperimental.net/blog/wp-content/uploads/2007/04/code_sm.png' alt='Google’s Summer of Code' class="theme" /> So it seems that my proposal got accepted in <a href="http://code.google.com/soc">Google&#8217;s Summer of Code</a> program. For those of you who don&#8217;t SOC: Google&#8217;s invites and fund students to work on an open source project while being mentored by the project Organization. During three months, over 900 students will be working in the projects they applied to.</p>
<p>My mentoring organization will be <a href="http://www.gnome.org/">GNOME Foundation</a> and my application was about developing art.gnome.org Version 3(AGO3).<br />
So for the next three months I&#8217;ll be developing AGO3 and I&#8217;ll be using this page as a log to my experience with the SOC program.</p>
<p>So, about the project:<br />
<a href="http://art.gnome.org">art.gnome.org</a> is an artwork site for GNOME&#8217;s Community. Users can submit their artwork and share it.<br />
This new version to be developed will give new life to the project, where users will have a major role in what content they want to see. Let&#8217;s say, a more web 2.0 view <img src='http://eksperimental.net/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
Anyway, you can read everything about it in my <a href="http://eksperimental.net/soc">SOC proposal</a></p>
]]></content:encoded>
			<wfw:commentRss>http://eksperimental.net/blog/2007/04/14/googles-summer-of-code-begins/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
