Thursday, December 11. 2008Drive-by Mockups
Yesterday, after nearly 2 years of hard work, blood sweat and tear, we finally released Amarok 2.0.0. Reactions so far have been mixed, but this was no worse than we had expected. We are drastically reworking an application that many people are very fond of, and taking it in a very different direction, and for some people this will not be the direction that they had preferred. Also, some of the features that some people depend on in the 1.4.x series are not yet in Amarok 2, and while we have tried being very upfront about this, apparently it is still a big shock to some.
One of the things that has been most controversial so far, is the new look. This has spawned a number of mockups from people who have ideas for way to improve Amarok. Some of these are really good! See these pages for some examples: http://kde-look.org/content/show.php/A+Media+Player+for+KDE4?content=94472 http://www.kde-look.org/content/show.php/Amarok2+Look+and+Feel?content=93854 From the comments on some of these mockups, its is quite clear however that we face somewhat of an issue of understanding. Comments like I like your mock =) and Amarok already has chosen a look and at best changes now are going to be evolutionary rather than revolutionary. besides being quite degrading to all the people who have worked very hard on Amarok 2.0.0, to me indicates a profound lack of understanding of the amount of work it takes to actually turn a good mockup into a working look for an application, especially from the artist. So while we get really nice mockups from time to time that we would love to implement, few of the artists so far has been willing to stick with us to do the actual hard, boring and repetitive work required to actually make it happen. Hence the term "Drive-by Mockups". So is there a point to this rant? I am not sure. I certainly dont want people to stop making mockups as some of these contain really good ideas, but I would ask people to not attribute to malice or stupidity from our side what is simply caused by few artist having the time and being willing to follow up on their mockups. Friday, December 5. 2008From the Post 2.0.0 Git Vaults, Amarok Urls and Bookmarks
Amarok 2.0.0 has been tagged! Short of any really bad bugs showing up the release will be upon us shortly, just as soon as the packagers from the different distros have had a chance to do their thing! This release has been nearly 2 years in the making, and all of us developers have shed blood, sweat and tears trying to make Amarok 2 live up to the vision that has driven us all along. Overall, I am very pleased with the result. Some people will initially miss their favorite feature from 1.4.x but Amarok brings so many new thing to the table, that at least for me personally, it is a far superior player to 1.4.x already.
But this blog post is really not about Amarok 2.0.0 at all. You can be sure that his will be covered in great detail, reviewed, tested, loved, hated, praised, FUD'ed, criticized (both constructively and not so...) and all that in the weeks to come. What I will try to do here is give you a small glimpse into the future, the great big world beyond 2.0.0. You would think that having worked on Amarok 2 for 2 years, we would need a break. But actually, it seems that nearly all developers have big projects that they are ready to start on as soon as the feature freeze is lifted, or are already happily hacking along on new stuff in Git branches. I currently have 3 such branches containing post 2.0.0 features in different states of completion, and in this blog I will show some of the stuff I am working on in one of them. Remember that all this stuff is fresh raw and untested from my own git branch and may change in any number of ways before it ever gets near a release Amarok Urls The idea behind Amarok urls is to give amarok a concise way of referring to different "views" within the application and allow these views to be easily passed around, shared and stored. An Amarok url is simply a url with the protocol "amarok" followed by a command and a series of arguments encoded as a url. For instance "amarok://navigate/service/Magnatune.com" is an Amarok url that will cause the Magnatune service to be shown ( if enabled ). In my git branch, the "navigate" command has been fully implemented, and you can navigate in all the browsers. Amarok also installs a protocol handler, so clicking the link above will startup Amarok ( if not already running ), and make it show the Magnatune service. Actually the navigate command supports additional arguments, so a more complex url could be constructed that would not only show the Magnatune.com service, but also set the sorting mode and filter. So If I wanted to direct you to one of my favorite Magnatune.com artist, "Brad Sucks", I could write a url like this: "amarok://navigate/service/Magnatune.com/artist-album/artist:"Brad Sucks"". In this form, these urls are already useful. For instance, they provide a very easy way for context apples to provide "guided searching" in the browsers where clicking on an album cover in the context view actually browses to this album in the browser. Additionally they could be used if you want to blog about a cool new artist in one of the services, as you could simply provide a link similar to the one above, or online services could provide a "browse in Amarok" link for their content. There are many possibilities! Bookmarks A bookmark in my git branch is actually exactly the same as an Amarok Url, but the context in which it is used is different. A url is most often something that comes from an external source, whereas a url that is used internally to store a favorite view is what I call a bookmark ( I am very open for suggestions for a better terminology ). So without further ado we have the first screenshot of the evening, the (very much work in progress) "Bookmark Manager" applet: This applet allows you to grap the url of whatever state the browser is currently in. So browsing somewhere, setting a view mode and entering a filter, and then pressing the "Get Current" button will generate the corresponding url. The manager allows basic operations such as saving, renaming, deleting and of course applying (activating) bookmarks. I have not quite gotten drag and drop organization working, but that will be possible as well. This is also nice if you want to share a cool view with someone, as you don't have to think about how to manually construct the url, but can simply press "Get Current". Oh as i am sure some people will ask why I made this an applet and not a browser, the reason is simply that since these bookmarks actually "work on" the browser, it makes sense to be able to play around with the bookmarks without the manager getting hidden as soon as you activate a bookmark as it navigates somewhere else in the browsers. Then someone came up with a use for this that I had not considered. A wish list item on our bugzilla asked for a way of bookmarking content for later. The example given was the user finding a cool Magnatune.com album, but not having time to actually purchase it right now. While the bookmark manager can certainly be used for this, the fact that you have to manually type in the query to isolate the album or artist that you are interested in is less than optimal. So today, during a very long train ride, I came up with this: Now all albums and artist in all collections (using a nice system I actually implemented to allow the last.fm service to add the "Play Similar Artists from Last.fm" action to all Artists in all collections with out hard-coding anything) have an option to bookmark them. This system does not work in all cases for all services yet (mainly because filtering does not work exactly the same way in all services), but for the local collection, Magnatune and Jamendo, it works perfectly already This will likely make it into Amarok 2.1.0, so even though Amarok 2.0.0 is, in my opinion, already a great player already, development is in no way slowing down, and we have 100's of really cool ideas that we will work on implementing in future versions. I have other git branches with post 2.0.0 features lying around, so depending on the response to this post, I might blog about those later Thursday, November 20. 2008Localized Content
In my last blog entry I talked a bit about how cool it is to have such a strong lineup of services ready for the launch of Amarok 2.0.0.
Since then, something else has started happening in a big way. Scripts containing localized content has started to appear. Peter was first with his Chinese Radio Service, and then all of a sudden yesterday, things started to move fast. In quick succession we got service scripts for Radio France and Bulgarian Radio Stations and this inspired me to put together a Danish Radio Streams script that was released a few hours ago. While each of these service scripts are very simple and have an audience that is limited by language or region, I think that together they represent a very powerful aspect of Amarok 2 as they make Amarok feel 'native' to people who do not have English as their first language. I know that personally, for me to be able to present a nice list of readily available Danish radio stations, will be a huge plus when showing Amarok 2 to friends and family who are not overly technically inclined (read: non geeks). I hope (and fully expect) to see a virtual flood of scripts of this type, and while I an most others will each only use a few of them, I am very exited that they are appearing! Friday, November 14. 2008"If we have 2 or 3 good services at launch I will be happy"
With Amarok 2.0.0 rc1 right around the corner, now is a good time to reflect on where Amarok 2 comes from and where it is going. So I felt like writing a bit about the journey of the idea of "services" in Amarok 2, as that has been my main focus, even though I have managed to get my hands dirty all over the place it seems!
Just over 2 years ago, Amarok 1.4.4 was released with a cool new feature, which also happens to be my first contribution to Amarok, the integrated Magnatune.com store. ( Here is a cool page that Magnatune did to document some of the responses ). The overall response to this was quite good, and Magnatune started selling quite a few albums through Amarok, and eventually ended up hiring me, and I still work for them. Something else started happening as well. People saw the integrated Magnatune store and started asking if there was any chance that their favorite store could get a similar integration. Most of the Amarokers agreed that this could be cool, but there were several obstacles. For one, the way the original Magnatune store required a huge amount of custom code to do simple stuff like adding tracks to the playlist ( and as many will likely know ) the metadata representation of these are not perfect. Also, The Magnatune store had its very own tab on the left side of Amarok, and it was clear that we could not just add an arbitrary number of these as we started to add more stores. Finally, the Magnatune store in the 1.4.x series of Amarok is tied very closely to the rest of Amarok, meaning that it cannot easily be removed, and that people are more or less forced to load part of this code, whether they use the store or not. Luckily for me, after a time, something big happened in Amarok-land, the 1.4.x series was put on maintenance mode and the work on Amarok 2 was started. Since I was only responsible for porting over the Magnatune store and had almost no other code in Amarok, I decided that this would be a good time to try to tackle some of the issues mentioned above, and prepare Amarok for further stores or other services to be integrated. To make a long story short, we now, after a year and a half of work, have a framework in place that allows services to be implemented as plugins and loaded/unloaded on demand, a service browser to show them in and overall much better integration into Amarok overall, basically solving all the issues that needed to be solved before we could add more services. My original plan was to port at least the Magnatune store to this new framework, and as the title of this post shows, when I started this work, I would be very happy to have 2 or 3 working services to show up when 2.0.0 was launched. As the image on the left shows, this is not quite what happened. This image shows the services that are currently available, either included with Amarok 2 itself, or via download from kde-apps.org ( easily installable from within Amarok 2 using the "Get Hot New Stuff" system ). Some of these services are coded using the C++ framework, and some are scripts that run on top of the "Scriptable Service" framework, which is itself an extension of the underlying service framework. I have done a number of them myself, but more and more services are added or maintained by others. There are 13 of them. This is way more than I had ever hoped we would have available anytime soon, and really shows off the power of the framework well. Especially the scripted service framework, that lets people relatively easily add content from an online source ( although in a somewhat limited way compared to a full C++ plugin ) has received a lot of interest lately, and these scripts seem to be pouring in at the moment. Looking at the picture of all these services, one does start to appreciate how useful it is to be able to only load the services that are interesting to you, and not having to have them all in the list all the time! So what will the future bring? For starters, I have realized that I might need to extend the API used by service scripts a bit, since these seem to really be taking off in a big way, and requests for new features are already coming in ( and some have already been implemented ). Beyond that, I know of quite a few services that are being worked on, or are in the planing phase, both scripts and very advanced full plugins, so as with the rest of Amarok 2, this is not the end result, it is merely the beginning, and cool things will happen over the next many years, as we fully realize the potential of the new codebase! Saturday, November 8. 2008Everything you always wanted to know about writing Amarok 2 service scripts but were afraid to ask!
With the release of Amarok 2 growing closer and with such cool scripted services as NPR, BBC and Free Music Charts being recently released ( if you have a recent version of Amarok 2 , all of these services can be installed simply by going to the script manager, clicking the "Get More Scripts" button, and clicking install on the scripts you want ), we are starting to receive quite a few questions about how to start writing a cool service script for any number of on-line content sources.
This finally got me to take the time to do something I should have done a long time ago: start writing a guide. So, if you want to write an Amarok 2 service script, check out the scripted services tutorial on the Amarok wiki. So, if you have a favorite website that provides freely available audio content, writing a service script is a great way to make this accessible to a large number of new users! Monday, November 3. 2008There is a BBC in my Amarok
Ok, I admit it, my blogging recently has been a little, hmmm, erratic? Ok, so maybe non existent is closer to the truth.
The thing is that I mostly blog about cool new stuff in Amarok, and since we have been in release mode for a while, not that many really col new features has been added. Now, I am not saying this is a bad thing, as we really needed to start focusing on getting Amarok 2 ready for release, but it does make me a much less active blogger. So, what is someone like me, who has an urger do do something new and exiting every once in a while, todo? Well, yesterday the answer was served on a silver platter when I discovered this. Looking at that, my first thought was "Hey, that is very cool", my second thought was "Damn, they have something that Amarok 2 does not", soon followed by "No way!" My personal pet feature in Amarok 2 is the service framework. But there is a certain part of it that has really been growing on my, namely the qtscript interface that allows you relatively easy add a new service using small qt script. Lydia blogged about the Librivox service a little while back, which was built as a scripted service. So, a few hours after finding the BBC feed that lists the freely available content I had this up and running: This script is now available from kde-apps.org or it can be automatically installed from within Amarok 2 by using the "Get More Scripts" button int the script manager. I think stuff like this really nicely shows off the power of these scripted services. Just recently, Sven Krohlas, a long time rokymoter and Amarok contributor released his Free Music Charts service, and I already know of a few other cool scripted services that are under development. If this keeps up, Amarok 2 will have quite a nice selection of scripted services when it launches, and hopefully this will inspire other people with cool ideas to implement even more. Saturday, October 25. 2008Halloween
So, it will be Halloween soon, and what better way to celebrate than with a nice Jack-o'-lantern?
Oh, I think I have the answer to that: A nice Amarok styled pumpkin carving! Pumpkin carving awesomness by linkmaster03 Monday, October 6. 2008Amarok @ Opensourcedays.dk
This Friday and Saturday I attended the "new" danish open source conference Opensourcedays.dk. It is not really new, as it is actually a continuation of the Linuxforum.dk conference that has been happening fr the last 10 years, but it has changed its name and venue.
I had been invited to give a talk about Amarok 2, and we has an Amarok booth on Saturday, which is the community day ( Friday is more business oriented ). To help me man the both, Dan ( Leinir ) had come in from Aalborg, and Teo and his girlfriend Stephanie had flown in all the way from Croatia. I had invited everyone to crash at my place for a few days, so my apartment has been quite full over the weekend My talk went well, and was fairly well visited, even though it was in one of the smaller rooms. A video should be available on their site at some point. Unfortunately, all the community project booths was located on the second floor, and it was my impression that not that many people actually made their way up there, which was kind of disappointing, but never the less, we had some very interested visitors come ask us a lot of questions. The following picture shows Teo and Dan busy explaining the intricacies of Amarok 2 to a few visitors: The venue itself, the IT University of Copenhagen, is quite an interesting building, as can be seen in the following picture: A final thing of note, and I am not really sure why this is, is that every conference in Denmark apparently have to have a model racetrack for people to play with. This one was no exception ( in fact, there were 2): All in all it was a nice conference and I hope to return next year, even though I hope we can have our booth in the main floor instead of the second floor balcony, as that would likely attract more visitors. Also, it could have been fun to bring Mike Saturday, August 9. 2008Plotting Total World Domanation
The wolf has once again descended on Akademy. Last year there were 6 of us, this year that has more than doubled. Come the hacking marathon on monday, this will hopefully lead to a great amount of code, technical discussions, bugfixes and general coolness.
( there are a few people missing from this picture ) Tonight was the social event, with great food and great ( and strong... ) Belgian beer. As should be evident from the above picture, the Amarok'ers were making the most of this and having a great time ( I am sure some of them are still going strong as I am typing this... ) An event like this is, as Aaron illustrated, also the perfect place to ponder the needed steps for KDE to achieve ultimate and inevitable goal of total world domination. Sunday, July 13. 2008Velocity
About 4 days ago, the Amarok team released the first Alpha of Amarok 2. For an alpha, it actually seems to run very well, but of course it still has crashes, bugs and lots of rough edges.
Since this release, the pace of development has been absolutely astounding. In those 4 days, we have so far had well over 150 commits, including 13 bugs closed. We have not been moving forwards this fast since the very first few days when we started porting Amarok to Qt4 and KDE4, and I am not even sure that sprint quite matched this one. One of the main causes for this speedup is, in my opinion, the constructive feedback we have received on the alpha release. So I would like to extend a big Thank You to all the people taking the time to test our alpha release and offering feedback and bug reports. And just to give you something to look at, here is a post alpha screenshot from today. Even though most of the fixes we have done are below the surface, there are still a few visible changes. And yeah, the new applets need to blend with the system colors, which they currently do not at all As a reminder for those wanting to try out the very latest version, or who are tracking the status of a particular bug, there is always the excellent Project Neon Friday, June 20. 2008Amarok 2 now supports uploading to personal Mp3Tunes locker
Thanks to Casey Link, my GSoC student ( whose blog unfortunately is not on planetkde yet ), it is now possible to upload your tracks directly from Amarok 2 to your personal Mp3Tunes.com locker. How cool is that?
Much more info and screenshots at Casey's Blog Tuesday, June 17. 2008Mp3tunes GSoC project status
This summer, I am mentoring Google summer of Code student Casey Link ( aka Ramblurr on IRC ). Casey is working on improving the Mp3Tunes service in Amarok 2, updating it to use Mp3Tunes brand new GPL C lib instead of using their REST API directly, allowing up and download of music, and finally complete automatic synchronization of content.
Casey has been blogging a weekly progress report detailing the work he has done. As his blog is ( not yet ) on planetkde, I thought I would post the links to his first 3 reports here: GSoC Report - Week 1 GSoC Report Week 2: libmp3tunes goodness GSoC Report Week 3: Tanstaafl Overall I am very pleased with Casey's progress. He has approached his project with great enthusiasm and has already committed a lot of working code. I just hope he does not end up completely reversing his daily rhythm because he has a European mentor in a very different time zone! Sunday, June 15. 2008Return of the playlist browser
One of the key pieces still missing from Amarok 2 has long been a usable playlist browser.
So last weekend, as my girlfriend was busy studying for an exam anyway ( how come I always seem to get so much code done when she has exams? ) I decided to do something really simple that would fulfill my own immediate use cases, and still be flexible enough for expanding on later. We had previously discussed that we wanted Amarok 2 to keep its own playlist in the database, as this would allow us to easily tailor the way we store them to our needs. Of course, it should also be possible to import and export playlists from files. So after 2 days of intense hacking, and a little cleanup over the last week or so, we now have a simple playlist browser that supports arbitrary grouping through virtual "folders" that can be created and organized, using drag and drop, anyway the user likes. So here is the obligatory screenshot: Below the main playlist area to the right, there are now two "save" buttons, a save and an export ( I need to find a better icon for one of them ). The export button does what the save button previously did, it saves the playlist to an external file, while the save button now adds the playlist to the playlist browser and starts a rename operation so the user can quickly give it a sane name. In time, this playlist browser will be expanded to show playlists from media devices and potentially many other places, but for now, it works great despite being very simple. Wednesday, June 4. 2008Greater than the sum of parts ( Video podcast support )
Yesterday something really cool happened. It is not something that was planned or that we even really thought about at the time.
It all started with me trying to add a few fixes to the podcast browser in the playlist tab, as I could not get it to show the actual podcast episodes. Although managing to get in a few fixes for related errors, I could not get it to work. I then sang my song of woe to Bart, who, even though he is really busy with preparations for Akademy, sat down and beat the code into shape. So now the podcast view works, even though it still does not save subscriptions between sessions. Then later in the evening it hit me. Between the podcast view working, the Podcast directory service I did a while back, and Mark's brand new video applet we now have this: How cool is that? As is obvious from the screenshots, the metadata of the podcast episodes is a bit lacking still, and there are other minor annoyances as well, but the basics of video podcast support is there and working quite well. EDIT: Oh, and I obviously forgot to switch to an antialiased font when I completely wiped and rebuilt my KDE4 the other day! - Nikolaj Wednesday, May 28. 2008A Cool little hack! ( Free, public domain, audio books in Amarok 2 )
A little while back, Amarok's very own Lydia Pintscher, aka. Nightrose, blogged about a session on free culture at FOSSCamp. Among the comments to that blog entry was a suggestion to integrate free, public domain audio books from Librivox.org into Amarok 2. This spurred a bit of a discussion which resulted in someone coming up with a link to a nice XML api for searching their catalog.
Now, regular readers of my blog will well know what happens when I see a nice API for searching free content.... So, after about an hour and a half of hacking, I give you the brand new Librivox.org service script: As it is implemented as a ruby script, and not as a native C++ service, it is quite limited in its functionality, but it works great for searching for and streaming audio books. The scriptable service framework is turning out to be quite useful. It allows for very rapid prototyping of new services, that are very usable, even if some of them would benefit from being ported to native services. I also think that having a few good scripted services ship with Amarok 2.0 will inspire other people to write new interesting services, and provide examples on how to do so.
« previous page
(Page 2 of 5, totaling 70 entries)
» next page
|
Amarok LinksCalendar
QuicksearchCategoriesSyndicate This BlogBlog Administration |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||

