DMDircthe intelligent IRC client

Condition Trees (aka: making actions even more incomprehensible)

Filed under: Actions, Tech — Chris on October 25, 2007 @ 3:37 am — Permalink

I’ve just committed changes to DMDirc that allow you to make use of what I call “condition trees” 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.

An example condition tree looks like this: (0&(1|2)&!(1&2)). 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 &, |, ! and the brackets have their expected meanings. If you’re not too fluent in boolean logic, the condition tree translates roughly as “condition 0 is true, and exactly one of conditions 1 and 2 are true”, or “condition 0 and (condition 1 XOR condition 2)” if you want.

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 “!hello”, 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 ‘if’ statements in scripting languages, thus enabling extremely complex conditionals without the overhead of a scripting language or the learning curve of one.

(more…)

Feature Freeze and Release Candidates

Filed under: Linux, Tech, Windows — Shane on September 22, 2007 @ 7:53 pm — Permalink

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 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.

RC1 was released yesterday (Downloads: Linux and Windows) with RC2 hopefully being ready tonight.

Once we get an RC build with no apparent bugs, we will release 0.5 :)

New to 0.5: Cross-Platform Installer

Filed under: Installer, Linux, Tech, Windows — Shane on September 13, 2007 @ 1:51 am — Permalink

As part of our aim to make DMDirc into a good, cross-platform IRC Client, it was decided early on that it required an actual installer to make packaging/distributing/installing the client much easier.

Originally this was scheduled for 0.7, but just prior to the release of DMDirc 0.4 we rescheduled it to 0.5 and it was assigned to me (as I had the least other tasks to do - the main bulk of the parser is complete).

So since we released 0.4, I have been working almost entirely on this, and can happily say the first revision of the installer is completed.

One of the key requirements for the installer is that it should run on all the (desktop) platforms that DMDirc runs on, which right now are Windows (2000, XP, 2003, Vista) and Linux.

Below are a few screen shots showing the installer running on XP (using both Classic and Normal themes), and Windows Vista:
Installer running on XP Pro - Normal Theme Installer running on XP Pro - Classic Theme Installer running on Vista

Linux screenshots coming soon.

Mac users may note that there is no Mac Version of the installer. This is due to the lack of availability of a Mac to test on, and the lack of a proper release of Java 6 for OS X. I am hoping to have the installer running on the Mac for the first release after Java 6 becomes available properly (although the lack of a Mac for testing could make this awkward - donations welcome!)

At the moment the installer requires Java 6 to be installed on the machine already. If the installer is ran on a machine without Java, or with a version that is too old, it will notify (via console in Linux, or a dialog box on Windows) the user that they need to install or update Java first. One of our goals for DMDirc 0.6 is to produce a version of the installer that bundles Java 6, or can download it for the user.

To allow for pre-release testing of the installer, you will find here two copies of the installer (one for Linux, one for Windows), and their MD5 hashes. These are pre-release, possibly unstable and/or broken versions of DMDirc, compiled against SVN revision 2030, and as such the installers or the client they install may not function, suddenly burst into flames, or sacrifice your first born child. These should, therefore, be used at your own risk. However, if the installers (or the client) actually do something they shouldn’t, or don’t do something they should please feel free to submit an issue report or reply to this post.

Now the files:

Clicking on “more” will go into more depth on how the installer(s) work.
(more…)

The DMDirc release cycle

Filed under: Tech — Chris on June 8, 2007 @ 9:03 pm — Permalink

As we’re preparing to release 0.4, I thought I’d take the time to describe how the DMDirc release cycle works.

Following a release, we start working on some of the new features we have scheduled for the next milestone. As I’m writing this (a day or two before the 0.4 release, at a guess), there are 23 issues in our tracker targeted for 0.5, some of them being fairly big projects (such as Theme support), and some of them being small things we decided to push back from 0.4 (such as colour codes still being shown when you highlight text). While we’re doing this we’ll probably come across bugs in the previous release, cause more bugs while implementing new features, and find some poorly designed aspects of the client, so we’ll fix and refactor as appropriate.

Once all the features for a milestone are implemented, we start a ‘feature freeze’, during which time no one is allowed to commit new features, just bug fixes. This is to prevent the accidental introduction of more bugs, and to ensure that we can release without having a half finished feature somewhere. During the feature freeze all the developers upgrade to the latest build of the client in an effort to try and find bugs that occur during general use. We also use this time to prepare supporting material for the release, such as the changelog and the release notes. For 0.4 we’re also working on the addons site, which we hope to have in basic working order by the time we make a release.

Finally, when all outstanding bugs have been fixed, and we’ve had a few days (or more) using the latest build, we create an SVN tag for the release, so a copy of the source tree is preserved and easily accessible if we ever need it in the future, and alter a couple of constants in the Main class to reflect the new version number and update status. We then build a JAR file for the project, copy the standard shell and batch scripts, and add the release notes. The collection of files is then zipped and uploaded to our project page (from 0.5 onwards we will hopefully have native installers, so no more zip files).

Once this is done and the website and project pages are updated to reflect the release, we start the cycle again.

Plugins

Filed under: Plugins, Tech — Shane on May 26, 2007 @ 1:10 am — Permalink

Ok, so you’ve read about actions and seen just how amazingly useful they are, maybe you’ve even used them and feel like donating your life savings to the creator? (It’s me, honest! Don’t believe Chris!) Well then, what happens when you come across something that you just can’t manage to do with actions? (It’s rare, but it happens — though if you believe it should be possible with actions let us know in #DMDirc on Quakenet and we’ll see what we can do). The answer is simple: Plugins :D

Plugins, unlike actions, are made from compiled Java code. This means that (also unlike actions) they require a considerable bit more technical knowledge to create.

The plugins system is tied into the actions system for most events, and whilst using this is not required, it is probably desirable for a lot of plugins.

Plugins can do a lot of things, from adding new action types, to manipulating the actual IRC Parser callbacks and line processing, in summary they give you the most control over the client, but at the cost of being harder to get to grips with.

Some plugins are available in source-form from the SVN repository for the project (and are compiled into the nightly jar files, so you can extract the .class files if you’re not comfortable compiling plugins yourself) and before 0.4 is released http://addons.dmdirc.com/ will be completed to allow plugins to be downloaded in source and/or compiled form.

Clicking on “more” will guide you through writing your first plugin. In further blog posts I will expand on this first plugin.
(more…)

« Previous PageNext Page »

Powered by WordPress