Issue 150
15th February 2009 by Danny AllenThis Week...
One of the most challenging parts of the transition to Amarok 2 was refactoring the innards of the application to make it more scalable, robust, and flexible for future improvements. In many ways, this was one of the biggest technical problems of the 1.4 series - it did not scale well to new features.
Following the release of Amarok 2.0, we received mixed reviews from critics and users alike. Many writers praised the user interface overhaul and infrastructure changes, such as Ryan Paul in his article over at Ars Technica:
"After extensive testing, I'm convinced that Amarok 2 is a major improvement."
Jeremy LaCroix of linux.com gave a fair review and noted many aspects of Amarok 2.0 that left much improvement to be desired. As a team, we've concentrated on many of the concerns that have been raised in reviews and in forum posts by evaluating importance and relative cost of implementation. Examples of requests which we have brought back for the 2.1 release of Amarok include: track queueing, replay gain support, playlist searching and playlist layouts.
We were well aware that with the release of Amarok 2.0, it would be impossible to match the feature set precedent that had been set so high by us in previous releases. To put it simply, we felt that Amarok as a project would have been detrimentally affected by indefinitely waiting to reach feature parity with the 1.4 releases. We were forced to take a stand and simply tell ourselves to wait to implement them. Trying to incorporate the features that are the most useful and important is a difficult task when there are often twelve different responses between five people in a discussion - one man's garbage is another man's treasure. That said, we did elect to remove some features from Amarok entirely, mainly for technical reasons (multiple database support for example), some for lack of developer resources (Moodbar), and also some for usability reasons (such as the tabular playlist design - remember, we're the experts!).
Initially, the responses to the announcements of dropping features was exactly what we expected - there would be outcry. We expected this for a number of reasons: only the disgruntled speak up, and most readers wouldn't initially understand how they could adapt to new paradigms. We dealt with this by trying the best we could to deal with the fallout by responding to each individual complaint or worry, but obviously we couldn't get to all of them (and some were not worth wasting time on). I feel that we've managed the community quite well, and that the community has been good to us too by mostly understanding our position and being patient with the developments. Honest communication through blogs of missing features that would return was appreciated by users, and we've done our best to bring back the most requested for 2.1.
Many users have decided to stick with Amarok 1.4 for the time being until they see a better set of features implemented. And quite frankly, that's okay with us. On the other hand, there are users who are keen to try out newer development features but are uncomfortable messing with their system compiling unstable development versions. Neon, our nightly build package service has been praised and is exceptionally useful to give users cutting edge builds with no hassle.
Finally, it seems to us that most of our users have noticed the rough edges of the graphics which are being used in the application (specifically the context view). We realise that this does need some work and are trying hard to work with artists to develop some great visuals. We've also tried to improve the usability and performance of the context view by providing only a single containment rather than four, and better widgets to use.
If you're interested in seeing a tour of some of the new (and revisited) features which are coming to Amarok 2.1, take a look at this great overview.
Statistics
Commits | 3301 by 290 developers, 8450 lines modified, 1715 new files |
Open Bugs | 17151 |
Open Wishes | 15004 |
Bugs Opened | 718 in the last 7 days |
Bugs Closed | 482 in the last 7 days |
Commit Summary
Module | Commits |
/trunk/KDE |
766
|
/trunk/l10n-kde4 |
517
|
/trunk/playground |
427
|
/branches/work |
348
|
/branches/stable |
306
|
/trunk/extragear |
258
|
/branches/KDE |
144
|
/trunk/koffice |
92
|
/trunk/www |
79
|
/branches/kdepim |
78
|
Lines | Developer | Commits |
679
|
Thomas McGuire |
166
|
325
|
Gilles Caulier |
162
|
958
|
Laurent Montel |
136
|
115
|
Patrick Spendrin |
97
|
137
|
Frederik Schwarzer |
77
|
366
|
Allen Winter |
60
|
121
|
Davide Bettio |
60
|
49
|
Kevin Patrick Scannell |
49
|
125
|
David Faure |
46
|
49
|
Chusslove Illich |
46
|
Internationalization (i18n) Status
Language | Percentage Complete |
Ukrainian (uk) |
100%
|
Portuguese (pt) |
100%
|
Low Saxon (nds) |
99%
|
Swedish (sv) |
99%
|
Galician (gl) |
97%
|
Greek (el) |
96%
|
Estonian (et) |
94%
|
Dutch (nl) |
94%
|
Brazilian Portuguese (pt_BR) |
93%
|
German (de) |
92%
|
Bug Killers and Buzz
Person | Bugs Closed |
Darío Andrés |
88
|
Olivier Goffart |
24
|
Pino Toscano |
21
|
Maks Orlovich |
19
|
Leonardo Finetti |
17
|
David Faure |
16
|
Mark Kretschmann |
15
|
Martin Gräßlin |
15
|
C. Boemann |
15
|
Sven Langkamp |
13
|
Program | Buzz |
Amarok |
9815
|
K3B |
4875
|
KMail |
4840
|
Kopete |
3320
|
KDevelop |
2595
|
Plasma |
2489
|
Kaffeine |
2037
|
Kate |
2001
|
Solid |
1873
|
Kontact |
1790
|
Person | Buzz |
David Faure |
2110
|
Stephan Kulow |
1749
|
Aaron J. Seigo |
1390
|
Torsten Rahn |
1367
|
Jonathan Riddell |
1132
|
Laurent Montel |
1030
|
Stephan Binner |
782
|
Thiago Macieira |
668
|
Zack Rusin |
638
|
Adriaan de Groot |
631
|
Commit Countries
Commit Demographics
Sex
Age
Contents
Bug Fixes | Features | Optimization | Security | Other | |
---|---|---|---|---|---|
Accessibility | |||||
Development Tools | [] | [] | [] | ||
Educational | [] | [] | |||
Graphics | [] | [] | [] | ||
KDE Base | [] | [] | [] | ||
KDE-PIM | [] | [] | [] | ||
Office | [] | [] | [] | ||
Konqueror | |||||
Multimedia | [] | [] | [] | ||
Networking Tools | [] | [] | [] | ||
User Interface | [] | [] | |||
Utilities | [] | [] | |||
Games | [] | [] | [] | ||
Other |
There are 116 selections this week
Bug Fixes
Development Tools
Heuristic added to only show inline differences if the number of differences is less than half the length of the longest line
Fixes differences at the beginning of the line.
Silly oversight from my sight, both variables x and y do not have to be 0 at the same time when leaving the loop
Graphics
fix crash in okular - I am not sure why this didn't happen before
(the fix comes from msdn <a href="http://msdn.microsoft.com/en-us/library/aa366589.aspx">http://msdn.microsoft.com/en-us/library/aa366589.aspx</a> - look at the example)
KDE Base
Massive refactoring of extender drag&drop handling.
This should avoid bugs with the old way of doing things (toplevel view on an offscreen widget can lose mouse events while dragging), and is generally shorter and cleaner.
There are still some regressions I'll be working on fixing, but it basically works, avoids crashes and is even faster.
Prevent 0% opacity using a mouse action.
Limit opacity to 10%
KDE-PIM
Using nested event loops to achieve synchronous call behavior while doing Akonadi jobs has created way to many issues due to unexpected re-entrancy.
This is basically backport of a series of changes in trunk which replace this form of blocking with real blocking of the caller and delegating the Akonadi job execution to a worker thread.
This should fix all the bugs this is sent to. If they remain with 4.2.1 once it is released, please re-open.
Darío, in case I missed some of the eventloop related bugs, please feel free to close them as well.
Fixes a problem in kpilot where events that recur on a specific weekday each month (e.g., 3rd Thursday) were not synced properly.
This also fixes a problem where recurring events specified as a weekday from the end of the month (e.g., 2nd to the last Wednesday) are handled in a reasonable (though not entirely correct) fashion.
(The palm cannot handle events specified like this, so this patch attempts to convert the "from end of month" recurring event to a "from the beginning of month" event.)
Office
Actually use correct sampling weights for scaling. This introduces some transparency along all edges.
Duplicate edge pixel as source of sampling, which fixes that transparency just introduced.
Also use correct width of dest image which was the main cause of the bug.
All in all it solves bug 169736.
Multimedia
Don't leave stray temporary cover files laying around.
It introduces race conditions I suppose but it's the 80/20 solution (sometimes it really is true that worse is better...)
The following check is an attempt to fix bug 180339 and other issues with Phonon.
The theory:
It has been observed that Phonon will sometimes emit a stateChanged() with _both_ oldState and newState == 0, which makes little sense. After that it goes berserk, until you restart Amarok.
Now we try to detect this weird state, and then try to destroy and recreate all Phonon objects, in the hope of fixing the situation.
Fingers crossed.
Networking Tools
Fix bug causing trackers to be retried continuously when hostname can not be resolved because the network isn't up yet.
Features
Development Tools
- Add a new convenience feature to create slots.
When trying to connect some signal to a slot in the local class, always offer a "Create Slot" option to automatically create a slot that exactly matches the signals signature and the typed text in the editor within the local class.
When the item is executed, the slot is declared within the class, and is added to connect(..) call like a picked slot. (this is not perfect yet, but works ok)
- Fix several bugs in the code-completion
- Only show builtin types in type-completion mode, instead of also showing other keywords
- Allow completing types behind "const "
- Allow non-type completion behind "for(; a < |".
- Propose implementing non-class functions using the implementation-helpers
- Implement a central manager that can manage multiple tooltips at the same time.
A priority can given when showing a tooltip, that can be used to either force the showing of only one specific tooltip, or to define the order of the vertically stacked tooltips.
- Fix a slight flicker that could happen when showing the tooltip
Educational
Graphics
Add buttons to rotate the ruler (turn left, turn right).
The buttons are only visible when hovering over the ruler and if they are configured to be visible (default: not visible).
Assign keyboard shortcuts to SmugMug plugin
- Export: Alt-Shift-S
- Import: Ctrl-Alt-Shift-S
Note: they work in digikam, but not in gwenview for some reason
Assign keyboard shortcuts to Facebook plugin
- Export: Alt-Shift-F
- Import: Ctrl-Alt-Shift-F
Note: they work in digikam, but not in gwenview for some reason
first approach to use tabbed queues
Add consistent keyboard shortcuts for all KIPI import/export plugins:
- Alt-<letter> - menu shortcut
- Alt-Shift-<letter> - export
- Alt-Shift-Ctrl-<letter> - import
The following <letter> is used:
F - Facebook
R - Flickr
P - Picasa Web Albums
S - SmugMug
G - Gallery
L - Flash (simpleviewer)
H - HTML
I - iPod
Tested both for Digikam and Gwenview.
Note: in Gwenview you need to open Plugin menu first to load plugins and make shortcut work (this may confuse users)
Implement inverse transformation for the perspective tool.
This allows transforming photographed images back to a rectangular shape.
Add a simple method for marking current image as a "head of stack", ie. the one to show
In future, this will probably get replaced or complemented by a nice GUI forcomparing images side-by-side, but I have to work with stacks *now* :)
KDE Base
Adding a signal to ksmserver, that notifies DBus when KDE is about to logout.
This can be useful for some applications, in that case for PowerDevil, as related to bug #183273.
PowerDevil should be notified when a logout operation is in progress, so that it won't trigger a suspension while the pc is actually shutting down. This behavior is (was) really annoying.
I'm CC-ing the list since I don't know who the maintainer of ksm is, and also, should I backport this?
Obviously, a commit in PowerDevil for taking advantage of this is coming very soon
Adding a timeout feature to inhibition.
This can be useful both in case of cleaning up, both for some use cases.
I have just added the infrastructure as an overload, as I don't know what effect this could have on Solid API.
I'd use ::inhibit(QString,QString, int = <default>), but I still fear this could break something.
Kevin, I'd really like your opinion on this, I think this feature is really needed and can be useful.
I am also planning to add a check through DBus, for that, wouldn't it be smarter if we passed a KAboutData to inhibit?
So we would have the application friendly name for the notification and the service name we need for DBus.
I'd like your opinion on that too.
We could deprecate the current inhibit, but my main concern is DBus and if we are actually forced to keep some kind of API compatibility.
From now on, solid will check if hybrid suspension is available.
If that is the case, it will automatically trigger hybrid instead of standard suspension to ram.
So there won't be extra options in PowerDevil and/or Solid: Hybrid will be made default if available
Added blurring during the logout effect.
As this is done entirely using mipmaps the quality isn't the best.
Might add a shader later that will generate the final image so it uses mipmaps for realtime blurring while using a high quality blur at the end.
using xrandr to change the backlight if hal does not support it
Start adding support for retrieving contacts from Akonadi through the DataEngine
Rework the Akonadi engine in preparation for Contacts
- Fetch collections on demand only, should save us some startup time when loading the akonadi engine (no queries run until you actually use it)
- Link in KABC
- Some plumbing for Akonadi Contacts
- Renaming the keys for Emails and collections to:
EmailCollections to retrieve all emailcollections
ContactCollections to retrieve all contactcollections
Email-<id> to retrieve specific emails
Contact-<id> to retrieve specific contact (no workee atm)
Rework of dim screen for administration mode effect.
Now it changes brightness and saturation of all windows instead of painting a semi-transparent area on the screen.
And it works nicely with fullscreen effects.
So the windows are not dimmed in e.g. coverswitch.
Provide the ability to choose which of the two buttons to show in the Lock/Logout plasmoid.
It lives! First successful (well, mostly) spell checking of text containing sentences in more than language.
Apart from that:
- language guesser also returns info about how reliable detection was. Will be needed for fallbacks
- fixed copyrights
- more tests
beginning of a dbus interface
GUI: "Show Original File" (or "Show Original Directory") in the RMB popup for a symlink that points to an item in another directory.
start implementing some metadata extraction - am a bit confused whether the KFileItem data can be done directly through Soprano or not
Blur windows which have hasAlpha set.
That way background of e.g. transparent Plasma panels and Konsole will be blurred as well.
Add fuel efficiency
systemmonitor dataengine now gives ranges, translated names, and translated units for all sensors
Incorporated the new metadata provided by the systemmonitor dataengine to be able to use /any/ sensor provided by it.
Value changing animation was also added.
A better wobbly window effect for resizing.
Extra spatial constraints for edges that have not moved, so that only the edges/corners being moved will wobble.
KDE-PIM
Add options to enable external storage payload (disabled by default) and set a size threshold.
Files above this threshold will be stored in an external file if the external storage is enabled.
adapted the ical resource to handle notes.
Starting to implement KWallet support for user account details.
Both KWalletManager and akonadi's imap resource were useful to discover how KWallet API works.
Right now the user account and its password is stored in kwallet.
Next: retrieve the user account details from kwallet.
Office
save the musicshape inside a draw:frame to prepare for the possibility of also saving a pixmap and/or svg representation of it
various svg import improvements:
- better handling of stroke types
- basic support for embedded svg fragments
- support for pattern viewBox attribute
- some fixes for parsing of stroke dashes
- display attribute is now managed by the svg context
- x and y attribute of use and text elements are parsed separately now
o add a way to store temporary images not part of the image collection to the store on saving.
This should be used only for temporary images e.g. a pixmap representation of a draw:frame.
The code is untested but should work.
Here is the functionality to save the qimage for the frame.
Can you please check if it works.
save the music shape also as an image in odf documents.
The resolution of the saved image should perhaps be made configurable, but now at least OOo will at least show something when loading a document with embedded music
- Implement a basic zoom out/zoom in
Multimedia
Option to automatically scroll to active track on track change.
Useful for people that keep a playlist which may be larger than the view (andin random mode, for example)
Simple filtering works now. Code has been inspired by the BBC service.
So, who can tell me where the regressions are? ;-)
Make the BBC service behave sanely with filters on initial population on top level items.
Or in other terms, play nice with bookmarks :-)
Allow choosing between album and track replay gain modes, or even disabling replay gain altogether.
I put the option in the Settings menu, as that seemed the most appropriate place (we don't want to pollute Amarok, and it's not a Playlist option).
The other option is to put it in the configuration dialog, but users may want to change it when changing random mode between track and album, or when changing playlists.
There are no icons for the different modes in the menu yet.
add filter for date added to collection.
you can add a string like "added:today" or "added:<1m3d" to the filter textedit.
there is no GUI for it at the moment, but this at least provides the backend support.
yes, this as a discoverability of -1000, but i need some UI ideas (and i think Dan has plans to redo the edit filter dialog completely, so i'm somewhat holding off).
Another large amount of changes...
* New implementation for RecordSettingsPage, increased support in LinTVRecord for the record options.
* Screenshot support slighly enhanced.
* When in fullscreen, the cursor is automatically hidden after 3 seconds.
* Initial support for cropping video in LinTVPlay and LinTVRecord.
Networking Tools
added: own mimetypes for the network devices and services, for proper handling in the KIO (display) system
User Interface
Add KNS ("Get New Stuff") support to deKorator
Frank (of openDesktop.org fame) was kind enough to add the GNS provider entries to kde-look.org for deKorator themes, and I quickly tested it with some themes.
Unfortunately, many themes are not following the guidelines for archive names or contents, so after installing them, they do not show up in the theme list.
I will improve "broken" theme file detection in the future.
Utilities
Games
Added an animation to the status displays to that they transition to their new value in a series of small steps.
Not very useful, but it looks neat.
Added "Configure Killbots" action to the toolbar.
This is an experiment to make options, game types and themes more discoverable.
Optimization
KDE-PIM
Resources were being loaded 3 times (apptsummary, todosummary and in korganizer's kpart).
Now apptsummary and todosummary, instead of loading the resources, they just create korganizer's kpart (in case it doesn't exist yet), which loads the resources only once.
This also eliminates the "graphical bug" when switching to Summary, in which the agenda items disappeared right before the switch (because the second resource load closed the calendar).
User Interface
Speed up the rendering of the radial gradient by avoiding an expensive conversion and scale
Thanks Maksim for noticing and telling me about this
Games
Other
Development Tools
Fixup of the authors:
Moved Matt to the credits section as he doesn't actively work on kdevelop4 source code.
Separated credits into two sections, the first part lists people that contributed to kdevelop4, the rest is separated by an "old contributors" entry and lists anybody who has been in the list but worked only on kdev3.
If anybody reading this feels he should be
a) moved from author to credits or vice versa
b) added to either of the sections as he isn't listed just let me know by replying to this mail.
Move amilcar to the authors section, he might not code much, but he's very important for our website :)
Add Cédric Pasteur to the credits
Educational
committing python script to test what exactly the panormaio plugin has been trying to do, this can also act as generic data feeder for plugin if possible...
anyways this file right now is for reference, i need to correct the way json is being parsed... instead of being converted to dict and unicode it need to dict and list
Graphics
Move "Album Properties" and "Tag Properties" actions to the bottom of the context menu and rename them to "Properties...", like most applications do.
This way the action can be found more easily.
Facebook application type has changed to Desktop (was wrongly set as Web before).
This requires slightly different way of authenticating/signing API requests and will therefore break Facebook import/export for all users that will not upgrade to new code.
Since Release Candidate 2 is this weekend, this should not be for too long. SVN users should just rebuild.
KDE Base
Moving calendar data engine to kdebase.
import the video widget, will add later to the build
Some information about what exactly I am trying to achieve in this branch
Adding topsecret file: if you read this file you'll get blind.
you would think by age 32 i would have right and left sorted out
Disable application keypad support in the default key bindings file as, although it produces the correct key codes as tested using 'vttest', it breaks Vim - which enables application key pad by default.
Move solid-actions-kcm to kdereview
Office
Make it once again possible to compile KOffice with KOXML_USE_QDOM defined; this is not defined by default because it breaks kpresenter, kchart and kplato and it is slower, but it should be definable so we can check for errors in our dom implementation.
(And I'm sure there is one, since if I define KOXML_USE_QDOM, krita loads its documents with Qt45 again, which is broken if it's undefined, but I can now start to debug the problem again).
Note well: KoXmlNode has never been meant as a class you can extend with convenience methods.
Its API should be completely identical with the correspoding Qt class!
Convenience methods should be defined outside this class!
Also note: I have marked all places where applications use the aforementioned convenience methods with XXX!!!
- webforms2 branch
Disable Box, Mitchell,Lanczos3, BSpline,Bell scaling methods
Rename Triangle to Biliniar
Implement Bicubic (test shows it to be as good as photoshops), but it has a bug which gives some nasty sideeffect sometimes.
Multimedia
Add my own personal playlist layout as the 3rd default, now named "Verbose".
This layout has evolved over some time and I think it is pretty solid by now.
The one thing I am still pondering is whether the track names should really be in an italic font or not...
Solid requires a networking backend to be installed for Solid::Networking to not be useless.
The only backend currently is networkmanager.
Because theirs no Solid::Networking::isUseless() method, only enable the automagic adding/removing of service if networkmanager is found.
This is so not futureproof.
Remove the Love/Ban/Skip buttons from the last.fm service browser.
They are extraneous and ugly.
"And now for something completely different..." Set a style-sheet on the TabBar widget in the CurrentTrack applet.
You will notice that it looks _very_ different now; much less blocky than before.
But it also still has some issues (at the bottom e.g.), which might be solvable with some tweaking, or not.
Whatdoyouthink?
Factor out all Phonon initialization code into its own method initializePhonon().
I did this for clarity reasons (code is easier to read now), and also in preparation of the "let's re-initialize Phonon if it goes wonky" plan.
Please watch out for regressions.
Networking Tools
Moved skype protocol for kopete from playground to kdereview
Initial import: a kioslave listing the network from a device centric point of view, WIP
Includes a rudimentary library solidnetwork which might become part of solid very later on.
It contains objects which represent the current topic of the network and gets updated as the topic changes.
The backends might be the service discovery services (DNSSD,SLP,...), user/admin edited data, and whatever else helps to know about what is/should be in reach of this computer over the net.
Currently DNSSD as delivered by KDNSSD is used to feed some data to play with.
Note: If you play with this version of networkkio, press reload after entering network:/ the first time, because the cache is only filled after the first call to the kioslave.
Do not use the old protocol anymore, use XMPP1.0
This means you don't need anymore to configure something special for SSL
Because we now use srv, being able to change the host is usless
Some servers resuire session to be used with XMPP1.0
Also the google server change the resource and doesn't allow us to send a wrong resource in the from field, so don't fill that field
Utilities
add filelight to utils, it compiles cleanly, and I want to see it on ebn.
added: README
Games
rework pause mode
- game is now paused if the board loses focus (e.g. if a menu is opened or the application itself loses focus)
- game can now be resumed by clicking the board
There is a strange timer issue that needs to be resolved.
If you pause the game and then choose to play a new game, the timer has the negative pause time. o.O
But that's a different matter and the timers are on my list anyway. Too many type casts... :)
Move KTron to KDEReview