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

<channel>
	<title>mind can has mountains</title>
	<atom:link href="http://www.gnostai.org/journal/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gnostai.org/journal</link>
	<description>gnostai development journal</description>
	<pubDate>Sat, 28 Jun 2008 00:10:29 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
	<image>
		<title>Gnostai</title>
		<url>http://www.gnostai.org/style/images/gnostai-logo-rss.png</url>
		<link>http://www.gnostai.org/journal</link>
		<width>144</width>
		<height>60</height>
		<description>Gnostai</description>
	</image>
			<item>
		<title>Palatina, an experimental Alexandria</title>
		<link>http://www.gnostai.org/journal/2008/06/28/palatina-an-experimental-alexandria/</link>
		<comments>http://www.gnostai.org/journal/2008/06/28/palatina-an-experimental-alexandria/#comments</comments>
		<pubDate>Sat, 28 Jun 2008 00:01:32 +0000</pubDate>
		<dc:creator>cathalmagus</dc:creator>
		
		<category><![CDATA[alexandria]]></category>

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

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

		<guid isPermaLink="false">http://www.gnostai.org/journal/?p=10</guid>
		<description><![CDATA[I&#8217;ve been thinking for a while that what I really want to do with Alexandria is experiment wildly. I want to see what kind of database might work best. I&#8217;d like to check out the possibility of using RDF-triples to describe arbitrary properties of books. I want to redesign the core domain from the ground [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been thinking for a while that what I really want to do with Alexandria is experiment wildly. I want to see what kind of database might work best. I&#8217;d like to check out the possibility of using RDF-triples to describe arbitrary properties of books. I want to redesign the core domain from the ground up to that the program supports a deep domain model. And to do that, I think I need to depart from ordinary Alexandria development for a while.</p>
<p><span id="more-10"></span></p>
<p>I won&#8217;t be giving up on maintenance of the main Alexandria program. It&#8217;s a useful program in its current state, and it has a few bugs which are preventing it being properly stable for its users. They need to be sorted out, certainly. But the addition of new features into the pre-existing codebase is just too&#8230; messy. Especially without a plan.</p>
<p>So, I&#8217;ve decided to create a new little side project for myself and hack on that instead. Apart from anything else, it should help lift my current development funk surrounding Alexandria. If it goes badly, I can at least learn some things from the experience and avoid them when I return to adding features to Alexandria directly. If it goes really well, it may replace the entire Alexandria codebase (this is quite unlikely). In any case, it&#8217;ll be called <em>Palatina</em>, after <a title="Bibliotheca Palatina on Wikipedia" href="http://en.wikipedia.org/wiki/Bibliotheca_Palatina">Bibliotheca Palatina</a>. To begin with, I&#8217;ll be writing short articles here about how the domain might be worked out. Then, I might make a few diagrams, write a few code fragments&#8230; We&#8217;ll see how it goes. Eventually, a wiki and a source repository might be necessary.</p>
<p>If anyone wants to comment constructively on my work with Palatina, drop me a line and I&#8217;ll create an account for you on this journal - you&#8217;ll know my e-mail address from the Alexandria mailing list.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gnostai.org/journal/2008/06/28/palatina-an-experimental-alexandria/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Finding snags</title>
		<link>http://www.gnostai.org/journal/2008/03/04/finding-snags/</link>
		<comments>http://www.gnostai.org/journal/2008/03/04/finding-snags/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 04:36:41 +0000</pubDate>
		<dc:creator>cathalmagus</dc:creator>
		
		<category><![CDATA[alexandria]]></category>

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

		<guid isPermaLink="false">http://www.gnostai.org/journal/2008/03/04/finding-snags/</guid>
		<description><![CDATA[I thought I&#8217;d document my process for finding and fixing bugs, just to see how I actually work. To begin with, I chose a fairly recently-reported snag that seemed to be straightforward; it&#8217;s [#18414] &#8220;Check boxes giving wrong columns&#8221;. It seems that the choices you make in Edit&#62;Preferences &#8220;Visible Columns&#8221; aren&#8217;t always the same as [...]]]></description>
			<content:encoded><![CDATA[<p>I thought I&#8217;d document my process for finding and fixing bugs, just to see how I actually work. To begin with, I chose a fairly recently-reported snag that seemed to be straightforward; it&#8217;s [<a href="http://rubyforge.org/tracker/index.php?func=detail&amp;aid=18414&amp;group_id=205&amp;atid=863" title="Bug Report #18414 on RubyForge Tracker">#18414</a>] <em>&#8220;Check boxes giving wrong columns&#8221;</em>. It seems that the choices you make in Edit&gt;Preferences &#8220;Visible Columns&#8221; aren&#8217;t always the same as what you get. Now, I seem to remember that these choices are held in <em>gconf</em> preferences, so I load up <tt>gconf-editor</tt>, navigate to <em>apps</em> and <em>alexandria</em> and see a set of boolean variables: <tt>col_own_visible</tt>, <tt>col_rating_visible</tt> and so on. I try turning them on and off via Alexandria, and it seems to affect the right <em>gconf</em> variables. But I can clearly see the &#8220;Rating&#8221; column disappear when I de-select &#8220;Own&#8221; - just as the report describes. The problem is in the listview display: lets have a look at <tt>listview.rb</tt><br />
<span id="more-9"></span><br />
Before I forget though, I have to record some incorrect behaviour I noticed through the <tt>gconf-editor</tt> - the <tt>cols_width</tt> setting saves column names in their translated form. This must be why I keep loosing the setting for column widths - I&#8217;m forever switching locale as I test out new translations. I&#8217;ll write that behaviour on a Post-it to deal with later.</p>
<p>Okay, back to <tt>listview.rb</tt> and I&#8217;ve found the column visibility code in the method <tt>setup_listview_columns_visibility</tt>. I can see that the set of booleans from the <em>gconf</em> prefs is being set up into an ordered array - <tt>cols_visibility</tt> - to be correlated with the ListView columns in a loop just below. The ordering must be wrong&#8230;. I split the Emacs editor window horizontally and try to find the order in which columns are added to the ListView in the upper pane while keeping the <tt>cols_visibility</tt> in the lower pane. Right! In <tt>setup_books_listview</tt> the title column is set up first (but it can&#8217;t be turned invisible, of course) the each of the columns in <tt>TEXT_COLUMNS</tt> are added in turn, followed by all the <tt>CHECK_COLUMNS</tt> and then the rating column. Oh, and a tags column that&#8217;s getting set up but not displayed (adding that to another Post-it!). Lets write all that in a list.</p>
<p>Now to compare it with  the <tt>cols_visibility</tt> matrix.</p>
<table>
<tr>
<th>Columns</th>
<th>cols_visibility</th>
</tr>
<tr>
<td>Title</td>
<td>N/A</td>
</tr>
<tr>
<td>Authors</td>
<td>authors</td>
</tr>
<tr>
<td>ISBN</td>
<td>isbn</td>
</tr>
<tr>
<td>Publisher</td>
<td>publisher</td>
</tr>
<tr>
<td>Publish Year</td>
<td>publish_date <em>(Slight difference in terminology</em>)</td>
</tr>
<tr>
<td>Binding</td>
<td>edition <em>(Even larger difference in terminology, but this is essentially the same thing)</em></td>
</tr>
<tr>
<td>Read</td>
<td><strong>rating</strong> <em>(Here is our first error)</em></td>
</tr>
<tr>
<td>Own</td>
<td><strong>redd</strong> <em>(And another, redd is a phonetic pronunciation for past-tense Read)</em></td>
</tr>
<tr>
<td>Want</td>
<td>want</td>
</tr>
<tr>
<td>Rating</td>
<td><strong>own</strong> <em>(This is the final erroneous entry)</em></td>
</tr>
<tr>
<td>Tags</td>
<td>N/A</td>
</tr>
</table>
<p>Okay, I think we have the superficial cause of the problem identified. Let&#8217;s change the order in that array of booleans. First, though, my cat wants to say hello&#8230;</p>
<p>So after playing with Sibbie for a while, it&#8217;s back to Alexandria. I fixed the order of the variables in <tt>cols_visibility</tt> to match the columns - it&#8217;s a 3-line fix. Well, I&#8217;ve noticed a few other issues along the way, so while I&#8217;m at it, I touch up the preferences dialog a bit, rearranging the checkboxes and adding a preference option for Tags. I commit my changes to subversion, <em>r958</em>. Then I go to the bug report on RubyForge, add a comment and mark it closed.</p>
<p>So, that&#8217;s another snag uncovered and fixed. Now for the point of the article: why did this type of bug arise in the first place? Simply because the original code (Laurent&#8217;s, not Joseph&#8217;s, by the way) was designed for a small system in which it was easy for the programmer to check that the column array and the boolean array were in sync. It must have broken gradually as code was added and moved about, it was inevitable really. If the code were a bit more &#8220;type-safe&#8221; (using that term in its loosest sense) then the task of remembering the ordering of arrays would be left to the software, not the programmer. I haven&#8217;t even fixed that, so the weakness remains. This is the kind of weakness, present throughout the Alexandria code, that needs to be addressed in the future design of Alexandria.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gnostai.org/journal/2008/03/04/finding-snags/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Literary Eponymous Adjectives</title>
		<link>http://www.gnostai.org/journal/2008/01/03/literary-eponymous-adjectives/</link>
		<comments>http://www.gnostai.org/journal/2008/01/03/literary-eponymous-adjectives/#comments</comments>
		<pubDate>Thu, 03 Jan 2008 21:30:45 +0000</pubDate>
		<dc:creator>cathalmagus</dc:creator>
		
		<category><![CDATA[alexandria]]></category>

		<category><![CDATA[eponymous adjectives]]></category>

		<category><![CDATA[release subtitle]]></category>

		<guid isPermaLink="false">http://www.gnostai.org/journal/2008/01/03/literary-eponymous-adjectives/</guid>
		<description><![CDATA[Good title, eh? Well, the point of the matter isn&#8217;t much more serious than that. You may have come across the XEmacs 21.4 OXYMORON series of software releases, with subtitles such as 21.4.9 &#8220;Informed Management&#8221; and 21.4.19 &#8220;Constant Variable&#8221;. I quite like the idea of subtitles for mid-size releases, and thought that eponymous adjectives from [...]]]></description>
			<content:encoded><![CDATA[<p>Good title, eh? Well, the point of the matter isn&#8217;t much more serious than that. You may have come across the <a href="http://www.xemacs.org/" title="XEmacs editor website">XEmacs</a> 21.4 OXYMORON series of software releases, with <em>subtitles</em> such as 21.4.9 &#8220;Informed Management&#8221; and 21.4.19 &#8220;Constant Variable&#8221;. I quite like the idea of subtitles for mid-size releases, and thought that eponymous adjectives from literature (and perhaps other areas of writing, if they fit in with the spirit of the thing) would make excellent subtitles to attach to release milestones for Alexandria. Therefore, may I suggest 0.7 &#8220;Joycean&#8221;, 0.8 &#8220;Kafkaesque&#8221; and 1.0 &#8220;Shakespearean&#8221;? Other values can be filled in later, when we actually draw up a RoadMap; there are plenty more where they came from (viz <a href="http://en.wikipedia.org/wiki/List_of_eponymous_adjectives_in_English" title="List of eponymous adjectives in English">Wikipedia</a>). Either &#8220;Alexandrine&#8221; or &#8220;Aristotelian&#8221; would also make a particularly good subtitle for the 1.0 release.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gnostai.org/journal/2008/01/03/literary-eponymous-adjectives/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Alexandria&#8217;s RubyForge Tracker</title>
		<link>http://www.gnostai.org/journal/2008/01/02/alexandrias-rubyforge-tracker/</link>
		<comments>http://www.gnostai.org/journal/2008/01/02/alexandrias-rubyforge-tracker/#comments</comments>
		<pubDate>Wed, 02 Jan 2008 18:56:15 +0000</pubDate>
		<dc:creator>cathalmagus</dc:creator>
		
		<category><![CDATA[alexandria]]></category>

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

		<guid isPermaLink="false">http://www.gnostai.org/journal/2008/01/02/alexandrias-rubyforge-tracker/</guid>
		<description><![CDATA[I&#8217;m not one to complain (thinks: yes I am!), but I&#8217;m not a huge fan of Alexandria&#8217;s issue tracker at RubyForge. Not that I blame the developers who wrote it, or the site who provides it to us free of charge. I know that an over-complicated interface can overwhelm a bit of software like that, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not one to complain <em>(thinks: yes I am!)</em>, but I&#8217;m not a huge fan of <a href="http://rubyforge.org/tracker/?group_id=205" title="Alexandria Tracker">Alexandria&#8217;s issue tracker at RubyForge</a>. Not that I blame the developers who wrote it, or the site who provides it to us free of charge. I know that an over-complicated interface can overwhelm a bit of software like that, and someone is always going to be without their favourite feature. In fact, I once wrote a small issue tracker with Java Servlets (I called it Gawain, I may yet revive it in some form, perhaps in another language). It didn&#8217;t support half the things that the RubyForge Tracker does, but I liked it because I could always get my hands on exactly the data I was looking for and in exactly the format I wanted it.</p>
<p><span id="more-6"></span></p>
<p>I should clarify. For tracking a handful of bugs, maybe even a pageful, the Tracker is fine. You can see most of the status details you want in the summary list. For following up on a single bug, it&#8217;s pretty good too: it sends out notification e-mails, you can attach files, change priority&#8230;. There are a few administrative nigglesL because I came to the Alexandria project after Laurent Sansonetti left it, I&#8217;m still not on the list of developers to whom a bug can be assigned; I get two e-mails for every change on a bug I&#8217;ve been working on, one direct from the Tracker, and one from the alexandria-bugs mailing list (which also notifies me of changes to bugs I haven&#8217;t been working on). But it works okay in small scale.</p>
<p>The problem is when we have a few hundred open bugs, as happens when a project lies dormant for a year or two. Sorting them out - finding duplicates,Â  removing obsolete reports, requesting more information from poor reports - is inevitably slow because of the nature of web applications. I really want to be able to <strong>grep</strong> through the reports, assign tags to groups of them at a time, sort them according to arbitrary conditions. What I&#8217;d like is a way to take the data home with me&#8230; A few weeks ago I was almost ready to write a <em>scraper</em> application to scour the four Alexandria Trackers and save each complete bug report as YAML or XML. I may yet write it.</p>
<p>In the mean time, there&#8217;s L.C. Karssen, who&#8217;s doing the hard work of sifting out duplicates, requesting extra information, closing old reports, confirming new reports and finding new bugs - all just using the old Tracker I&#8217;ve been complaining about. And it looks very likely that he&#8217;ll be able to get us down below a single page of (50) open, relevant, real bug reports within the next few days. That should make it much easier to use the Tracker to deal with new bug reports. Thanks Lennart!</p>
<p>Then, of course, we&#8217;ll have to tackle the <a href="http://rubyforge.org/tracker/?atid=866&amp;group_id=205&amp;func=browse" title="Alexandria Tracker for Feature Requests">Feature Requests Tracker</a>, and translate some of those tickets into requirements on the <a href="http://wiki.alexandria-projects.org/wiki/Alexandria" title="Alexandria Wiki">Alexandria Wiki</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gnostai.org/journal/2008/01/02/alexandrias-rubyforge-tracker/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Requirements gathering on the Alexandria wiki</title>
		<link>http://www.gnostai.org/journal/2007/12/31/requirements-gathering-on-the-alexandria-wiki/</link>
		<comments>http://www.gnostai.org/journal/2007/12/31/requirements-gathering-on-the-alexandria-wiki/#comments</comments>
		<pubDate>Mon, 31 Dec 2007 02:27:07 +0000</pubDate>
		<dc:creator>cathalmagus</dc:creator>
		
		<category><![CDATA[alexandria]]></category>

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

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

		<guid isPermaLink="false">http://www.gnostai.org/journal/2007/12/31/requirements-gathering-on-the-alexandria-wiki/</guid>
		<description><![CDATA[Joseph Method has set up an Alexandria wiki, and I thought I&#8217;d kick things off by writing down a few core requirements for Alexandria. Well, I have to start somewhere! I&#8217;m going to try to keep the core of these requirements slimmed down. There will be other pages for the other scenarios in which Alexandria [...]]]></description>
			<content:encoded><![CDATA[<p>Joseph Method has set up an <a href="http://wiki.alexandria-projects.org/wiki/Alexandria" title="Alexandria wiki main page">Alexandria wiki</a>, and I thought I&#8217;d kick things off by writing down a few <a href="http://wiki.alexandria-projects.org/wiki/CoreRequirements" title="Core requirements wiki page">core requirements</a> for Alexandria. Well, I have to start somewhere! I&#8217;m going to try to keep the <em>core</em> of these requirements slimmed down. There will be other pages for the other scenarios in which Alexandria might be used: for example, whether or not you&#8217;ve read a book belongs in the <a href="http://wiki.alexandria-projects.org/wiki/HomeUserRequirements" title="Home user requirements wiki page">Home User</a> scenario, as does the current rating system. (It&#8217;s pretty clear that writing these things down will modify our thinking about the domain.) It&#8217;s a different picture entirely for, say, a Lending Library or a Second-Hand Bookshop. I&#8217;ll add a couple of new pages for more specific requirements soon.</p>
<p><span id="more-5"></span></p>
<p>Apart from looking through the Alexandria manual to find the current described features of the program, I&#8217;m going to go through the <a href="http://rubyforge.org/pipermail/alexandria-list/" title="alexandria-list archives">mailing list archives</a> for various discussions of requirements. Alexandria users can help too: <a href="http://wiki.alexandria-projects.org/register" title="Alexandria wiki registration page">register on the wiki</a> (it&#8217;s very quick) and add your requirements (in an orderly fashion, of course). I&#8217;ll probably be running around re-organizing things anyway, hopefully making it easier for me to formulate a detailed statement of requirements. I think anonymous edits are still possible at the moment, but it&#8217;s better if you have an identifiable voice for your requested features. It&#8217;s better for the developers too, since we get a handle on you as a user and can see all the requirements  you have as part of a big picture.</p>
<p>This is all very new and experimental for me; I&#8217;ve never helped to run a wiki before. With any luck, it won&#8217;t all end in chaos. (I&#8217;m such an optimist!)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gnostai.org/journal/2007/12/31/requirements-gathering-on-the-alexandria-wiki/feed/</wfw:commentRss>
		</item>
		<item>
		<title>UML Modeling with Gaphor</title>
		<link>http://www.gnostai.org/journal/2007/12/30/uml-modeling-with-gaphor/</link>
		<comments>http://www.gnostai.org/journal/2007/12/30/uml-modeling-with-gaphor/#comments</comments>
		<pubDate>Sun, 30 Dec 2007 21:56:44 +0000</pubDate>
		<dc:creator>cathalmagus</dc:creator>
		
		<category><![CDATA[alexandria]]></category>

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

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

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

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

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

		<guid isPermaLink="false">http://www.gnostai.org/journal/2007/12/30/uml-modeling-with-gaphor/</guid>
		<description><![CDATA[Alexandria is coming up to a design phase, and alongside capturing requirements the next big task will be modeling the new system. I hope we can be a bit more formal about it than is currently the case; we really need to have a few dozen core use cases before we move forward, otherwise we&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<p>Alexandria is coming up to a design phase, and alongside capturing requirements the next big task will be modeling the new system. I hope we can be a bit more formal about it than is currently the case; we really need to have a few dozen core use cases before we move forward, otherwise we&#8217;ll just be adding features in an ad-hoc way, which is part of what&#8217;s got us into our current crisis of extensibility. After turning our vague statements of requirements into use cases, we should probably then proceed to domain modeling and sequence modeling.</p>
<p>So, we&#8217;ll need a modeling program, and we should probably just choose a single one which we can all use. <a href="http://gaphor.devjavu.com/" title="Gaphor homepage">Gaphor</a> is a clean and simple UML modeling program for GNOME. It is, naturally, free software,Â  released under the GNU GPL. It&#8217;s written in Python, is easy enough to install and very easy to use. It supports class, sequence and communication diagrams: the main diagrams we&#8217;ll be interested in.</p>
<p><span id="more-4"></span></p>
<p><a href="/journal/wp-content/2007/12/gaphor-0.12.4-screenshot.png" title="Full-size Gaphor screenshot"><img src="/journal/wp-content/2007/12/gaphor-0.12.4-screenshot--small.png" alt="Screenshot of Gaphor 0.12.4 editing a simple example UML model of proposed ISBN handling in Alexandria" align="middle" border="0" height="359" hspace="0" vspace="0" width="512" /></a></p>
<p>It also produces nice, sharp, easy-to-read diagrams which can be exported to SVG or PNG.</p>
<p><img src="/journal/wp-content/2007/12/gaphor-example-handling-isbns.png" alt="Gaphor example: Handling ISBNs" align="middle" border="0" height="388" hspace="0" vspace="0" width="457" /></p>
<p>It also has a plugin system (and docs to help you write new plugins) if we ever need extra features. If I could magically add a major feature, it would be a plugin to allow collaborative editing of models (rather like <a href="http://gobby.0x539.de/trac/" title="Gobby homepage">Gobby</a> does with source files). In the mean time, we can just push <a href="/journal/wp-content/2007/12/AlexandriaBooks.gaphor" title="AlexandriaBooks gaphor file">gaphor files</a> around via Jabber file transfer and use chat to discuss the changes we&#8217;re making. The gaphor file format is stable and XML-based (so it can be stored in subversion).</p>
<p>Like the ISBN example above, I&#8217;m going to be coming up with a few design sketches to suggest how various parts of Alexandria&#8217;s domain might be modeled. But they&#8217;re just preliminary ideas; we need to make sure that our eventual model matches the use cases rather than the other way around.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gnostai.org/journal/2007/12/30/uml-modeling-with-gaphor/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Getting started with Alexandria development</title>
		<link>http://www.gnostai.org/journal/2007/12/28/getting-started-with-alexandria-development/</link>
		<comments>http://www.gnostai.org/journal/2007/12/28/getting-started-with-alexandria-development/#comments</comments>
		<pubDate>Fri, 28 Dec 2007 05:25:54 +0000</pubDate>
		<dc:creator>cathalmagus</dc:creator>
		
		<category><![CDATA[alexandria]]></category>

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

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

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

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

		<guid isPermaLink="false">http://www.gnostai.org/journal/?p=3</guid>
		<description><![CDATA[Alexandria is a GNOME application written in Ruby. It is free software developed primarily for GNU/Linux systems, and is also developed on GNU/Linux. Almost everything you need for developing Alexandria will be available for easy installation on most distributions. This is a guide to setting up your system so you can work with the Alexandria [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://alexandria.rubyforge.org/" title="Alexandria web site">Alexandria</a> is a GNOME application written in Ruby. It is free software developed primarily for GNU/Linux systems, and is also developed on GNU/Linux. Almost everything you need for developing Alexandria will be available for easy installation on most distributions. This is a guide to setting up your system so you can work with the Alexandria source code.</p>
<p><span id="more-3"></span></p>
<p>If you just want to have a look at the code, you could simply download the <a href="http://http://rubyforge.org/frs/download.php/29501/alexandria-0.6.2.tar.gz" title="Source archive for Alexandria 0.6.2">latest tar.gz package</a>. However, if you want to keep up to date with the developers as they work, you should do a check-out of the <strong>Subversion</strong> repository. If you don&#8217;t know anything about Subversion, there is an excellent introduction in the free book <a href="http://svnbook.red-bean.com/en/1.4/index.html" title="Version Control with Subversion">Version Control with Subversion</a>. But, to begin with, you can just install the <tt>subversion</tt> package and issue the following command from the terminal (all on one line):</p>
<p><tt>svn checkout svn://rubyforge.org/var/svn/alexandria/trunk/alexandria alexandria</tt></p>
<p>This will create a new <tt>alexandria</tt> directory containing the current source of the main development branch of Alexandria, we often call this <strong>alexandria SVN</strong> for short.. If you just unpacked the tar.gz archive, the directory will be called <tt>alexandria-0.6.2</tt> but in any case I shall refer to it as the <em>alexandria</em> directory.</p>
<p>Move into that directory and look around. In particular, the <tt>INSTALL</tt> file describes the various dependencies of Alexandria. The main requirements are, of course <tt>ruby</tt> (Ruby 1.8 in particular) and <tt>ruby-gnome2</tt> (the bindings library which allows us to use Ruby with GTK+ and GNOME). Also required is <tt>ruby-gettext</tt> which allows the program interface to be translated into multiple human languages. Make sure you have these packages installed. If you&#8217;ve installed the binary of Alexandria already, most of the dependencies listed will have been installed automatically.</p>
<p>If you are on a Debian or Ubuntu-based system you should also install <tt>irb</tt> the Interactive Ruby shell (for experimenting with small fragments of Ruby code quickly).</p>
<p>Also in the <em>alexandria</em> directory is a <tt>Rakefile</tt> for building the code. <strong>Rake</strong> is the Ruby equivalent of <strong>make</strong>, install it with the <tt>rake</tt> package. Because Ruby is still very much a scripting language, the source files are not compiled. The building of the software only involves two stages: automatically generating some Ruby files and compiling the <strong>gettext</strong> translation files. For the latter task, you will need <tt>gettext</tt> and <tt>intltool</tt> packages, as described in the <tt>INSTALL</tt> file. Running the simple command <tt>rake</tt> in the <em>alexandria</em> directory will build the software.</p>
<p>To install the development version of Alexandria, run the command <tt>rake install</tt> as <tt>root</tt>: either quickly <tt>su</tt> to <tt>root</tt> and issue the command, run <tt>su -c &#8216;rake install&#8217;</tt> or, more usually, run <tt>sudo rake install</tt>.</p>
<p>You should now be able to see the Ruby files, program resources and documentation being installed. Note that if you&#8217;re on a Debian or Ubuntu-based system, <tt>rake install</tt> will install the Ruby files in <tt>/usr/local/lib/site_ruby/1.8/</tt> which is different from the location used by the <strong>deb</strong> installation. This is because of the way Debian handles Ruby. It means that you may end up with two competing copies of Alexandria on your system, and the development version will usually be detected first. Unfortunately, there is no <tt>rake uninstall</tt> task, but you can just remove all the alexandria files from <tt>/usr/local/lib/site_ruby/1.8/</tt> by hand with: <tt>sudo rm -rf /usr/local/lib/site_ruby/1.8/alexandria*</tt> if you want to remove the development version.</p>
<p>Once you have installed Alexandria, you can launch it with the command <tt>alexandria</tt> or using <tt>alexandria -<!-- -->-debug</tt> if you want to see more logging information. To see what another translation of the Alexandria looks like you can set the <tt>LANG</tt> environment variable as you launch the program: <tt>LANG=nl_NL.utf8 alexandria</tt></p>
<p>You are now working with the development version of Alexandria.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gnostai.org/journal/2007/12/28/getting-started-with-alexandria-development/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
