<?xml version="1.0" encoding="utf-8"?>
<!-- generator="wordpress/2.0.11" -->
<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>context switch</title>
	<link>http://log.emmanuelebassi.net</link>
	<description>Random babblings of a geek.</description>
	<pubDate>Sat, 21 Jun 2008 11:35:46 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.11</generator>
	<language>en</language>
			<item>
		<title>Pogo Stick</title>
		<link>http://log.emmanuelebassi.net/archives/2008/05/pogo-stick/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/05/pogo-stick/#comments</comments>
		<pubDate>Fri, 30 May 2008 21:02:25 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>Hacking</category>

		<category>fun</category>

		<category>clutter</category>

		<category>tweet</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/05/pogo-stick/</guid>
		<description><![CDATA[apparently, some people &#8212; and I&#8217;m looking at you, Pippin &#8212; said that the Tweet repository is hard to find: you actually have to search in my blog.
well, not anymore: Tweet on GNOME Live
complete with a screenshot of the new UI, as suggested by Matthew Allum:

]]></description>
			<content:encoded><![CDATA[<p>apparently, some people &mdash; and I&#8217;m looking at you, Pippin &mdash; said that the Tweet repository is hard to find: you actually have to search in my blog.</p>
<p>well, not anymore: <a href="http://live.gnome.org/Tweet">Tweet on GNOME Live</a></p>
<p>complete with a screenshot of the new UI, as suggested by Matthew Allum:</p>
<div style="text-align:center"><a id="p273" rel="attachment" class="imagelink" href="http://log.emmanuelebassi.net/archives/2008/05/pogo-stick/tweet-pogo-style/" title="Tweet - Pogo style"><img id="image273" src="http://log.emmanuelebassi.net/wp-content/2008/05/tweet.png" alt="Tweet - Pogo style" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/05/pogo-stick/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Road to Somewhere</title>
		<link>http://log.emmanuelebassi.net/archives/2008/05/road-to-somewhere/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/05/road-to-somewhere/#comments</comments>
		<pubDate>Fri, 23 May 2008 21:08:01 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>Hacking</category>

		<category>C</category>

		<category>fun</category>

		<category>clutter</category>

		<category>tweet</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/05/road-to-somewhere/</guid>
		<description><![CDATA[well, after eating my dog food for a while, it seems that Tweet is starting to get more useful.
first of all, now Tweet has an authentication dialog which allows you to enter your username and password the first time you run it:

and even verify them beforehand:


then you get the list of statuses from the people [...]]]></description>
			<content:encoded><![CDATA[<p>well, after eating my dog food for a while, it seems that Tweet is starting to get more useful.</p>
<p>first of all, now Tweet has an authentication dialog which allows you to enter your username and password the first time you run it:</p>
<div style="text-align:center"><a id="p269" rel="attachment" class="imagelink" href="http://log.emmanuelebassi.net/archives/2008/05/road-to-somewhere/authentication1/" title="Authentication/1"><img id="image269" src="http://log.emmanuelebassi.net/wp-content/2008/05/tweet-auth-1.png" alt="Authentication/1" /></a></a></div>
<p>and even verify them beforehand:</p>
<div style="text-align:center"><a id="p270" rel="attachment" class="imagelink" href="http://log.emmanuelebassi.net/archives/2008/05/road-to-somewhere/authentication2/" title="Authentication/2"><img id="image270" src="http://log.emmanuelebassi.net/wp-content/2008/05/tweet-auth-2.png" alt="Authentication/2" /></a></a></div>
<div style="text-align:center"><a id="p271" rel="attachment" class="imagelink" href="http://log.emmanuelebassi.net/archives/2008/05/road-to-somewhere/authentication3/" title="Authentication/3"><img id="image271" src="http://log.emmanuelebassi.net/wp-content/2008/05/tweet-auth-3.png" alt="Authentication/3" /></a></a></div>
<p>then you get the list of statuses from the people you&#8217;re following:</p>
<div style="text-align:center"><a id="p267" rel="attachment" class="imagelink" href="http://log.emmanuelebassi.net/archives/2008/05/road-to-somewhere/loading/" title="Loading"><img id="image267" src="http://log.emmanuelebassi.net/wp-content/2008/05/tweet-loading.png" alt="Loading" /></a></div>
<p>you can scroll around using your mouse, and tap a row to get more informations about the status and the user:</p>
<div style="text-align:center"><a href="http://folks.o-hand.com/ebassi/tweet-navigation.ogg"><img id="image268" src="http://log.emmanuelebassi.net/wp-content/2008/05/tweet-navigation.png" alt="Navigation" /></a>
<p style="font-size:80%"><em>click on the screenshot&#8230;</em></p>
</div>
<p>as you can see, the <acronym title="User Interface">UI</acronym> is geared towards the touchscreen usage, but I plan to add key navigation soon.</p>
<p>still, there&#8217;s a lot to add: support for viewing your own statuses, direct messages, the list of people you&#8217;re following and the people following you &mdash; even the error messages are just printed to the console, even though I&#8217;m working on that.</p>
<p>the bits I&#8217;m most proud of:</p>
<ul>
<li>the GTK+ integration: I&#8217;m retrieving the style information straight from the <code>GtkWindow</code> embedding the Clutter stage, and even if I had to fight with the utter mess that is the themeing code, I was able to gather enough to make Clutter play nice with a GTK+ environment<sup><a href="#footnote-1-264" id="footnote-link-1-264" class="footnote-link footnote-identifier-link" title="in the screencast the scrollbar handle color, for instance, comes from the theme as well as the font">1</a></sup>;</li>
<li>the small animation API I implemented on top of the Clutter animation framework, requiring a single function (plus two completely generic classes) to <a href="http://en.wikipedia.org/wiki/Tweening">tween</a> an actor between two states; for instance:
<pre style="font-size:80%">
tweet_actor_animate (info, <span style="color:purple">TWEET_LINEAR</span>, <span style="color:red">250</span>,
                     <span style="color:red">&#8220;y&#8221;</span>, tweet_interval_new (<span style="color:purple">G_TYPE_INT</span>, y + padding, <span style="color:red">100</span> + padding),
                     <span style="color:red">&#8220;height&#8221;</span>, tweet_interval_new (<span style="color:purple">G_TYPE_INT</span>, <span style="color:red">10</span>, (height - (<span style="color:red">100</span> * <span style="color:red">2</span>))),
                     <span style="color:red">&#8220;opacity&#8221;</span>, tweet_interval_new (<span style="color:purple">G_TYPE_UCHAR</span>, <span style="color:red">0</span>, <span style="color:red">196</span>),
                     <span style="color:purple">NULL</span>);
</pre>
<p> this is the code that animates the status information actor that appears overlayed on top of the status view<sup><a href="#footnote-2-264" id="footnote-link-2-264" class="footnote-link footnote-identifier-link" title="this kind of utility API is easy to achieve given the power and flexibility of the underlying framework &mdash; but it obviously limits what you can and cannot do, and if you ty to coerce it into being more generic you start losing bits and pieces and a simple API starts getting in your way instead of helping you; that&#8217;s why Clutter&#8217;s animation framework might seem complicated at first: it&#8217;s trying very hard to allow you to build whatever animation you have in mind instead of limiting you">2</a></sup>; I&#8217;d like to thank <a href="http://codecave.org/">pippin</a> for the idea about the API behaviour;</li>
<li>Twitter-GLib, the generic API for accessing Twitter throught its <a href="http://en.wikipedia.org/wiki/RESTful">RESTful</a> API, which thanks to LibSoup has been a breeze to write even in a clunky and not-at-all-web-two-point-oh-buzzword-compliant language like C;</li>
<li>the fact that Tweet is written in a very reusable manner (apart from the base scrollable list which comes from Tidy), with every piece neatly abstracted into its own class.</li>
<li>finally, the fact that after almost a year of basically working on libraries only I can still sit down and get an application from scratch to a usable state in a couple of weeks in my spare time &mdash; even if I have to write a library to get it done. <img src='http://log.emmanuelebassi.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
</ul>
<p>by the way: is any artist out there interested in making an icon for Tweet? I really would like to avoid using Twitter&#8217;s own icon.
</p>
<ol start="1" class="footnotes"><li id="footnote-1-264" class="footnote">in the screencast the scrollbar handle color, for instance, comes from the theme as well as the font [<a href="#footnote-link-1-264" class="footnote-link footnote-back-link">&#8617;</a>]</li><li id="footnote-2-264" class="footnote">this kind of utility API is easy to achieve given the power and flexibility of the underlying framework &mdash; but it obviously limits what you can and cannot do, and if you ty to coerce it into being more generic you start losing bits and pieces and a simple API starts getting in your way instead of helping you; that&#8217;s why <a href="http://www.clutter-project.org">Clutter</a>&#8217;s <a href="http://www.clutter-project.org/docs/clutter/stable/clutter-animations.html">animation framework</a> might seem complicated at first: it&#8217;s trying very hard to allow you to build whatever animation you have in mind instead of limiting you [<a href="#footnote-link-2-264" class="footnote-link footnote-back-link">&#8617;</a>]</li></ol>]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/05/road-to-somewhere/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sincerest Forms of Flattery</title>
		<link>http://log.emmanuelebassi.net/archives/2008/04/sincerest-forms-of-flattery/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/04/sincerest-forms-of-flattery/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 12:57:36 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>GNOME</category>

		<category>fun</category>

		<category>announce</category>

		<category>clutter</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/04/sincerest-forms-of-flattery/</guid>
		<description><![CDATA[tidy: they say that imitation is the sincerest form of flattery:



the actual amount of code is quite small, and it&#8217;s already available in Tidy.
challenges: Luca dared me into making a Clutter-based coverflow-like plugin for Rhythmbox, but it was Iain that picked the challenge up and wrote some basic code for it. I, on the other [...]]]></description>
			<content:encoded><![CDATA[<p><strong>tidy</strong>: they say that <em>imitation is the sincerest form of flattery</em>:</p>
<div style="text-align:center">
<a href="http://folks.o-hand.com/ebassi/tidy-boo-yah.ogg"><img id="image253" src="http://log.emmanuelebassi.net/wp-content/2008/03/tidy-boo-yah-thumb.png" alt="TidyFingerToggle" /></a>
</div>
<p>the actual amount of code is quite small, and it&#8217;s already available in <a href="http://svn.o-hand.com/view/tidy/trunk/tidy/tidy-finger-toggle.h">Tidy</a>.</p>
<p><strong>challenges</strong>: <a href="http://elleuca.blogspot.com/">Luca</a> <a href="http://mail.gnome.org/archives/desktop-devel-list/2008-April/msg00203.html">dared</a> me into making a Clutter-based coverflow-like plugin for Rhythmbox, but it was Iain that picked the challenge up and <a href="http://mail.gnome.org/archives/desktop-devel-list/2008-April/msg00209.html">wrote</a> some basic code for it. I, on the other hand, don&#8217;t like coverflow for browsing my music collection, so I finally decided to write something for the Eye of GNOME &mdash; a <a href="http://en.wikipedia.org/wiki/Ken_Burns_Effect">Ken Burns effect</a> slide show. it&#8217;s not at all finished, and if nobody <a href="http://mail.gnome.org/archives/desktop-devel-list/2008-April/msg00211.html">picks</a> it up, I&#8217;ll try and do my best to have it ready for GNOME 2.24, if <acronym title="Eye of GNOME">EOG</acronym> maintainers want it, of course. it&#8217;s not the best display of Clutter features &mdash; except the animation framework &mdash; but if you have hardware acceleration it will make slideshows look a lot nicer.</p>
<p><strong>json-glib</strong>: this weekend I <a href="http://mail.gnome.org/archives/gnome-announce-list/2008-April/msg00061.html">released</a> the first developers snapshot of JSON-GLib 0.6; the API is stable, the test suite is rocking and this release finally fixes the last bit needed for full RFC 4627 compliance (Unicode escaping). I&#8217;m probably going to release 0.6.0 in a couple of weeks.
</p>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/04/sincerest-forms-of-flattery/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Being Luis Villa</title>
		<link>http://log.emmanuelebassi.net/archives/2008/04/being-luis-villa/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/04/being-luis-villa/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 13:41:02 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>GNOME</category>

		<category>fun</category>

		<category>meme</category>

		<category>luis-villa-is-people</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/04/being-luis-villa/</guid>
		<description><![CDATA[


iain&#8217;s right: this is funnier than the history meme.

]]></description>
			<content:encoded><![CDATA[<div style="text-align:center">
<a id="p259" rel="attachment" class="imagelink" href="http://log.emmanuelebassi.net/archives/2008/04/being-luis-villa/i-am-luis/" title="I am Luis"><img id="image259" src="http://log.emmanuelebassi.net/wp-content/2008/04/i-am-luis.jpg" alt="I am Luis" /></a>
</div>
<p><a href="http://blogs.gnome.org/iain/2008/04/17/i-am-luis-villa/">iain</a>&#8217;s right: this is funnier than the history meme.
</p>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/04/being-luis-villa/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Helm, set a course&#8230; for love</title>
		<link>http://log.emmanuelebassi.net/archives/2008/02/helm-set-a-course-for-love/</link>
		<comments>http://log.emmanuelebassi.net/archives/2008/02/helm-set-a-course-for-love/#comments</comments>
		<pubDate>Tue, 19 Feb 2008 15:32:05 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>GNOME</category>

		<category>fun</category>

		<category>crack</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2008/02/helm-set-a-course-for-love/</guid>
		<description><![CDATA[a GNOME cruise? I already have the theme song&#8230;

GNOME-Love Boat, love exciting and new,
Come aboard, we're expecting you.

The GNOME-Love Boat soon will be making another release,
The GNOME-Love Boat promises something for everyone.

Set a course for adventure,
Your box's on a new romance.

And GNOME-Love
Won't hurt anymore,
It's an open source,
On a userfriendly shore.

it's GNOME-Love
Welcome aboard it's GNOME-love

]]></description>
			<content:encoded><![CDATA[<p>a <a href="http://wayofthemonkey.com/?date=2008-02-19">GNOME cruise</a>? I already have the theme song&#8230;</p>
<pre>
GNOME-Love Boat, love exciting and new,
Come aboard, we're expecting you.

The GNOME-Love Boat soon will be making another release,
The GNOME-Love Boat promises something for everyone.

Set a course for adventure,
Your box's on a new romance.

And GNOME-Love
Won't hurt anymore,
It's an open source,
On a userfriendly shore.

it's GNOME-Love
Welcome aboard it's GNOME-love
</pre>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2008/02/helm-set-a-course-for-love/feed/</wfw:commentRss>
		</item>
		<item>
		<title>When the Levee Breaks</title>
		<link>http://log.emmanuelebassi.net/archives/2007/09/when-the-levee-breaks/</link>
		<comments>http://log.emmanuelebassi.net/archives/2007/09/when-the-levee-breaks/#comments</comments>
		<pubDate>Tue, 11 Sep 2007 13:40:37 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>Hacking</category>

		<category>Perl</category>

		<category>fun</category>

		<category>developer</category>

		<category>git</category>

		<category>die-cvs-die</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/archives/2007/09/when-the-levee-breaks/</guid>
		<description><![CDATA[Yesterday I decided to start working on the porting of the Gtk2::SourceView Perl module to the new upstream API. For my convenience, and because I know I&#8217;ll probably screw up, I decided to use a local git repository so I can experiment with all the branches I want before hitting CVS. Yes, you read that [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I decided to start working on the porting of the <a href="http://search.cpan.org/~ebassi/Gtk2-SourceView-1.000/">Gtk2::SourceView</a> Perl module to the new <a href="http://svn.gnome.org/viewcvs/gtksourceview/trunk/">upstream</a> API. For my convenience, and because I know I&#8217;ll probably screw up, I decided to use a local git repository so I can experiment with all the branches I want before hitting CVS. Yes, you read that right: the Perl GTK+/GNOME bindings still use CVS on SourceForge.net<sup><a href="#footnote-1-230" id="footnote-link-1-230" class="footnote-link footnote-identifier-link" title="there has been talk about moving them to GNOME CVS, then to SVN, but in the end the maintenance burden would be too high, and some of the members of the team would need at least SVN accounts anyway">1</a></sup>. Thus, I decided to import the whole gtk2-perl repository into a git one using <code>git-cvsimport</code>, and - lo and behold - after four hours of checkout, I got it on my machine, complete of full history.</p>
<p>The layout of the bindings modules is composed of a single CVS module and all the Perl modules are inside it; this is far from optimal with git<sup><a href="#footnote-2-230" id="footnote-link-2-230" class="footnote-link footnote-identifier-link" title="or any other SCM software that is not CVS, for that matter">2</a></sup>, so I proceeded to split up each Perl module into its own repository, with the help of <code><a href="http://www.kernel.org/pub/software/scm/git/docs/git-filter-branch.html">git-filter-branch</a></code> - a new command taken from the <a href="http://en.wikipedia.org/wiki/Cogito_%28software%29">Cogito</a> suite and added to the 1.5.3 release of git.</p>
<p>The filter-branch command is extremely powerful: it rewrites the history of a repository (which is a destructive operation) by passing a filter function on it. It has a set of predefined filters and contexts of operations, so what you need to do to split out a sub-directory into its own repository is call:</p>
<pre>
  $ git filter-branch --subdirectory-filter <em>directory</em> <em>refspec</em>
</pre>
<p>and after that you get all the files filtered out marked as new or modified, so you can use <code>git reset --hard</code> to get rid of them, and have your sub-directory contents as the only recognised content of the repository.</p>
<p>Unfortunately, you can&#8217;t really filter out a direct import of a CVS repository: <code>git-cvsimport</code> stores branches and tags, and filtering will most likely create dangling objects; so, what I did was cloning the original repository, to get rid of the local branches, and remove all the tags:</p>
<pre>
  $ git clone --no-hardlinks /tmp/gtk2-perl Gtk2-SourceView.git
  $ for TAG in `git tag`; do git tag -f -d ${TAG}; done
</pre>
<p>The <code>--no-hardlinks</code> switch is important for later - I have to thank <a href="http://use.perl.org/~rjbs/journal/34411">Ricardo Signes</a> for this tip; in short: it makes git use real copies instead of hardlinking files when cloning a local repository, and will make the garbage collection and pruning phases actually work and prune the unused objects from the git database.</p>
<p>At this point, I just filter-branched and reset:</p>
<pre>
  $ git filter-branch --subdirectory-filter Gtk2-SourceView HEAD
  $ git reset --hard
</pre>
<p>and then called:</p>
<pre>
  $ git gc --aggressive
  $ git prune
</pre>
<p>and finally obtained my local git repository of the Gtk2-SourceView module from the original CVS repository - with all the history on <code>HEAD</code> preserved. The good part is that the entire set of operations is very repetitive, so it&#8217;s suitable for scripting<sup><a href="#footnote-3-230" id="footnote-link-3-230" class="footnote-link footnote-identifier-link" title="I did write a small script which extracted every Perl module sub-directory into its own git repository - but it&#8217;s mostly 50 lines sugarcoating the core 5 lines of actual work">3</a></sup>. Yey for git! <img src='http://log.emmanuelebassi.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />
</p>
<ol start="1" class="footnotes"><li id="footnote-1-230" class="footnote">there has been talk about moving them to GNOME CVS, then to SVN, but in the end the maintenance burden would be too high, and some of the members of the team would need at least SVN accounts anyway [<a href="#footnote-link-1-230" class="footnote-link footnote-back-link">&#8617;</a>]</li><li id="footnote-2-230" class="footnote">or any other <acronym title="Source Code Management">SCM</acronym> software that is not CVS, for that matter [<a href="#footnote-link-2-230" class="footnote-link footnote-back-link">&#8617;</a>]</li><li id="footnote-3-230" class="footnote">I did write a <a href="http://www.gnome.org/~ebassi/scripts/git-cvs-split">small script</a> which extracted every Perl module sub-directory into its own git repository - but it&#8217;s mostly 50 lines sugarcoating the core 5 lines of actual work [<a href="#footnote-link-3-230" class="footnote-link footnote-back-link">&#8617;</a>]</li></ol>]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2007/09/when-the-levee-breaks/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Release Craziness</title>
		<link>http://log.emmanuelebassi.net/archives/2006/01/release-craziness/</link>
		<comments>http://log.emmanuelebassi.net/archives/2006/01/release-craziness/#comments</comments>
		<pubDate>Tue, 17 Jan 2006 00:20:50 +0000</pubDate>
		<dc:creator>ebassi</dc:creator>
		
		<category>GNOME</category>

		<category>fun</category>

		<guid isPermaLink="false">http://log.emmanuelebassi.net/2006/01/17/release-craziness/</guid>
		<description><![CDATA[Tonight it was release time - when GNOME tarballs were due in order to allow 48 hours of smoke testing before the actual release, on January 18th.
I did the gnome-utils release, and decided to hang out a bit on #gnome-hackers - and I would have better had not to, since everything happened tonight.
FIrst comes Guilherme [...]]]></description>
			<content:encoded><![CDATA[<p>Tonight it was release time - when GNOME tarballs were due in order to allow 48 hours of smoke testing before the actual release, on January 18th.</p>
<p>I did the gnome-utils release, and decided to hang out a bit on <code>#gnome-hackers</code> - and I would have better had not to, since <b>everything</b> happened tonight.</p>
<p>FIrst comes Guilherme de S. Pastore: the newly-appointed gnome-terminal mantainer couldn&#8217;t make this release on time, and asked for someone to ship the code inside HEAD; since I love gnome-terminal (usually, I have a dozen terminals laying around on my dozen-workspace layout), how could I not help, after glancing at the bunch of bug fixes Guilherme did in the last two weeks?  Also, he is on the Account Team and enabled my SSH account as fast as he could in the occasion of the last release day, so I had a huge debt of gratitude with him.</p>
<p>After the usual <code>./autogen.sh &#038;&#038; make &#038;&#038; make distcheck</code> cycle and update, I made the release, and hung around a bit more on the IRC channel.</p>
<p>A mere two hours before the end of the timeline (23:59 UTC), <a title="Bugzilla - bug 326846" href="http://bugzilla.gnome.org/show_bug.cgi?id=326846">three patches</a> still had to be applied to libgnome, libbonoboui and libgnomeui respectively, and then make a release of those three libraries.  In a moment of slight insanity, I began working on it.  The madness began.</p>
<p>Each patch applied cleanly to its library; I began making a libgnome release, but noticed that the patch broke libbonobo - upon which libgnomeui depends.  I already did a commit to the CVS, so I had to track the origin of the breakage.  It was an included header (popt.h) that was conditionally included using a pre-processor macro, but the data structures defined in there were still used and not conditionally compiled out using the same check.  In order not to break everything, I had to roll out a new version of libgnome - with the header file unconditionally included.  Minutes flew while <code>make distcheck</code> run.  Finally, the 2.13.7 release of libgnome was ready.  I had to install it on my system in order to make libbonoboui compile: with a mere hour to go, I still had to roll a release for libbonoboui and a release for libgnomeui.</p>
<p>Libbonoboui compiled fine - my fix worked fine.  While I was uploading the libbonoboui&#8217;s tarball for release 2.13.1, <code>make distcheck</code> run inside libgnomeui.  Twentyfive minutes to the deadline.</p>
<p>Finally, libgnomeui finished its check and created the tarball of the 2.13.2 release.  I did the upload less than fifteen minutes before the deadline was due.</p>
<p>I&#8217;ve never had this much fun: it was a run against time, and against my CPU.  Also, I gained a certain degree of automatism when dealing with the release process of a GNOME package.  But, seriously: never, never again.
</p>
]]></content:encoded>
			<wfw:commentRss>http://log.emmanuelebassi.net/archives/2006/01/release-craziness/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
