DMDircthe intelligent IRC client

DMDirc 0.6

Filed under: News, Release — Shane on September 13, 2008 @ 12:08 am — Permalink

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 again with the fixed version.

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 over 250 feature additions, bug fixes and other changes, including:

  • Themes system revamp to allow multiple themes to be loaded at a time
  • Completely redesigned Actions Manager and Actions Editor dialog (see our previous coverage of these)
  • New installer for OS X
  • The Linux installer can now be used for BSD-like OSs that have Java pre-installed
  • The Linux installer can now be used on Open Solaris
  • The automatic updater can now update plugins

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’t currently provide an installer for.

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 downloads page to grab the latest version yourself.

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.

As always, we welcome bug reports and feature requests on our issue tracker, irc channel or as comments on this post.

New Action UIs

Filed under: Actions, UI — greboid on September 7, 2008 @ 10:57 pm — Permalink

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 actions editor wasn’t as user-friendly as it could be, so we took the opportunity to redesign and rewrite the actions UIs.

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’ 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 addons site, but for the moment only the name of the group is editable.

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.

Finally, in the previous incarnation ‘wrapped’ 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’t expose. The new UI is also a lot more pleasing to the eye.

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 Condition trees, but at the time they were only usable if you manually edited the action’s file in your profile, something which we don’t expect normal users to do. The new Actions Editor UI exposes condition trees and allows for easy selection of ‘AND’ and ‘OR’ trees, which should bring the added power of condition trees to more users.

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’re always willing to improve further, so if you have any suggestions, please leave a comment!

Improving the development process

Filed under: General, QA, Release, Tech — Shane on August 31, 2008 @ 6:09 pm — Permalink

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 DMDirc development — when we all switched to Linux, we couldn’t find an existing client that any of us really liked.

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.

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’t have much control over it, Google were slow to improve it, and it didn’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’t show them publicly.

Sometime just before DMDirc 0.5.5 was released, we decided to start using Mantis as our primary issue tracker. Mantis, whilst not perfect, gave us the control we wanted — it’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 Python script (yay for multi-language proficiency!) to screenscrape the website and build an XML file, and then a PHP script 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.

We (well, Chris and I) had got quite used to using the issue ‘grid view’ offered by Google code, so one of the first things we did when switching to Mantis was implementing our own version 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 our Fisheye instance, and also map Subversion users to Mantis users in order to add comments with the appropriate username instead of just ‘SVN user’.

More recently, we’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 this issue.

Now, as I mentioned above, we are all heavy IRC users so having to periodically check Mantis for new bugs wasn’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.

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.

Not long after that we discovered and implemented Bamboo into our development process. Bamboo is a Continuous Integration 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’t quite perfect, and after a short while we discovered a plugin 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 this issue again you will see that the results of the build from Bamboo are also reported under the the commit that triggered it.

As mentioned before, we have a collection of unit tests to make sure things work as expected. Every so often we generate Clover reports to show how much code coverage we have, and in the last month we have also discovered and began using the FEST Swing library to allow us to start unit testing the DMDirc GUI.

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 Nagios running and monitoring it all for us (and of course, this reports to IRC also!)

Of course this setup wouldn’t be possible if it wasn’t for a few choice products provided for free — Mantis, Fisheye, Bamboo, Clover and many others. We would like to thank the developers of these products for helping us make DMDirc great.

Introducing the intelligent IRC client

Filed under: General, Intelligence — Chris on August 7, 2008 @ 11:09 pm — Permalink

If you’re reading this via our website, you may have already noticed that DMDirc has undergone a small re-branding. We now use the tagline “the intelligent IRC client” across all the DMDirc sites (apart from the addons site which is undergoing an overhaul — you can take a sneak peak at what it’s going to be like over at the development site). This tagline has also found its way into the ‘About’ dialog in recent nightly builds.

Why “the intelligent IRC client”? Well, we think DMDirc’s built-in ‘intelligence’ is the most significant aspect that sets it apart from other clients. We’ve yet to see another IRC client that has tab-completion anywhere near the quality of DMDirc’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 ‘intelligent’.

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.

DMDirc 0.6 (coming soon; we’re going to be pushing out an alpha version this weekend) features a lot of enhancements to the ‘intelligent’ aspects of DMDirc, some of which we’ve discussed previously. But, as always, we’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, create a new issue on the issue tracker, join us in #DMDirc on Quakenet, or use the feedback form found in the Help menu in the client itself.

Looking ahead to DMDirc 0.7

Filed under: General — Chris on July 30, 2008 @ 12:44 pm — Permalink

With DMDirc 0.6 coming soon (hopefully — we still have a few bits and pieces to finish off), we’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.

Looking back on the 0.6 branch, one of the things we’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’t because we’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’s because we’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’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’ve allocated issues to each release to try and balance the time it will take (DMDirc 0.5.5 wasn’t a pre-planned release and, as you can tell from the timing, didn’t split the workload too well), so hopefully we’ll be able to make releases somewhat more frequently than we have been.

Pre-planning these sub-releases has also enabled us to organise issues better so that we’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.

  • DMDirc 0.6.3: Server lists, input/command improvements, plugin improvements
  • DMDirc 0.6.6: Updater overall, installer and launcher improvements
  • DMDirc 0.7: Channel and general window/UI improvements

Of course, if you can’t wait for releases to try out all the new features, you can download a nightly build, which can auto-update with the latest features and bug fixes each day.

Next Page »

Powered by WordPress