IRC (Internet Relay Chat, the description of IRC) is a chat protocol used by many open source and hacktivism projects for real-time discussion and support chat. I myself participate to Python and Plone discussion and now recently to Android chat on Freenode and IRCNet networks.
Quassel is a distributed IRC client. Distributed in the sense that it keeps your chat sessions on the server side: even if you get disconnected you won’t lose any chat messages. This is a nice feature for people who need to be constantly in touch with the communities. For IRC veterans, Quassel is like the good ol’ screen + irssi combo, but with an user interface which does not require a degree in Perl scripting. This is a short tutorial for getting or building the mobile version of Quassel, Quasseldroid for Android.
Everyone how has tried it knows that irssi or any terminal software suits very badly for mobile screens. QuasselDroid fixes this: it provides an user interface which is suitable even for touch screens. Also, with Quassel core on the server side, you do not need to worry about disconnections which often happen with mobile networks, With desktop Quassel and mobile QuasselDroid you should be able to seamlessly leave your desktop, go traveling whilst continuing the on-going dispute of the next most important internet thing with your on-line friends and foes.
This tutorial show how to get binary or source from Github and compile the project for your phone. Note that QuasselDroid is still in very early developing phase and the main purpose of this is to drive more development into QuasselDroid. Do not expect it to be ready for your specific use cases yet! Also, these instructions are tested only on Samsung Galaxy S with Android 2.2.
Quassel is originally based on Qt C++ libraries and uses Qt based serialization protocol to communicate between the server (your IRC session) and client (your phone). QuasselDroid implements Qt protocol from scratch in Java and does not use any Qt libraries on Android. There also existed a prior version which required a proxy server, but this has been fixed for now.
1. Getting and building QuasselDroid
Before proceeding you need
- A server which allows you to run a background process with more than hundred megabytes of memory usage
- Quassel core installed on the server side (this maintains your IRC session). Core itself comes with decent command-line help. If you get stuck ask help on #quassel channel @ freenode IRC network.
- Preferable Quassal desktop client (Windows, OSX, Linux) for ircing from the desktop
1. Downloading pre-built binary
Note: there exists a pre-built Android binaries for non-Android hackers. Download QuasselDroid Android binary from here. You still need to set-up the server side core yourself.
1. Prerequisites for building and running QuasselDroid
This is the recommend method of installing QuasselDroid if you are looking for helping in QuasselDroid development. It is not that difficult, as Android tools are quite friendly for newcomers.
- OSX or Linux (your mileage on Windows may vary)
- Android Phone (Android 2.1 or newer)
- Android SDK
- Eclipse IDE for Java Developers
- Android Eclipse plug-in (you need to install it through Find and Install updates inside Eclipse)
- Git (for OSX use Macports to install it)
- Minimal understanding of terminal and UNIX style command line
1. Compiling and running
Install Android SDK, Eclipse Android plug-ins for Eclipse. Note this is several hundreds of megabytes worth of software, so be patient and entertain yourself with some cool music whilst downloading.
Install Quassel client, Quassel core and get yourself familiar with the noveau IRC experience.
Get code from Github:
git clone https://github.com/sandsmark/QuasselDroid
Open project in Eclipse. Start Eclipse, choose or create any empty directory as workspace of just choose the default one. Then choose File -> Import -> General -> Existing projects into Workspace. In Select Root Directory you need to choose a directory above Github checkout directory. Select QuasselDroid in Projects list (which is now refreshed after selecting root directory).
In this point I had to select the project, choose Project -> Clean from Eclipse menu (there were some errors popping up in Eclipse internal console).
Right click Project -> choose Run as -> Android application.
- If your phone is connected via USB Eclipse will automatically build and install APK directly to your phone
- If you do not have phone connected QuasselDroid will start in the emulator
2. Installing QuasselDroid
2. Creating a core entry
When QuasselDroid is run for the first time. press Android Menu key on the start-up screen(this was little hard to discover) and choose Manage cores. Now you need to configure quassel core for the server – for this process you should already have experience with Quassel desktop client.
Also, you might need to disable SSL support if you are running a core without SSL compiled in. Again, press Android Menu key, choose Preferences and uncheck SSL.
3. Debugging issues
When you run an issue and you can repeat it reliably with necessary log traces available, file a bug report on Github project page.
Android has a logging tool called LogCat, showing log output from emulator or device. You will see Android log output in Eclipse in LogCat view when
- Emulator is running
- A device is connected via USB, debug mode enabled (from system Settings menu)
Use Eclipse Window -> Show -> Debug perspective to see LogCat window if it’s hidden.
If you launch the application in Eclipse using Debug run (the bug icon) Eclipse will stop on the line where an uncaught Java exception is thrown. This is very useful for debugging crashing bugs (Android pops up force close dialog).
On the server side, you can see quasselcore output in stdout and see how the core reacts to client connection attempts.