Planet Amarok
Compiling Amarok from git locally - full summary
As we have more and more questions for support on how to install Amarok 2.2 from GIT, I thought I might make another synopsis on how to install a local build. Apparently linking to previous posts is not very useful because people tend not to read the links…
Warning: please do not try this if you are not comfortable with compiling from sources, and be aware that compiling from a development branch can break a few things!
Note: as I use Kubuntu, this is heavily biased, but there are a few indications for other distributions, as far as those have been provided by the previous bloggers.
Thanks go to Mark Kretschmann who started that adventure and wrote the first instructions, to Stephan Jau who wrote an excellent How-to for the SVN version for Kubuntu users and to David Faure who corrected some of our settings. And, of course, all the Amarok Team who do a tremendous job every single day
This document explains how to install Amarok 2 from GIT in your home directory - in an easy way
Update:October 12th 2009 I updated a few things since the first edition, in particular the README content in section 5 and adapted it to the upcoming Karmic Koala aka Kubuntu 9.10 (remember, I am biased)
If you already have an Amarok 2.x version installed from your distro, un-install it to prevent setting conflicts and similar. You will need the kdelibs and kdebase-runtime from KDE 4.2 or higher. Please see also the minimal requirements and mandatory dependencies in section 5.
1.Install git, the compiler and KDE 4 development packages:
- In Kubuntu, Debian, and all their derivatives:
- sudo aptitude install git-core build-essential kde-devel
- In Archlinux:
- sudo pacman -Sy git base-devel kdelibs kdebase-runtime
- In Gentoo:
- sudo emerge -av dev-util/git kdelibs plasma-workspace
2. Install ccache to speed up compilation
ccache is a very nice tool that can speed up your compilation. It speeds up re-compilation of C/C++ code by caching previous compiles and detecting when the same compile is being done again. Install the package from your distribution and set the size of the cache to 2 GB with the command
ccache -M 2G
This will take 2Gb of space in your local directory, but the gain of time is really impressive. Enable the use of ccache by adding it to your local .bashrc, described in step 3 below:
3. Define the PATH and local environment
- export PATH=$HOME/kde/bin:$PATH
- export PATH=/usr/lib/ccache:$PATH
- source $HOME/.bashrc
NOTE: if you are not using the bash shell, edit your proper shell config file (~/.zshrc or ~/.tcshrc or whatever it may be).
4. Make KDE aware of Amarok’s plugin location:
5. Make sure you have all the necessary dependencies
The README file in the source states the required and optional dependencies, but I might as well write it down here, so there is no other document to be read for the lazy ones. Of course, before diving into compiling from source, check if those dependencies are available in the package repository of your distro
Note: you must also install the devel versions of these packages!
- KDE-Libs 4.2 + KDE-Base-runtime 4.2 (or newer)
- TagLib 1.6 (or newer), Metadata tagging library
- http://developer.kde.org/~wheeler/taglib.html
- svn://anonsvn.kde.org/home/kde/trunk/kdesupport/taglib
Note: You need to compile taglib 1.6 with -DWITH_ASF=On -DWITH_MP4=On when running cmake, or use ./configure --enable-asf --enable-mp4
- TagLib Extras 1.0.1 (or newer), Support for metadata reading of additional file types
- MySQL 5.0 (or newer) Embedded: libmysqld compiled with fPIC (In-process database support)
Note: If you have installed MySQL Embedded in non-default location (i.e. $HOME/usr), Amarok may fail to start with error regarding libmysqlclient library. In this case, add the following string to your ~/.bashrc:
- export LD_LIBRARY_PATH=$HOME/usr/lib/mysql:$LD_LIBRARY_PATH
where $HOME/usr is the path you will use in the --prefix option when compiling (see step 7. below)
- export LD_LIBRARY_PATH=$HOME/usr/lib/mysql:$LD_LIBRARY_PATH
- QtScript Generator, Qt Bindings 0.1.0 (Qt Bindings for QtScript for Amarok’s scripting system)
Note: make sure to follow all steps described when compiling Qtscriptgenerator
- libgpod 0.7.0 (or newer), iPod support
- libmtp 0.3.x, MTP device support
- Mp3tunes.com integration (including synchronization) requires:
- OpenSSL http://www.openssl.org
- libxml2 http://xmlsoft.org
- libcurl http://curl.haxx.se
- Glib2 http://www.gtk.org
- Loudmouth, the Jabber library, http://www.loudmouth-project.org/
- Qt must be compiled with Glib enabled
- Liblastfm 0.3 (For scrobbling, Internet radio, and artist info)
- MySQL 5.0 (or newer) Server (external database support)
5.1.Various dependencies that might cause compile errors and have to be installed:
(these are rather specific to Kubuntu, might have other names in other distributions and/or are already installed)
- libstrigiqtdbusclient-dev
- libsearchclient-dev
- libmysqlclient15off
- libmysqlclient16-dev
- libmysqld-dev
- libmysqld-pic
6. Create folders:
- mkdir $HOME/kde
- mkdir $HOME/kde/src
- mkdir $HOME/kde/build
- mkdir $HOME/kde/build/amarok
7. Checking out and Building:
Now you need a source checkout from Gitorious. In the folder ~/kde/src/, type the following command:
git clone git://gitorious.org/amarok/amarok.git
this will drag approx. 55-60Mb of data, depending on the moment you actually make this checkout.
Everything is now ready to build:
- cd $HOME/kde/build/amarok
- cmake -DCMAKE_INSTALL_PREFIX=$HOME/kde -DCMAKE_BUILD_TYPE=debugfull $HOME/kde/src/amarok
- make install
8. Updating KDE Config:
- kbuildsycoca4 --noincremental
Note: this might not be necessary for most of the cases
Now you are ready to run Amarok 2, by typing “amarok” in the shell. We strongly recommend you run amarok with the -d and –nofork option, so you will have debugging enabled and can get a valid backtrace if Amarok crashes.
9. Updating your Amarok build:
Since the development is quite fast with git, you should update your Amarok build regularly, and a daily checkout is not too much. This is made easy with the following command:
- cd $HOME/kde/src/amarok
- git pull
This will update your local git branch. If you have done modifications to your local branch you would like to keep, make sure you update with the --rebase option. See also the git tutorial for KDE in section 10.
You can now simply build again with
- cd $HOME/kde/build/amarok
- make install
Since you have installed ccache, a full build will speed up over time. To have an idea about the build time, just type time make install when building. If you have several CPU cores, you can speed up even more with the -j[n] option, where [n] is the number of CPU cores +1. Of course, the more CPU you use for building, the less you will have available for other tasks
10. More information and useful links
Don’t forget: running a development version also means that it is not stable and can break anytime ! This is especially true after a feature freeze, when the developers merge their personal git branches to the master branch.
Note: To be notified about major changes you definitely should subscribe to our mailing list amarok@kde.org at https://mail.kde.org/mailman/listinfo/amarok. Of course you will also find help in our #amarok channel on irc.freenode.net, but reading the mailing list is mandatory and spares us a lot of time.
Since you don’t want to repeat all this completely when you upgrade to a newer version of your preferred distribution, you should consider installing your /home directory on a separate partition from the start, it will spare you quite some time and hassle in the future.
Edit: Casper van Donderen just pointed me to the possibility to have the latest Amarok from git on Windows, too: if you build KDE using the emerge system, just type emerge amarok at the kdeenv command prompt. Thanks for the hint, Casper!
Tune your Quassel!
If you would do a quick analysis on which programs I use the most you’d probably get Firefox, Quassel, Amarok and Kopete (in this order and Firefox being way ahead of everything else). Using those programs extensively of course leads to optimizing workflows.
Quassel is the fourth IRC client I use now. MIRC back on Windows. Then I learned to love Konversation when I switched to Linux. At some point I got tired of missing stuff when I was offline so I got shell access on a friends server to run irssi. It was ok and I customized the hell out of it to fit my needs pretty perfectly but I always missed Konversation’s nice GUI. I’m just not the type that really enjoys a CLI app (well except for listadmin maybe – but more about that another time). And then came Quassel, developed by a good friend of mine. I got a GUI and always-online in one app without hacks. Heaven! Well ok – close to heaven. There were a few usability issues that thankfully got fixed with help by Celeste. But one thing is still problematic: Quassel keeps all queries (private chats) in your default channel list. (Konversation had (has?) this nice feature that it closes inactive queries after a while and they are gone after a restart anyway so your channel list doesn’t grow too huge.) With a huge list of queries (not hard to achieve if you’re using IRC for a while) you easily miss new messages in Quassel. Since I noticed a few people having this problem I’ll share how I tuned my Quassel to never miss queries again.
I have 2 chat lists. One with all my channels and queries and another one with only new stuff – that means unread channels and queries. It looks like this:

Once I read and leave the queries again they are removed from the news chat list – same for the channels. A nice side effect of this is that I can easily manage a lot of channels even on the small screen on my netbook without scrolling.
To set this up go to View -> Chat Lists -> Configure Chat Lists.
Settings for my All Buffers chat list:

Settings for my news chat list:

How about a list of only new queries? Easy:

How about a chat lists with only channels with highlights? There you go:

Enjoy and never get angry looks from friends again for missing a query
How did you tune Quassel?
AFT and MusicBrainz track identifiers, redux
A bit ago I blogged about how Amarok File Tracking can now use MusicBrainz identifiers to do its stuff.
Then, a little while later, I started getting bug reports of peoples' music disappearing from their collection, and requested some of the reporters send me some files. One of the users did so, and I found something curious in his tags (if I had a penny for every time I've personally seen users have something odd or strange in their tags, I'd have...well, a few dollars at least). Several of his files had full MusicBrainz tags -- with absolutely no data populating them, meaning that the MusicBrainz identifier (and all other MB data) for all of those files was ending up the same (blank) and Amarok was thinking them the same file.
It was a quick fix (use generated non-embedded AFT IDs when the MB tags are empty) but just adds to the evidence that you can never, ever trust users' tags. Also, that users that use your Git-based version or betas really rock for finding this stuff before release...so in case I don't say this enough: thanks users!
Sunset
A-Team at OpenExpo, Wintertur, Switzerland
Preparing for another conference: OpenExpo in Winterthur next week!

It’s this time of the year again where I prepare for attending OpenExpo in Winterthur. This important Free Software even is held on September 23 & 24 in Winterthur, Switzerland.
This year I helped organizing more than one booth: Amarok, KDE and the Ubuntu/Kubuntu booth of the Swiss Team. While Mark and Sven will handle the Amarok booth, showing the upcoming version 2.2 of your preferred music player, I will share my time at both the KDE and the Ubuntu/Kubuntu one, presenting the latest KDE 4.3.1, using Kubuntu 9.04 (unless I find some time to install a preview of the upcoming Karmic Koala before). Not alone, of course, as I will have a lot of helping hands from Andi, Adriaan, Eckhart and Pascal for KDE, and Daniel, Dirk, Erwin and Roman at the Swiss Team booth
getting closer
Slightly delayed due to server problems we’ve released the second beta version of Amarok 2.2.
Please read the release notes, test it, report bugs and send patches (I might give away cookies for patches
).
identi.ca got it right
Social media like Twitter, Facebook, digg and co. are all about the conversation. They are more fun and actually more useful when you have people to interact with. After all it’s called social media, right?
Now people have discussed why Twitter is better than identi.ca and the other way around. So Twitter obviously has the advantage of being comparatively big and mainstream at the moment. And this certainly has its advantages like being able to interact with a lot more people who so far have not (and maybe never will) discovered identi.ca.
Identi.ca on the other hand has the advantage of being Free Software and connecting a lot of Free Software people. However that is not the only and maybe not even the biggest advantage of it. No, actually its biggest advantage is enabling communication. Let me explain.
Twitter has @-replies. You use them to address people in the messages you send (like this: @foo I don’t agree with what you just said). Not too long ago Twitter decided to not show those @-replies your contacts send to other people in your main timeline but only when you visit their pages. So when one of the people I follow addresses someone else but me I will generally not see this. There are a few good reasons for Twitter to do this which I will not go into right now. However the problem with this is that you are missing big parts of very interesting message exchanges. The even bigger problem is however that it is close to impossible to find the @-replies someone got. Why is this a problem? Say someone asks his Twitter followers how they like a movie that just came out to decide if it is worth going to the cinema or not. You are about to go as well and would like to read what people answer him? Well tough luck. You’ll need to jump trough hoops and use the twitter search to search for his nickname and will probably get a lot of useless stuff there mixed in the useful things. Identi.ca on the other hand gives a tab to view all replies a user received so you can easily see what people replied to an interesting question or comment. Identi.ca goes even further. You get a “show in context”-link that tries to thread the whole conversation around a certain topic. It is pretty awesome and accurate. You can see who replied what to whom. Check it out!
One feature Twitter is lacking completely is groups. They are addressed with !groupname. Groups are an awesome way to communicate with a larger group of people you do not know but share a common interest with. There is no good way in Twitter to do this (no, hashtags don’t count). Groups can for example be used to make announcements or to get feedback from people also interested in topic X. They are probably the most powerful microblogging mechanism out there because they easily enable communication in large groups without much hassle. You simply join the group and then put !groupname in the message whenever you have something to share with the group. On Twitter (unless you are one of those people followed by a lot of people) your best chance of getting an important message read by a lot of people is to have it reposted (retweeted) by one of the influential people who are followed by a huge crowd. And then you still can’t be sure to reach the people you actually want to reach. One could say identi.ca’s groups make this whole process more democratic.
Summary: Twitter is a simple tool and being simple is a big part of the things that made it popular and successful. It however encourages communication from one to a few selected people who are following you. Identi.ca on the other hand encourages communication between a lot of people who don’t necessarily need to follow each other and thereby empowers people if they choose to use it that way. This makes it slightly more complicated for someone who starts using it though. So the question is: How does one explain groups in an easy and comprehensible way?
(In case you have no idea what this is all about check out my Social Media Guide For Free Software Projects for an introduction.)
The Future of Game Development in KDE
it’s all clear now
We’re happy to release the first beta of Amarok 2.2. It comes with many goodies like playlist sorting, UMS device support, the ability to customize the program layout to your liking and much more. For details please read the release announcement and this nice review.
Enjoy rocking
Oh and don’t forget to send feedback, bug reports and patches (and maybe some cookies and hugs?) so we can get it in perfect shape for release in about a month.
Qt for S60 Still Bogged Down By Symbian
New 4.3.0 thingies in Macports
Inline metadata editing in the playlist
FrOSCon 2009
GSoC Status Update August/3 (final one)
Amarok 2: Universal Mass Storage Device Support Here
social media guide for free software projects
Lately more and more people come to me with questions like “What does $randomsocialmediaterm mean?” or “How does $socialmediasite work?” or “How do I do this on $socialmediasite?“. It seems people start to understand that social media can be a huge thing for free software projects but don’t really know where to start or where to look for help.
So I sat down for a few hours and wrote the Social Media Guide For Free Software Projects. Download it and find out how social media can help your project stay in touch with your users and make it rock even more. Learn about digg, Twitter, identi.ca, Linked.in and more. The guide includes basic intros to different sites as well as advanced tips for how to deal with social media in general.
Enjoy and please leave feedback for the next version of the guide
amarok_forum-improve()
When the KDE forum team started they came to me asking what to do about the Amarok forum. It was fairly active and working ok. So we decided to keep it and just link to it from forum.kde.org so people looking there would find it. Lately the forum software was causing more and more problems though and we are low on moderators as well. Luckily since they started the KDE forum team has done an amazing job, making the KDE forum so much better than the Amarok one.
I’m happy to announce that we moved the Amarok forum to the official KDE forum at forum.kde.org to enjoy a better forum, reduce maintainance and reduce the number of needed accounts for KDE websites.
All content and account data have been migrated. Migration of attachments and avatars is still in progress. Some nicks conflicted. If you can’t log in with your nick try your email address. If you want nicks changed/merged in this case please get in touch with me or the KDE forum team in #kde-forum on freenode.
Thanks to the KDE forum team for handling migration and Jeff for helping on the Amarok side.
Now go and enjoy a much improved Amarok forum




