<?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>DMDirc Development Blog</title>
	<atom:link href="http://blog.dmdirc.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.dmdirc.com</link>
	<description>DMDirc Development Blog</description>
	<pubDate>Fri, 19 Sep 2008 14:35:33 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<item>
		<title>DMDirc 0.6</title>
		<link>http://blog.dmdirc.com/2008/09/13/dmdirc-06/</link>
		<comments>http://blog.dmdirc.com/2008/09/13/dmdirc-06/#comments</comments>
		<pubDate>Fri, 12 Sep 2008 23:08:51 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
		
		<category><![CDATA[News]]></category>

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

		<guid isPermaLink="false">http://blog.dmdirc.com/?p=174</guid>
		<description><![CDATA[Edit: It was recently brought to our attention that the OS X version previously released contained a bug that prevented the client from starting. This bug has now been fixed in the version available from Google code, we urge OS X users who previously downloaded and tried to use this version of DMDirc to try [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>Edit:</strong> It was recently brought to our attention that the OS X version previously released contained a bug that prevented the client from starting. This bug has now been fixed in the version available from Google code, we urge OS X users who previously downloaded and tried to use this version of DMDirc to try again with the fixed version.</em></p>
<p>After a long period of testing we have finally released DMDirc 0.6, and we think this is the best version of DMDirc to date with <a href="http://www.dmdirc.com/en/documentation/releases.0.6.changelog">over 250 feature additions, bug fixes and other changes</a>, including:</p>
<ul>
<li>Themes system revamp to allow multiple themes to be loaded at a time
<li>Completely redesigned Actions Manager and Actions Editor dialog (see <a href="http://blog.dmdirc.com/2008/09/07/new-action-uis/">our previous coverage</a> of these)
<li>New installer for OS X
<li>The Linux installer can now be used for BSD-like OSs that have Java pre-installed
<li>The Linux installer can now be used on Open Solaris
<li>The automatic updater can now update plugins
</ul>
<p>As of DMDirc 0.6 we now support running on more platforms than before: we have installers for Linux, BSD, Solaris, OS X and Windows, as well as a standalone Jar file for any other platforms that we don&#8217;t currently provide an installer for.</p>
<p>Users of DMDirc 0.5.6 (or the recent unstable releases) should be prompted by the updater (if enabled) to update to the latest version of DMDirc. Alternatively, you can visit our <a href="http://www.dmdirc.com/downloads">downloads page</a> to grab the latest version yourself.</p>
<p>With DMDirc 0.6 (finally!) released we are looking forward to our next release, DMDirc 0.6.3. This will include support for SOCKS proxies, improved support for SSL Servers, a nicer looking Preferences dialog, server lists and more.</p>
<p>As always, we welcome bug reports and feature requests on our <a href="http://bugs.dmdirc.com/">issue tracker</a>, <a href="irc://irc.quakenet.org/dmdirc">irc channel</a> or as comments on this post.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2008/09/13/dmdirc-06/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New Action UIs</title>
		<link>http://blog.dmdirc.com/2008/09/07/new-action-uis/</link>
		<comments>http://blog.dmdirc.com/2008/09/07/new-action-uis/#comments</comments>
		<pubDate>Sun, 07 Sep 2008 21:57:32 +0000</pubDate>
		<dc:creator>greboid</dc:creator>
		
		<category><![CDATA[Actions]]></category>

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

		<guid isPermaLink="false">http://blog.dmdirc.com/?p=109</guid>
		<description><![CDATA[In DMDirc 0.6, we have made some back-end improvements to the functionality actions groups which allow authors of action packs to specify meta-data such as a description of the pack, and also list the settings available. We obviously wanted to include this new information into the actions UI, and we were aware that the current [...]]]></description>
			<content:encoded><![CDATA[<p>In DMDirc 0.6, we have made some back-end improvements to the functionality actions groups which allow authors of action packs to specify meta-data such as a description of the pack, and also list the settings available. We obviously wanted to include this new information into the actions UI, and we were aware that the <a href="http://blog.dmdirc.com/2007/05/25/actions-now-with-added-ui/">current actions editor</a> wasn&#8217;t as user-friendly as it could be, so we took the opportunity to redesign and rewrite the actions UIs.</p>
<p><a href="http://blog.dmdirc.com/wp-content/uploads/2008/08/dmdirc-new-actionsmanager.png"><img src="http://blog.dmdirc.com/wp-content/uploads/2008/08/dmdirc-new-actionsmanager-300x256.png" alt="" title="New actions manager UI" width="225" height="192" class="alignleft size-medium wp-image-128" /></a>As you can see from the screenshot we now show an info blurb, version and author for all action groups that provide them. In the future, we plan to allow users to edit action groups&#8217; meta-data from inside the UI. This will make it a lot easier for end users to create action packs and make them available to a wider audience through our <a href="http://addons.dmdirc.com/">addons site</a>, but for the moment only the name of the group is editable. </p>
<p>Settings for a particular group are now displayed underneath the group and are editable using the same components as the preferences dialog. Exposing these to the end user has added a lot more flexibility to actions and should enable them to be used in much nicer ways.</p>
<p>Finally, in the previous incarnation &#8216;wrapped&#8217; actions groups (such as profiles and aliases) were visible but appeared empty. This was rather odd behaviour, so we remedied this and now show the contents of all groups. This allows users to edit the automatically created actions, so they can see how they work or use more advanced features that the wrapper UI doesn&#8217;t expose.  The new UI is also a lot more pleasing to the eye.</p>
<p><a href="http://blog.dmdirc.com/wp-content/uploads/2008/09/aed.png"><img src="http://blog.dmdirc.com/wp-content/uploads/2008/09/aed-300x223.png" alt="" title="DMDirc 0.6 Actions Editor" width="225" height="167" class="alignleft size-medium wp-image-163" /></a>Of course, the Actions Manager is only half of the actions UI; the Actions Editor has also undergone a revamp in 0.6. In DMDirc 0.5.5, we introduced <a href="http://blog.dmdirc.com/2007/10/25/condition-trees-aka-making-actions-even-more-incomprehensible/">Condition trees</a>, but at the time they were only usable if you manually edited the action&#8217;s file in your profile, something which we don&#8217;t expect normal users to do. The new Actions Editor UI exposes condition trees and allows for easy selection of &#8216;AND&#8217; and &#8216;OR&#8217; trees, which should bring the added power of condition trees to more users.</p>
<p>As with the Actions Manager, we think the new Action Editor is much more user friendly than its previous version. You can, for instance, now see all the information about the action on one screen and edit them easily without having to switch between tabs. Of course, we&#8217;re always willing to improve further, so if you have any suggestions, please leave a comment!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2008/09/07/new-action-uis/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Improving the development process</title>
		<link>http://blog.dmdirc.com/2008/08/31/improving-the-development-process/</link>
		<comments>http://blog.dmdirc.com/2008/08/31/improving-the-development-process/#comments</comments>
		<pubDate>Sun, 31 Aug 2008 17:09:16 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
		
		<category><![CDATA[General]]></category>

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

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

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

		<guid isPermaLink="false">http://blog.dmdirc.com/?p=70</guid>
		<description><![CDATA[One of the things that makes DMDirc good (in my opinion) is that the three main developers actively use it pretty much all day, every day. We are all very, very heavy IRC users (unlike the author of mIRC for instance, who admits to only occasionally using IRC), which is what led to us [re]starting [...]]]></description>
			<content:encoded><![CDATA[<p>One of the things that makes DMDirc good (in my opinion) is that the three main developers actively use it pretty much all day, every day. We are all very, very heavy IRC users (unlike the author of mIRC for instance, who <a href="http://www.mirc.com/khaled/faq.html">admits to only occasionally using IRC</a>), which is what led to us [re]starting DMDirc development — when we all switched to Linux, we couldn&#8217;t find an existing client that any of us really liked.</p>
<p>From the start we wanted DMDirc to be an excellent client, and we quickly got it into a usable state (I have logs showing me using it in early May 2007).  To help us do this we registered with Google Code, which provided us with a Subversion repository, download hosting and an issue tracker.</p>
<p>In addition to the tools on Google Code we also wrote a service that received error reports from DMDirc clients, and allowed developers to browse them using a web interface. This system never really worked too well; it meant that we in effect had two systems for tracking errors, the automated error system (which was checked manually, and therefore quite infrequently) and the user-facing Google Code issue tracker. The Google Code issue tracker also had quite a few issues of its own [ba-dum-tish] that posed problems for us: we didn&#8217;t have much control over it, Google were slow to improve it, and it didn&#8217;t allow for dependencies or private issues. The lack of private issues was the reason we felt the need to have two separate systems at the time — automatically reported errors may in some cases contain private information, so we can&#8217;t show them publicly.</p>
<p>Sometime just before DMDirc 0.5.5 was released, we decided to start using <a href="http://mantisbt.org">Mantis</a> as our primary issue tracker. Mantis, whilst not perfect, gave us the control we wanted — it&#8217;s written in PHP (which, like Java, we all know very well), and is easy enough to modify. We imported all of our existing issues from Google Code, using a <a href="http://bugs.dmdirc.com/patches/1.1.0/IssueScrape.py">Python script</a> (yay for multi-language proficiency!) to screenscrape the website and build an XML file, and then a <a href="http://bugs.dmdirc.com/patches/1.1.0/import.phps">PHP script</a> to read the XML file and import the issues into Mantis. With the issues imported, we set about modifying Mantis to better suit our needs.</p>
<p>We (well, Chris and I) had got quite used to using the issue &#8216;grid view&#8217; offered by Google code, so one of the first things we did when switching to Mantis was implementing our <a href="http://bugs.dmdirc.com/view_grid_page.php">own version</a> of it. We also improved the error reporting backend to raise new Mantis issues (marked as private, of course). Later on, we also enabled SVN integration, which initially meant writing a script to parse e-mails from Google Code (where our SVN repository was still hosted) and passing the information on to Mantis for it to use. After a while, we modified the integration to include links to <a href="http://fisheye.dmdirc.com">our Fisheye instance</a>, and also map Subversion users to Mantis users in order to add comments with the appropriate username instead of just &#8216;SVN user&#8217;.</p>
<p>More recently, we&#8217;ve improved the Fisheye aspect of the integration dramatically; we now access Fisheye and include its representation of the changes directly in Mantis, allowing you to see a list of affected files and even view diffs of the changes without leaving the issue page. We also parse any stack traces in the issue description, and automatically link relevant lines to the Fisheye view of the specified file and revision, if the information is available. You can see an example of both of these modifications in <a href="http://bugs.dmdirc.com/view.php?id=1330">this issue</a>.</p>
<p>Now, as I mentioned above, we are all heavy IRC users so having to periodically check Mantis for new bugs wasn&#8217;t very appealing to us, so we modified it some more so that it communicated with an IRC bot we have which is designed to relay notifications. Mantis tells us everything that happens — new issues, edited issues, property changes on issues — anything that happens there, we instantly know about it.</p>
<p>This setup worked well for us for about 4 months, after which we decided to switch over to using a self-hosted SVN Repository, which opened up even more possibilities. We added post-commit hooks to replace the email-parsing hacks for Mantis support, enabled reporting of commits to IRC, and created a pre-commit hook to make sure that every commit was linked to an issue on Mantis.</p>
<p>Not long after that we discovered and implemented <a href="http://www.atlassian.com/software/bamboo/">Bamboo</a> into our development process. Bamboo is a <a href="http://en.wikipedia.org/wiki/Continuous_Integration">Continuous Integration</a> server, which means that every time we commit something to the trunk (or active branches), it will rebuild the project on our server, run our collection of unit tests and then publish and store the results. Bamboo also notifies us via Jabber if you cause a build to fail. Of course this wasn&#8217;t quite perfect, and after a short while we discovered a <a href="http://confluence.atlassian.com/display/BAMEXT/Pre-Post+Build+Command+Plugin">plugin</a> that can execute post-build scripts. One Bash script later and Bamboo was reporting to IRC like everything else. We also, of course, integrated Bamboo with Mantis. If you check <a href="http://bugs.dmdirc.com/view.php?id=1330">this issue</a> again you will see that the results of the build from Bamboo are also reported under the the commit that triggered it.</p>
<p>As mentioned before, we have a collection of <a href="http://en.wikipedia.org/wiki/Unit_testing">unit tests</a> to make sure things work as expected. Every so often we generate <a href="http://reports.dmdirc.com/frame-clover.html">Clover reports</a> to show how much code coverage we have, and in the last month we have also discovered and began using the <a href="http://fest.easytesting.org/">FEST</a> Swing library to allow us to start unit testing the DMDirc GUI.</p>
<p>So as you can see, what we have now is a very tightly integrated system to help ensure that DMDirc is a quality product. Everything reports to IRC so we know as soon as things happen, our issue tracker is almost omnipotent in that it can tell nearly everything about an issue from being raised to being fixed, and to top it all off, we have <a href="http://www.nagios.org/">Nagios</a> running and monitoring it all for us (and of course, this reports to IRC also!)</p>
<p>Of course this setup wouldn&#8217;t be possible if it wasn&#8217;t for a few choice products provided for free — <a href="http://mantisbt.org">Mantis</a>, <a href="http://www.atlassian.com/software/fisheye/">Fisheye</a>, <a href="http://www.atlassian.com/software/bamboo/">Bamboo</a>, <a href="http://www.atlassian.com/software/clover">Clover</a> and many others. We would like to thank the developers of these products for helping us make DMDirc great.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2008/08/31/improving-the-development-process/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Introducing the intelligent IRC client</title>
		<link>http://blog.dmdirc.com/2008/08/07/introducing-the-intelligent-irc-client/</link>
		<comments>http://blog.dmdirc.com/2008/08/07/introducing-the-intelligent-irc-client/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 22:09:04 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[General]]></category>

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

		<guid isPermaLink="false">http://blog.dmdirc.com/?p=65</guid>
		<description><![CDATA[If you&#8217;re reading this via our website, you may have already noticed that DMDirc has undergone a small re-branding. We now use the tagline &#8220;the intelligent IRC client&#8221; across all the DMDirc sites (apart from the addons site which is undergoing an overhaul — you can take a sneak peak at what it&#8217;s going to [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re reading this via our website, you may have already noticed that DMDirc has undergone a small re-branding. We now use the tagline &#8220;the intelligent IRC client&#8221; across all the DMDirc sites (apart from the <a href="http://addons.dmdirc.com/">addons site</a> which is undergoing an overhaul — you can take a sneak peak at what it&#8217;s going to be like over at the <a href="http://addons-dev.dmdirc.com/">development site</a>). This tagline has also found its way into the &#8216;About&#8217; dialog in recent nightly builds.</p>
<p>Why &#8220;the intelligent IRC client&#8221;? Well, we think DMDirc&#8217;s built-in &#8216;intelligence&#8217; is the most significant aspect that sets it apart from other clients. We&#8217;ve yet to see another IRC client that has tab-completion anywhere near the quality of DMDirc&#8217;s, or that parses links as well as we do. We have more enhancements coming for both of these areas, too, as well as plans to make other DMDirc features more &#8216;intelligent&#8217;.</p>
<p>While the two areas mentioned above may not seem ground-shatteringly important, they improve the usability of the client quite a lot. The difference they make is most noticeable when you use another IRC client, and find that you can no longer tab-complete command names, or that a link in the topic includes a closing quotation mark when you click on it, which means you have to do something extra (open the manual to look up the command name, manually copy the URL or modify it in the browser, etc) in order to do/find out what you want, instead of it just working.</p>
<p>DMDirc 0.6 (coming soon; we&#8217;re going to be pushing out an alpha version this weekend) features a lot of enhancements to the &#8216;intelligent&#8217; aspects of DMDirc, some of which we&#8217;ve <a href="http://blog.dmdirc.com/2008/02/13/even-more-intelligent-tab-completion/">discussed previously</a>. But, as always, we&#8217;d love to hear from you if you have any suggestions on how we could make DMDirc more intelligent. Feel free to leave a comment on this post, <a href="http://bugs.dmdirc.com/bug_report_advanced_page.php">create a new issue</a> on the issue tracker, join us in <a href="irc://irc.quakenet.org/dmdirc">#DMDirc on Quakenet</a>, or use the feedback form found in the Help menu in the client itself.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2008/08/07/introducing-the-intelligent-irc-client/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Looking ahead to DMDirc 0.7</title>
		<link>http://blog.dmdirc.com/2008/07/30/looking-ahead-to-dmdirc-07/</link>
		<comments>http://blog.dmdirc.com/2008/07/30/looking-ahead-to-dmdirc-07/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 11:44:17 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.dmdirc.com/?p=61</guid>
		<description><![CDATA[With DMDirc 0.6 coming soon (hopefully — we still have a few bits and pieces to finish off), we&#8217;re starting to look ahead towards the next major branch: DMDirc 0.7.  The 0.7 branch has several major new features, namely sever lists and a revamped update system, both of which have extensive core and UI [...]]]></description>
			<content:encoded><![CDATA[<p>With DMDirc 0.6 coming soon (hopefully — we still have a few bits and pieces to finish off), we&#8217;re starting to look ahead towards the next major branch: DMDirc 0.7.  The 0.7 branch has several major new features, namely sever lists and a revamped update system, both of which have extensive core and UI components.  There are also a large number of smaller features and enhancements: we have over 80 issues open for the 0.7 branch, and this number is growing fairly steadily.</p>
<p>Looking back on the 0.6 branch, one of the things we&#8217;d like to change most is the length of time between each release. Ignoring security and bug fixes, there was a four month gap between 0.5 and 0.5.5, and it looks like DMDirc 0.6 will be released between six and seven months after that. This isn&#8217;t because we&#8217;re getting lazy, or because we care less about DMDirc than we did when we released the first few versions (which were all inside of the same month); it&#8217;s because we&#8217;re implementing more features, fixing more bugs, and doing more behind-the-scenes work (improving the DMDirc code base) than we have in previous releases.  To combat this somewhat, we&#8217;re aiming to make three releases as part of the 0.7 development series - DMDirc 0.6.3, 0.6.6 and 0.7. We&#8217;ve allocated issues to each release to try and balance the time it will take (DMDirc 0.5.5 wasn&#8217;t a pre-planned release and, as you can tell from the timing, didn&#8217;t split the workload too well), so hopefully we&#8217;ll be able to make releases somewhat more frequently than we have been.</p>
<p>Pre-planning these sub-releases has also enabled us to organise issues better so that we&#8217;re working on (and releasing) related features at the same time. The rough focus of each release is described below. Note that these are just the major, overarching themes; each release also contains a good helping of smaller, independent enhancements.</p>
<ul>
<li>DMDirc 0.6.3: Server lists, input/command improvements, plugin improvements</li>
<li>DMDirc 0.6.6: Updater overall, installer and launcher improvements</li>
<li>DMDirc 0.7: Channel and general window/UI improvements</li>
</ul>
<p>Of course, if you can&#8217;t wait for releases to try out all the new features, you can download a <a href="http://www.dmdirc.com/en/nightlies">nightly build</a>, which can auto-update with the latest features and bug fixes each day.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2008/07/30/looking-ahead-to-dmdirc-07/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Even more supported operating systems</title>
		<link>http://blog.dmdirc.com/2008/07/25/even-more-supported-operating-systems/</link>
		<comments>http://blog.dmdirc.com/2008/07/25/even-more-supported-operating-systems/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 21:46:50 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
		
		<category><![CDATA[BSD]]></category>

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

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

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

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

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

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

		<guid isPermaLink="false">http://blog.dmdirc.com/?p=53</guid>
		<description><![CDATA[With the upcoming version 0.6 of DMDirc (we know that it&#8217;s been a while since the last big release, we&#8217;ll blog about that soon) we have added support for even more operating systems.
As you probably know, DMDirc is written in Java which gives us a huge advantage as far as cross-platform compatibility is concerned. Java [...]]]></description>
			<content:encoded><![CDATA[<p>With the upcoming version 0.6 of DMDirc (we know that it&#8217;s been a while since the last big release, we&#8217;ll blog about that soon) we have added support for even more operating systems.</p>
<p>As you probably know, DMDirc is written in Java which gives us a huge advantage as far as cross-platform compatibility is concerned. Java runs on all the major operating systems so most of the hard work has been done for us.</p>
<p>Up to DMDirc 0.5.6 we only supported Windows and Linux and provided a separate jar-only download for other platforms. For 0.6 the supported list of operating systems has more than doubled; we now package DMDirc for:</p>
<ol>
<li>Linux</li>
<li>Windows</li>
<li>OS X</li>
<li>Open Solaris (and normal Solaris)</li>
<li>BSD (tested on PC-BSD, which is FreeBSD at the core)</li>
</ol>
<p>This pretty much covers all major non-server operating systems, which we are quite pleased about.</p>
<p>The Installer for DMDirc runs on all of the above systems (apart from OS X, which has its own installation method) and where possible can download and install Java automatically. Currently the only exception to this is BSD, where users will need to compile the jdk16 port manually — unfortunately Sun&#8217;s licensing prevents redistribution of the modified JRE used on BSD.</p>
<p>The nightly builds have been working on all of the above operating systems for a while now, and you can browse and download the installers from our <a href="http://www.dmdirc.com/en/nightlies">nightly builds</a> page.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2008/07/25/even-more-supported-operating-systems/feed/</wfw:commentRss>
		</item>
		<item>
		<title>OS X Support: Part 2</title>
		<link>http://blog.dmdirc.com/2008/06/13/os-x-support-part-2/</link>
		<comments>http://blog.dmdirc.com/2008/06/13/os-x-support-part-2/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 18:33:45 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
		
		<category><![CDATA[Installer]]></category>

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

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

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

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

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

		<category><![CDATA[os x]]></category>

		<guid isPermaLink="false">http://blog.dmdirc.com/?p=52</guid>
		<description><![CDATA[As previously mentioned, once Apple released Java6 for OS X I set about updating the scripts we use for building the installers and nightlies so that we could support OS X officially for DMDirc 0.6.
To do this we needed to be able to create a DMG file to distribute it in, and we wanted this [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.dmdirc.com/2008/03/06/os-x-support/">As previously mentioned</a>, once Apple released Java6 for OS X I set about updating the scripts we use for building the installers and nightlies so that we could support OS X officially for DMDirc 0.6.</p>
<p>To do this we needed to be able to create a DMG file to distribute it in, and we wanted this to be done by our current build scripts. As you may be aware, we do all of our development on Ubuntu Linux (which we also use on the DMDirc build/web server) so our current build scripts are a bunch of bash scripts that build the various installers (.run files for Linux, and .exes for Windows).</p>
<p>Other projects exist which distribute their cross-platform releases on Linux, OS X and Windows, so I looked at the build processes for both Firefox and Inkscape which both have apple releases. Unfortunately both of these projects appear to use an Apple machine to create the releases. This roughly translated to the following:</p>
<pre>
	# DMDirc-dmg contains the files we want to put in the dmg
	hdiutil create -volname "DMDirc" -fs HFS+ -srcfolder DMDirc-dmg -format UDRW DMDirc.RW.dmg
	hdiutil attach DMDirc.RW.dmg
	bless -openfolder /Volumes/DMDirc
	hdiutil detach /Volumes/DMDirc
	hdiutil convert DMDirc.RW.dmg -format UDZO -imagekey zlib-level=9 -o DMDirc.dmg
</pre>
<p>Which, while it does work (and is what we use if the installer is being built on OS X), wasn&#8217;t an acceptable solution as it relied on an OS X install.</p>
<p>I then discovered <a href="http://www.shrewdlogic.com/wiki/AppleDMGUnderLinux">a wiki page</a> which describes a method that works under Linux. After compiling a Linux-compatible version of Apple&#8217;s <code>mkhfs</code> program we could now do something along the lines of:</p>
<pre>
	# DMDirc-dmg contains the files we want to put in the dmg
	SIZE=$((`du -sb DMDirc-dmg | awk '{print $1}'`  + 10))
	if [ ${SIZE} -lt 4194304 ]; then
		echo "Size is less than 4MB"
		SIZE=4194304;
	fi;
	dd if=/dev/zero of=DMDirc.img bs=${SIZE} count=1
	mkfs.hfsplus -v 'DMDirc' DMDirc.img

	mkdir DMDirc.img-mounted
	mount DMDirc.img-mounted
	MOUNTRES=${?}
	if [ ${MOUNTRES} -ne 0 ]; then
		# Try using full parameters - could be running as root.
		mount -t hfsplus -o loop DMDirc.img DMDirc.img-mounted
		MOUNTRES=${?}
	fi;
	if [ ${MOUNTRES} -ne 0 ]; then
		echo "Unable to mount, need root access or an fstab entry like:"
		echo "${PWD}/DMDirc.img ${PWD}/DMDirc.img-mounted auto users,noauto,loop 0 0"
		exit 1;
	fi;
	mv -fv $DMDirc-dmg/* DMDirc.img-mounted
	mv -fv DMDirc-dmg/.[A-Za-z]* DMDirc.img-mounted
	umount DMDirc.img-mounted
	mv DMDirc.img DMDirc.dmg
</pre>
<p>This was an improvement, as images could now be created under Linux, however it still also had lots of problems:</p>
<ul>
<li>images have to be at least 4MB (compared to 1.3mb when created using the OS X method),
<li>they&#8217;re created read-write (compared to read-only when created using the OS X method), and
<li>they do not auto-open when mounted (the OS X method can &#8220;bless&#8221; the image).
</ul>
<p>After a short while, I discovered <a href="http://gentoo-wiki.com/HOWTO_hfsplus">the gentoo wiki</a> had a page on hfsplus, which had a version of <code>diskdev-cmds</code> that allowed for images that were as small as 512kb. Using this, I was able to edit the first part of above code to something like:</p>
<pre>
	# DMDirc-dmg contains the files we want to put in the dmg
	SIZE=$((`du -sb DMDirc-dmg | awk '{print $1}'`  + 10))
	if [ ${SIZE} -lt 524288 ]; then
		echo "Size is less than 512kb"
		SIZE=524288;
	fi;
	dd if=/dev/zero of=DMDirc.img bs=${SIZE} count=1
	mkfs.hfsplus -v 'DMDirc' DMDirc.img
	# however older versions of mkfs.hfs will only create 4mb+ sized images :/
	if [ $? -eq 1 ]; then
		if [ ${SIZE} -lt 4194304 ]; then
			echo "Size is less than 4MB"
			SIZE=4194304;
		fi;
		dd if=/dev/zero of=DMDirc.img bs=${SIZE} count=1
		mkfs.hfsplus -v 'DMDirc' DMDirc.img
	fi;
</pre>
<p>This still produced 3.8mb images, so basically had all the same problems as the old method. The actual code we used was also a lot less tidy as sometimes the size returned by <code>du</code> was too small, so the code looped increasing the size until it got a successful image.</p>
<p>However I recently discovered a much tidier method, which we now use. <code>mkisofs</code> has the ability to create and bless <code>hfs</code> images:</p>
<pre>
	# DMDirc-dmg contains the files we want to put in the dmg
	mkisofs -V 'DMDirc' -no-pad -r -apple -o "DMDirc-dmg" -hfs-bless "/Volumes/DMDirc" DMDirc.dmg
</pre>
<p>This code has the advantages of:</p>
<ul>
<li>being much tidier than the old code,
<li>not requiring a loop to get a correctly-sized image,
<li>being able to bless the image,
<li>creating a read-only image, and
<li>not requiring a patched version of Apple&#8217;s <code>diskdev-cmds</code>
</ul>
<p>All that was left now was to fix the file size (which was still 3.8 mb). To do this, I found a new project (<a href="http://github.com/planetbeing/libdmg-hfsplus"><code>libdmg-hfsplus</code></a>) which is a DMG manipulation library for Linux capable of producing compressed DMG files. I jumped at this, downloaded and compiled it, and came up with:</p>
<pre>
	# DMDirc-dmg contains the files we want to put in the dmg
	mkisofs -V 'DMDirc' -no-pad -r -apple -o "DMDirc-dmg" -hfs-bless "/Volumes/DMDirc" DMDirc.dmg.pre
	./dmg dmg DMDirc.dmg.pre DMDirc.dmg
</pre>
<p>I copied this image to an OS X machine and tried to open it and was greeted by a &#8220;CRC Mismatch&#8221; error. After digging around a little I found the cause of this (The code generates a &#8220;Master Checksum&#8221; which always seems to generate the same for converting DMGs using the code above, but OS X doesn&#8217;t like it), and produced a patched version of <code>libdmg</code>, which can be found on my personal website: <a href="http://shanemcc.co.uk/libdmg/">http://shanemcc.co.uk/libdmg/</a>, along with a script that will patch it for you if you want to compile your own.</p>
<p>With this newly patched version of the DMG binary from <code>libdmg-hfsplus</code> we are now able to produce <code>DMDirc.dmg</code> on both OS X and Linux with similar results (read-only, blessed and compressed).</p>
<p>It is also worth pointing out that Java 6 for OS X is no longer a &#8220;developer preview&#8221; only, and can be obtained by anyone with a 64-bit Intel-based Mac running 10.5.2 or later from the <a href="http://www.apple.com/support/downloads/javaformacosx105update1.html">Apple website</a>. I would imagine that it is also available using the software update facility in the Apple menu.</p>
<p>OS X nightly builds of DMDirc are available on the <a href="http://www.dmdirc.com/nightlies">nightly builds</a> page of the website.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2008/06/13/os-x-support-part-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>URL handling vulnerability; DMDirc 0.5.6 released</title>
		<link>http://blog.dmdirc.com/2008/05/22/url-handling-vulnerability-dmdirc-056-released/</link>
		<comments>http://blog.dmdirc.com/2008/05/22/url-handling-vulnerability-dmdirc-056-released/#comments</comments>
		<pubDate>Thu, 22 May 2008 19:20:47 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[News]]></category>

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

		<guid isPermaLink="false">http://blog.dmdirc.com/?p=51</guid>
		<description><![CDATA[A security vulnerability has been discovered in DMDirc. The implementation of URL handlers allow specially crafted URLs to execute arbitrary programs on the host system. Only custom URL handlers (those listed as &#8220;custom commands&#8221; in the &#8216;URL Handlers&#8217; section of the preferences panel) are vulnerable, and the user has to click on a malicious URL [...]]]></description>
			<content:encoded><![CDATA[<p>A security vulnerability has been discovered in DMDirc. The implementation of URL handlers allow specially crafted URLs to execute arbitrary programs on the host system. Only custom URL handlers (those listed as &#8220;custom commands&#8221; in the &#8216;URL Handlers&#8217; section of the preferences panel) are vulnerable, and the user has to click on a malicious URL in order for the vulnerability to be exploited. The DMDirc developers have only been successful in using the vulnerability to launch argument-less programs on Linux, but we cannot guarantee that other platforms are not affected.</p>
<p>We have backported the fix for the exploit to the DMDirc 0.5 tree, and DMDirc 0.5.6 has now been released. We highly recommend that anyone using DMDirc 0.5.5 upgrade to DMDirc 0.5.6. Nightly builds of DMDirc up to and including the build released on the 22nd of May (designated revision 4055) are also vulnerable. A nightly build containing the vulnerability fix will be available for download tonight, and we highly recommend that anyone using DMDirc nightly builds upgrade as soon as it is available.</p>
<p>DMDirc 0.5.6 may be downloaded directly using the following links: <a href="http://dmdirc.googlecode.com/files/DMDirc-0.5.6-Setup.exe">Windows installer</a>, <a href="http://dmdirc.googlecode.com/files/DMDirc-0.5.6-Setup.run">Linux installer</a>, <a href="http://dmdirc.googlecode.com/files/DMDirc-0.5.6.jar">Jar file</a>.</p>
<p>If you have any questions, please feel free to join us in #DMDirc on Quakenet (irc.quakenet.org), or leave a comment here.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2008/05/22/url-handling-vulnerability-dmdirc-056-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Website and subversion changes</title>
		<link>http://blog.dmdirc.com/2008/04/10/website-and-subversion-changes/</link>
		<comments>http://blog.dmdirc.com/2008/04/10/website-and-subversion-changes/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 19:17:45 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[General]]></category>

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

		<guid isPermaLink="false">http://blog.dmdirc.com/?p=50</guid>
		<description><![CDATA[As you may have noticed if you&#8217;re a regular visitor, the DMDirc website has recently been given a lick of paint. There is now a common header across all of the DMDirc sites (the main website, addons site, bug tracker and blog), which allows easy navigation between all aspects of the DMDirc website, and is [...]]]></description>
			<content:encoded><![CDATA[<p>As you may have noticed if you&#8217;re a regular visitor, the DMDirc website has recently been given a lick of paint. There is now a common header across all of the DMDirc sites (the main website, addons site, bug tracker and blog), which allows easy navigation between all aspects of the DMDirc website, and is a lot better looking than the old header, too!</p>
<p>We have also relocated our subversion repository from its previous home at Google&#8217;s Project Hosting service, to our own server. We made this switch because of the fairly poor uptime of Google&#8217;s offering, and the seemingly random delays between commits being made and announcement e-mails being sent. If you have the DMDirc source code checked out from our subversion repository, follow the instructions <a href="http://www.dmdirc.com/svn">here</a> to migrate to the new repository.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2008/04/10/website-and-subversion-changes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>OS X Support</title>
		<link>http://blog.dmdirc.com/2008/03/06/os-x-support/</link>
		<comments>http://blog.dmdirc.com/2008/03/06/os-x-support/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 09:41:28 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
		
		<category><![CDATA[General]]></category>

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

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

		<guid isPermaLink="false">http://blog.dmdirc.com/2008/03/06/os-x-support/</guid>
		<description><![CDATA[Now that Apple have re-released their &#8216;developer preview&#8217; of Java 6, we can begin work on improving DMDirc&#8217;s compatibility with OS X. Currently the release only works on 64-bit Intel processors (Xeons or Core2Duos - not CoreDuos, CoreSolos or PowerPCs) running Leopard. They had previously released a developer preview for Tiger, but we do not [...]]]></description>
			<content:encoded><![CDATA[<p>Now that Apple have re-released their &#8216;developer preview&#8217; of Java 6, we can begin work on improving DMDirc&#8217;s compatibility with OS X. Currently the release only works on 64-bit Intel processors (Xeons or Core2Duos - not CoreDuos, CoreSolos or PowerPCs) running Leopard. They had previously released a developer preview for Tiger, but we do not have access to it, so are unable to tell how well it works with DMDirc (if at all).</p>
<p>If your machine fits the bill, you can download the developer preview from the Apple Developer site:</p>
<ul>
<li>Go to <a href="http://www.apple.com/java">http://www.apple.com/java</a></li>
<li>Click on &#8220;Java Downloads&#8221;</li>
<li>Click on &#8220;Java SE 6 Developer Preview&#8221; &mdash; <em>This will redirect you to the ADC site.</em></li>
<li>Login to the ADC site (<em>you may need to register first.</em>)</li>
<li>Click on &#8220;Downloads&#8221;</li>
<li>Click on &#8220;Java&#8221; in the sidebar</li>
<li>Download the &#8220;Java SE 6 Developer Preview&#8221;</li>
<li>Install</li>
</ul>
<p>Once you have the developer preview installed, you can download a nightly build of DMDirc from <a href="http://www.dmdirc.com/nightlies">http://www.dmdirc.com/nightlies</a> or you can build your own by checking out the source code from our subversion repository (if you have the developer tools installed) by running the following commands:<br />
<code><br />
svn checkout http://dmdirc.googlecode.com/svn/trunk/ dmdirc<br />
cd dmdirc/trunk/installer<br />
./release.sh --target osx this<br />
mv output/DMDirc.dmg ~/Desktop/DMDirc.dmg<br />
</code></p>
<p>Now you can mount the image, and drag DMDirc to the applications folder to install it.</p>
<p>However, at the moment there is a bug with the &#8220;First Run Wizard&#8221; that we use to extract plugins and actions for the first time, so you will need to run the following in a terminal prior to running the client to make it work. This assumes that you installed DMDirc into the Applications folder and not somewhere else.<br />
<em>Edit:</em> This bug has been fixed.<br />
<code><br />
mkdir -p ~/Library/Preferences/DMDirc/<br />
cd ~/Library/Preferences/DMDirc/<br />
unzip /Applications/DMDirc.app/Contents/Resources/Java/DMDirc.jar plugins/*.jar com/dmdirc/actions/defaults/*<br />
mv com/dmdirc/actions/defaults actions<br />
rm -Rf com<br />
echo "general.firstRun=false" >> dmdirc.config<br />
echo "general.addonrevision=10" >> dmdirc.config<br />
echo "updater.enable=true" >> dmdirc.config<br />
echo "general.submitErrors=true" >> dmdirc.config<br />
</code></p>
<p>The last two lines can be omitted if you do not wish to receive update notifications, or automatically send error reports to the developers. We would however prefer you to have them both enabled.</p>
<p>Now you can enjoy DMDirc on OS X :)</p>
<p>Feel free to raise any issues on our <a href="http://bugs.dmdirc.com/">bug tracker</a>, leave a comment here, or contact us in #DMDirc on Quakenet</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2008/03/06/os-x-support/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Even more intelligent tab completion</title>
		<link>http://blog.dmdirc.com/2008/02/13/even-more-intelligent-tab-completion/</link>
		<comments>http://blog.dmdirc.com/2008/02/13/even-more-intelligent-tab-completion/#comments</comments>
		<pubDate>Wed, 13 Feb 2008 13:21:54 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[General]]></category>

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

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

		<guid isPermaLink="false">http://blog.dmdirc.com/2008/02/13/even-more-intelligent-tab-completion/</guid>
		<description><![CDATA[In DMDirc 0.5 we introduced a feature described in the release notes as &#8220;intelligent tab completion for commands&#8221; (introduced in this blog post), which allowed commands to tell the tab completer about the arguments that they&#8217;re expecting. In that incarnation, commands can specify a bunch of extra words to add, and can toggle whether the [...]]]></description>
			<content:encoded><![CDATA[<p>In DMDirc 0.5 we introduced a feature described in the release notes as &#8220;intelligent tab completion for commands&#8221; (introduced in <a href="http://blog.dmdirc.com/2007/08/18/introducing-intelligent-command-completion/">this blog post</a>), which allowed commands to tell the tab completer about the arguments that they&#8217;re expecting. In that incarnation, commands can specify a bunch of extra words to add, and can toggle whether the default tab completion targets (nicknames, channel names, command names) are used.</p>
<p>In DMDirc 0.6, we&#8217;ve taken this one step further. Commands can now specify exactly what group(s) of targets should be used - so, for example, the first argument of the <code>/ctcp</code> command will now only tab complete to nicknames and channel names (but not command names, as it would have done in DMDirc 0.5).</p>
<p>We&#8217;ve also added support for what I call &#8220;deferred intelligent tab completion&#8221;. This comes in to play with the half-dozen or so commands that take another command as one of their arguments, such as the <code>/alias</code> command, which takes an alias name and then a command to associate with that alias. So, say you want to create an alias to start a timer that will CTCP PING a certain person after five seconds. You type: <code>/ali<strong>&lt;tab&gt;</strong> ping /tim<strong>&lt;tab&gt;</strong> 1 5 /ctcp Nickname <strong>&lt;tab&gt;</strong></code>. When you hit that final tab, DMDirc suggests eight standard CTCP types (PING, FINGER, VERSION, etc&#8230;), even though the CTCP command is in the middle of a much larger command. How&#8217;s that for intelligent tab completion?</p>
<p>As far as I&#8217;m aware, no other IRC client comes close to the intelligence of DMDirc 0.5&#8217;s tab completer, so DMDirc 0.6&#8217;s puts us leagues ahead of the competition in that respect. But, as ever, we&#8217;re eager to hear any feedback or suggestions that you might have - feel free to leave a comment here, drop by #DMDirc on Quakenet to talk to us, or use the &#8220;Send feedback&#8221; feature (available in the help menu) of DMDirc 0.5.5.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2008/02/13/even-more-intelligent-tab-completion/feed/</wfw:commentRss>
		</item>
		<item>
		<title>DMDirc 0.5.5 Released</title>
		<link>http://blog.dmdirc.com/2008/01/30/dmdirc-055-released/</link>
		<comments>http://blog.dmdirc.com/2008/01/30/dmdirc-055-released/#comments</comments>
		<pubDate>Wed, 30 Jan 2008 05:41:57 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
		
		<category><![CDATA[News]]></category>

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

		<guid isPermaLink="false">http://blog.dmdirc.com/2008/01/30/dmdirc-055-released/</guid>
		<description><![CDATA[We have just released version 0.5.5 of DMDirc.  This release is an interim release between 0.5.1 and 0.6 to get some important features of 0.6 in use in the stable version.
Some of the main changes include:

 The new launchers which give the client the ability to update itself via the updater
 URL Handler to [...]]]></description>
			<content:encoded><![CDATA[<p>We have just released version 0.5.5 of DMDirc.  This release is an interim release between 0.5.1 and 0.6 to get some important features of 0.6 in use in the stable version.</p>
<p>Some of the main changes include:</p>
<ul>
<li> The new launchers which give the client the ability to update itself via the updater</li>
<li> URL Handler to allow adding support for non-http links (Eg steam://, ftp://)</li>
<li> Much improved plugin system (Plugins are now stored in jar files rather than loads of .class files)</li>
<li> Many more, read the <a href="http://code.google.com/p/dmdirc/wiki/ChangelogNoughtPointFivePointFive">changelog</a> for a full list.
</ul>
<p>The installer for DMDirc 0.5.5 can be downloaded for <a href="http://dmdirc.googlecode.com/files/DMDirc-0.5.5-Setup.exe">Windows</a> or <a href="http://dmdirc.googlecode.com/files/DMDirc-0.5.5-Setup.run">Linux</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2008/01/30/dmdirc-055-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>DMDirc 0.6: Preferences revamp</title>
		<link>http://blog.dmdirc.com/2008/01/17/dmdirc-06-preferences-revamp/</link>
		<comments>http://blog.dmdirc.com/2008/01/17/dmdirc-06-preferences-revamp/#comments</comments>
		<pubDate>Thu, 17 Jan 2008 10:09:47 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[Tech]]></category>

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

		<guid isPermaLink="false">http://blog.dmdirc.com/2008/01/17/dmdirc-06-preferences-revamp/</guid>
		<description><![CDATA[The latest major change we&#8217;ve added to the 0.6 branch is a revamp of the preferences system. The original purpose of the revamp was to shift a large amount of logic out of the UI and into the main client core, so that if/when we have additional user interfaces written, they don&#8217;t have to duplicate [...]]]></description>
			<content:encoded><![CDATA[<p>The latest major change we&#8217;ve added to the 0.6 branch is a revamp of the preferences system. The original purpose of the revamp was to shift a large amount of logic out of the UI and into the main client core, so that if/when we have additional user interfaces written, they don&#8217;t have to duplicate several hundred lines of code to produce a preferences dialog.</p>
<p>We took this opportunity to move plugin configuration settings into the main preferences dialog. This makes the configuration options for individual plugins much easier to find, and reduces the amount of clutter in the Settings menu somewhat. Here&#8217;s a screenshot of the new prefs dialog — you can see the configuration categories for all of the plugins I have installed, as well as the plugin manager itself in its newly integrated state:</p>
<p><img src='http://blog.dmdirc.com/wp-content/uploads/2008/01/dmdirc-newprefs1.png' alt='New preferences dialog' /></p>
<p>We still have some more improvements planned for the preferences dialog in 0.6, including a new component to allow easier editing of duration fields (no more entering times in milliseconds!), and better management of optional colour fields.</p>
<p>In other news, DMDirc 0.5.5&#8217;s release is drawing very close. DMDirc 0.5.5 has been the most tested release to date, and we&#8217;re working out the last few problems now. You can view the current <a href="http://code.google.com/p/dmdirc/wiki/ChangelogNoughtPointFivePointFive">changelog</a> or the draft <a href="http://code.google.com/p/dmdirc/wiki/GuideToNoughtPointFivePointFive">release notes</a> if you&#8217;re interested in the changes since DMDirc 0.5.1. If you want to try it for yourself, or want to help us test it, you can try an <a href="http://www.dmdirc.com/en/unstablereleases">unstable release</a> of DMDirc.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2008/01/17/dmdirc-06-preferences-revamp/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Installer Updates</title>
		<link>http://blog.dmdirc.com/2007/12/24/installer-updates/</link>
		<comments>http://blog.dmdirc.com/2007/12/24/installer-updates/#comments</comments>
		<pubDate>Mon, 24 Dec 2007 13:22:32 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
		
		<category><![CDATA[Installer]]></category>

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

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

		<guid isPermaLink="false">http://blog.dmdirc.com/2007/12/24/installer-updates/</guid>
		<description><![CDATA[Since DMDirc 0.5.1, the Linux and Windows installers have received several major updates.
Firstly, the Linux installer was overhauled to show all of its messages in GUI dialog boxes where possible (using kdialog under KDE or zenity under gnome). This means that users don&#8217;t need to be running the installer from a console to see what [...]]]></description>
			<content:encoded><![CDATA[<p>Since DMDirc 0.5.1, the Linux and Windows installers have received several major updates.</p>
<p>Firstly, the Linux installer was overhauled to show all of its messages in GUI dialog boxes where possible (using kdialog under KDE or zenity under gnome). This means that users don&#8217;t need to be running the installer from a console to see what went wrong. (The messages are still also relayed to the console). This update is part of the DMDirc 0.5.5 release, which should be available soon.</p>
<p>The next major change is that both the Windows and Linux installers are now capable of installing Java, either by using a JRE bundled with the installer or by downloading one from java.com.  This is a major positive step as it means that it is possible for people who don&#8217;t have Java (or have an outdated version) to use DMDirc.</p>
<p>This new functionality is in all the nightly installers from December 24th onwards, comments/bug reports etc are welcome here and on the issue tracker.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2007/12/24/installer-updates/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Condition Trees (aka: making actions even more incomprehensible)</title>
		<link>http://blog.dmdirc.com/2007/10/25/condition-trees-aka-making-actions-even-more-incomprehensible/</link>
		<comments>http://blog.dmdirc.com/2007/10/25/condition-trees-aka-making-actions-even-more-incomprehensible/#comments</comments>
		<pubDate>Thu, 25 Oct 2007 02:37:36 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[Actions]]></category>

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

		<guid isPermaLink="false">http://blog.dmdirc.com/2007/10/25/condition-trees-aka-making-actions-even-more-incomprehensible/</guid>
		<description><![CDATA[I&#8217;ve just committed changes to DMDirc that allow you to make use of what I call &#8220;condition trees&#8221; in actions. These basically allow you to specify how conditions should be evaluated. In DMDirc 0.5.1 (and earlier), all action conditions had to be true in order for the action to be executed. Condition trees allow you [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just committed changes to DMDirc that allow you to make use of what I call &#8220;condition trees&#8221; in actions. These basically allow you to specify how conditions should be evaluated. In DMDirc 0.5.1 (and earlier), all action conditions had to be true in order for the action to be executed. Condition trees allow you to use any combination of AND, OR, NOT and brackets to alter this behaviour.</p>
<p>An example condition tree looks like this: <code>(0&#038;(1|2)&#038;!(1&#038;2))</code>. The numbers refer to the outcome of the conditions (in this case my action has three conditions, which get numbered 0, 1 and 2), and &#038;, |, ! and the brackets have their expected meanings. If you&#8217;re not too fluent in boolean logic, the condition tree translates roughly as &#8220;condition 0 is true, and exactly one of conditions 1 and 2 are true&#8221;, or &#8220;condition 0 and (condition 1 XOR condition 2)&#8221; if you want.</p>
<p>At a basic level, condition trees allow you to reduce the number of actions you have (for example: if you want to do something whenever someone mentions your nickname OR when someone starts a message with &#8220;!hello&#8221;, in DMDirc 0.5.1 and below you need two actions with duplicate trigger/response/format settings; in DMDirc 0.6 you will only need one action with a condition tree set). Beyond that, condition trees allow a much closer approximation to &#8216;if&#8217; statements in scripting languages, thus enabling extremely complex conditionals without the overhead of a scripting language or the learning curve of one.</p>
<p><span id="more-42"></span></p>
<p>To pre-emptively answer a few questions:</p>
<ul>
<li>Condition Trees are called Trees because of their implementation, rather than their function. Each ConditionTree object has exactly one operation (and, or, not, noop [used for empty brackets and trees] or var [used to look up the result of a condition]), and zero (in the case of noop or var), one (in the case of not) or two (in the case of and and or) child condition trees.
<li>The title of this blog post is a reference to a question another developer asked when I was talking about condition trees - it went something like &#8220;are you *trying* to make the actions system more incomprehensible?!&#8221;; my reply: &#8220;no, I&#8217;m trying to make it more powerful; incomprehensibility is just a side-effect&#8221;.
<li>We will be having a UI for condition trees in 0.6, but we&#8217;re not entirely sure of the details yet. Stay tuned for details later in the development cycle.
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2007/10/25/condition-trees-aka-making-actions-even-more-incomprehensible/feed/</wfw:commentRss>
		</item>
		<item>
		<title>QA and 0.6</title>
		<link>http://blog.dmdirc.com/2007/10/12/qa-and-06/</link>
		<comments>http://blog.dmdirc.com/2007/10/12/qa-and-06/#comments</comments>
		<pubDate>Fri, 12 Oct 2007 14:17:54 +0000</pubDate>
		<dc:creator>Chris Northwood</dc:creator>
		
		<category><![CDATA[QA]]></category>

		<guid isPermaLink="false">http://blog.dmdirc.com/2007/10/12/qa-and-06/</guid>
		<description><![CDATA[Hi everyone,
As a newcomer to the DMDirc project, I&#8217;d thought I&#8217;d introduce myself. I&#8217;m Chris &#8216;laser&#8217; Northwood, and just before the releases of the 0.5 release candidates, I was asked by the other developers on DMDirc to become the QA Lead.
My approach will hopefully become fully implemented for the 0.6 release, and we&#8217;ll hopefully see [...]]]></description>
			<content:encoded><![CDATA[<p>Hi everyone,</p>
<p>As a newcomer to the DMDirc project, I&#8217;d thought I&#8217;d introduce myself. I&#8217;m Chris &#8216;laser&#8217; Northwood, and just before the releases of the 0.5 release candidates, I was asked by the other developers on DMDirc to become the QA Lead.</p>
<p>My approach will hopefully become fully implemented for the 0.6 release, and we&#8217;ll hopefully see this by having fewer bugfix releases (particularly, less release candidates), as I did not have enough time to implement this for the 0.5 release.</p>
<p>My experience in testing is mainly in functional testing (I&#8217;m currently working as a Test Engineer for Sophos, a computer security company), so I&#8217;m going to be mainly concerning myself with functional testing, leaving the current unit testing approach to be worked on by the other developers.</p>
<p>The biggest problem I&#8217;ve found since joining the DMDirc team is a lack of documentation, which is essential to ensure a good set of test coverage. Greboid has so far developed a pretty good functional specification for the UI, which I can work from, however there are a few other changes I&#8217;m hoping to make to ensure the focus on QA. First off is a &#8220;Requirements Dashboard&#8221;, matching new, changed and existing functionality to a specific requirement, allowing us to check dev status and test case coverage for a specific requirement (see, <a href="http://www.pling.org.uk/rc/dashboard.html" target="_blank">this mockup dashboard</a>).</p>
<p>Each requirement should have a test case to verify the functionality before testing can begin to ensure a good testing strategy to increase quality of the DMDirc releases.</p>
<p>We currently use a handful of different tools (specifically, Google Code Issue Tracker and Litmus) for QA, which although are good on their own, do not necessarily integrate together well, which is where my dashboard idea is hoping to pull them all together.</p>
<p>I&#8217;m also hoping to change the release strategy of DMDirc. Currently, testing is continuous on feature incomplete nightly builds, and release candidates are generated as soon as DMDirc is feature complete. Some of my changes are mainly semantic, but should hopefully clarify the process.</p>
<ul>
<li>Nightly builds are still generated, but these are mainly for quick testing and developers rather than the more extensive general testing.</li>
<li>Once all features for that milestone are implemented (i.e., the dev status on the dashboard is all green), and all defects raised against the last release of DMDirc fixed, a Feature Complete build is released with which the DMDirc QA team can run test cases. Additionally, any defects raised against the last release of DMDirc are verified at this point.</li>
<li>Any raised bugs are then fixed by the dev team until all test cases have been executed, and raised defects fixed, when the developers release second build to the DMDirc testers, who verify the defects raised against the previous build.</li>
<li>When the testers are satisfied that there are no unverified raised defects, and nothing caught in testing, a release candidate is published, which will allow DMDirc to be tested in user environments.</li>
<li>If any issues are raised by the release candidate, a new one is released until these are resolved.</li>
<li>When a release candidate has been released and no issues identified with it, the release candiate becomes a released final build, and developers can move on to developing new features for the next milestone.</li>
</ul>
<p>I&#8217;ve created a workflow to hopefully show how I intend this to work:</p>
<p><img src="http://www.pling.org.uk/static/requirement_driven_qa_workflow.png" title="Requirements Driven QA Workflow for DMDirc, as descriped above" alt="Requirements Driven QA Workflow for DMDirc, as descriped above" height="693" width="625" /></p>
<p>This is not too dissimilar to the current process, just slightly formalised.</p>
<p>Hopefully I&#8217;ll be able to implement this with no real trouble, which means that come 0.6, you&#8217;ll be able to see the benefits in a more bugfree release.</p>
<p>Chris Northwood,<br />
QA Lead</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2007/10/12/qa-and-06/feed/</wfw:commentRss>
		</item>
		<item>
		<title>DMDirc 0.5.1 released</title>
		<link>http://blog.dmdirc.com/2007/10/07/dmdirc-051-released/</link>
		<comments>http://blog.dmdirc.com/2007/10/07/dmdirc-051-released/#comments</comments>
		<pubDate>Sun, 07 Oct 2007 21:32:46 +0000</pubDate>
		<dc:creator>greboid</dc:creator>
		
		<category><![CDATA[News]]></category>

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

		<guid isPermaLink="false">http://blog.dmdirc.com/2007/10/07/dmdirc-051-released/</guid>
		<description><![CDATA[We have just released version 0.5.1 of DMDirc.  This is mainly a bug fix release with a couple of minor 0.6 improvements included, see the changelog for more information. 
The installer for DMDirc 0.5.1 can be downloaded for Windows or Linux.
]]></description>
			<content:encoded><![CDATA[<p>We have just released version 0.5.1 of DMDirc.  This is mainly a bug fix release with a couple of minor 0.6 improvements included, see the <a href="http://code.google.com/p/dmdirc/wiki/ChangelogNoughtPointFivePointOne">changelog</a> for more information. </p>
<p>The installer for DMDirc 0.5.1 can be downloaded for <a href="http://dmdirc.googlecode.com/files/DMDirc-0.5.1-Setup.exe">Windows</a> or <a href="http://dmdirc.googlecode.com/files/DMDirc-0.5.1-Setup.run">Linux</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2007/10/07/dmdirc-051-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>DMDirc 0.5 released</title>
		<link>http://blog.dmdirc.com/2007/09/26/dmdirc-05-released/</link>
		<comments>http://blog.dmdirc.com/2007/09/26/dmdirc-05-released/#comments</comments>
		<pubDate>Wed, 26 Sep 2007 15:28:58 +0000</pubDate>
		<dc:creator>greboid</dc:creator>
		
		<category><![CDATA[General]]></category>

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

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

		<guid isPermaLink="false">http://blog.dmdirc.com/2007/09/26/39/</guid>
		<description><![CDATA[We have just released version 0.5 of DMDirc.
0.5 has just under 100 features or improvements and 77 bug fixes since 0.4, the major additions in 0.5 are
    * Added action wrappers for aliases and performs
    * Added intelligent tab completion for commands
    * Added server settings [...]]]></description>
			<content:encoded><![CDATA[<p>We have just released version 0.5 of DMDirc.</p>
<p>0.5 has just under 100 features or improvements and 77 bug fixes since 0.4, the major additions in 0.5 are</p>
<p>    * Added action wrappers for aliases and performs<br />
    * Added intelligent tab completion for commands<br />
    * Added server settings dialog<br />
    * Added support for themes<br />
    * Added support for character transcoding<br />
    * Added support for various command-line options<br />
    * Added installers for Windows and Linux </p>
<p>See the <a href="http://code.google.com/p/dmdirc/wiki/ChangelogNoughtPointFive">changelog</a> for more information on this release. As always we recommend existing users to upgrade, and non-users to give it a go, come visit us in #DMDirc on Quakenet (see the help menu) with your feedback or just to visit.</p>
<p>0.5 can be downloaded for <a href="http://dmdirc.googlecode.com/files/DMDirc0.5_installer.exe">windows</a> and <a href="http://dmdirc.googlecode.com/files/DMDirc0.5_installer.run">linux</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2007/09/26/dmdirc-05-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Actions UI improvements, part 2</title>
		<link>http://blog.dmdirc.com/2007/09/25/actions-ui-improvements-part-2/</link>
		<comments>http://blog.dmdirc.com/2007/09/25/actions-ui-improvements-part-2/#comments</comments>
		<pubDate>Tue, 25 Sep 2007 13:38:42 +0000</pubDate>
		<dc:creator>greboid</dc:creator>
		
		<category><![CDATA[Actions]]></category>

		<guid isPermaLink="false">http://blog.dmdirc.com/2007/09/25/actions-ui-improvements-part-2/</guid>
		<description><![CDATA[Further to the changes to the actions UI previously mentioned, there are now several more enhancements: one exposing substitutions and two UIs wrapping around actions simplifying common tasks &#8212; aliases and performs.

Substitutions
In 0.4 actions substitutions were somewhat of a black art, whilst they were quite powerful, they were nearly impossible to figure out, so we [...]]]></description>
			<content:encoded><![CDATA[<p>Further to the changes to the actions UI <a href="http://blog.dmdirc.com/2007/09/02/actions-ui-improvements-part-1/">previously mentioned</a>, there are now several more enhancements: one exposing substitutions and two UIs wrapping around actions simplifying common tasks &mdash; aliases and performs.</p>
<p><span id="more-33"></span></p>
<p><strong>Substitutions</strong><br />
In 0.4 actions substitutions were somewhat of a black art, whilst they were quite powerful, they were nearly impossible to figure out, so we have added a UI component to both the actions response panel and condition editor making them much more accessible.  When editing either of these you will be able to access a full list of available substitutions, which can be added at the current cursor position either by double clicking or using the button, or added any any position you like by dragging and dropping them.</p>
<p><center><br />
<a href='http://blog.dmdirc.com/wp-content/uploads/2007/09/substitutions1.png' title='Response panel with substitutions list'><img src='http://blog.dmdirc.com/wp-content/uploads/2007/09/substitutions1.png' alt='Response panel with substitutions list' /></a></center></p>
<p><center><a href='http://blog.dmdirc.com/wp-content/uploads/2007/09/substitutions2.png' title='Condition editor with substitutions button'><img src='http://blog.dmdirc.com/wp-content/uploads/2007/09/substitutions2.png' alt='Condition editor with substitutions button' /></a>    <a href='http://blog.dmdirc.com/wp-content/uploads/2007/09/substitutions3.png' title='Condition editor with substitutions list'><img src='http://blog.dmdirc.com/wp-content/uploads/2007/09/substitutions3.png' alt='Condition editor with substitutions list' /></a><br />
</center></p>
<p><strong>Aliases</strong><br />
<center><br />
<a href='http://blog.dmdirc.com/wp-content/uploads/2007/09/aliasmanager.png' title='Alias manager'><img src='http://blog.dmdirc.com/wp-content/uploads/2007/09/aliasmanager.png' alt='Alias manager' /></a><br />
</center><br />
The alias manager can be found in the settings menu. Once opened aliases can be created for any unknown command (built in commands always take precedence), they can be specified to match a command with any amount of parameters, or a specific number or parameters.</p>
<p><strong>Perform</strong><br />
<center><br />
<a href='http://blog.dmdirc.com/wp-content/uploads/2007/09/perform.png' title='Perform panel'><img src='http://blog.dmdirc.com/wp-content/uploads/2007/09/perform.png' alt='Perform panel' /></a><br />
</center><br />
To create a new perform you must be connected to the server you wish to create a perform for, switch to the server window and go to settings, then select the perform tab.  Performs can be added to the current server or network and greatly simplify creating performs.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2007/09/25/actions-ui-improvements-part-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Feature Freeze and Release Candidates</title>
		<link>http://blog.dmdirc.com/2007/09/22/feature-freeze-and-release-candidates/</link>
		<comments>http://blog.dmdirc.com/2007/09/22/feature-freeze-and-release-candidates/#comments</comments>
		<pubDate>Sat, 22 Sep 2007 18:53:09 +0000</pubDate>
		<dc:creator>Shane</dc:creator>
		
		<category><![CDATA[Linux]]></category>

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

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

		<guid isPermaLink="false">http://blog.dmdirc.com/2007/09/22/feature-freeze-and-release-candidates/</guid>
		<description><![CDATA[DMDirc has now entered Feature Freeze for the 0.5 release (for more information about our release cycle, see this blog post).
New for this release we have decided to build Release Candidate builds approximately every day.
Release Candidate builds are just like the final release: they are installed using the new installer, and they are feature complete [...]]]></description>
			<content:encoded><![CDATA[<p>DMDirc has now entered Feature Freeze for the 0.5 release (for more information about our release cycle, see <a href="http://blog.dmdirc.com/2007/06/08/the-dmdirc-release-cycle/">this blog post</a>).</p>
<p>New for this release we have decided to build Release Candidate builds approximately every day.<br />
Release Candidate builds are just like the final release: they are installed using the new installer, and they are feature complete for 0.5. Their purpose is help discover/iron out any last bugs before we tag and release 0.5 into the wild and begin on 0.6.</p>
<p>RC1 was released yesterday (Downloads: <a href="http://dmdirc.googlecode.com/files/installer.0.5RC1.run">Linux</a> and <a href="http://dmdirc.googlecode.com/files/installer.0.5RC1.exe">Windows</a>) with RC2 hopefully being ready tonight.</p>
<p>Once we get an RC build with no apparent bugs, we will release 0.5 :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmdirc.com/2007/09/22/feature-freeze-and-release-candidates/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
