6th April 2008by Danny Allen
There were many problems with the NEPOMUK server and all NEPOMUK services being KDED modules. Whenever there was some bug in one of the services, KDED would crash completely and maybe even more importantly, KDED would be totally blocked during heavy database activity. In the end I learned that KDED was never intended to host arbitrary services but only small, stable ones.
Thus, I decided to give the NEPOMUK server its own process including its own service handling. The result is a much cleaner design than before. The NEPOMUK server itself does not host the data repository anymore. That has also been moved to a service. Using the server's automatic service dependency handling, other NEPOMUK services will not be started until the data repository is ready (this might take a while in case some conversion has to be done, think of Soprano backend changes).
The server itself is started as a normal KDE autostart service at login time and can still be controlled the same way as before. It also provides a legacy D-Bus interface to access the data repository (although that is running in an extra service now). And by "running", I really mean as in an extra process. This might scare some people, since for each NEPOMUK service a child process is spawned, but this has the advantage that buggy services will not bring down the whole system (thank you Akonadi for the design idea).
Now, the whole system is much cleaner and more responsive as services won't block the storage anymore. It took quite a long time to get here but I think that the NEPOMUK server can be regarded as "done" now (except for bug fixes and improvements of course).
The best way to access the data storage is still Nepomuk::ResourceManager::mainModel() as it connects through a local socket instead of D-Bus (which is faster) and re-connects if necessary.
The old D-Bus way still works though:
Soprano::Client::DBusClient client( "org.kde.NepomukStorage" );
Soprano::Model* model = client.createModel( "main" );
The NEPOMUK Services
As already mentioned the most important service is the storage, as it hosts the Soprano data repository which contains all the NEPOMUK data.
Apart from that, there is the Strigi service which controls Strigi, i.e. does file indexing using a NEPOMUK backend. The ontology loader makes sure installed ontologies are up to date in the data repository. This is important for type and property information.
Playground holds more services, most importantly the file watch service, which updates the metadata when files are moved or deleted. This is a feature that I really want to have in KDE 4.1. But the problem is that it depends on inotify at the moment, since FAM does not support the moving of files. You do not know the original URL of a moved file.
Any input would be appreciated!
The NEPOMUK Social Query Daemon service is the one I blogged about before. It is a demo service that is supposed to attract developers. I don't think it really did its job yet though. ;)
My latest commits to playground today introduce the "real NEPOMUK". Only dealing with tags, ratings, and flat file indexing, we would not really need RDF. But now we bring arbitrary classes and relations into the mix. The PIMOShell is the first tool that supports creating new classes and properties. It is intended as a maintainer and debugging tool for all NEPOMUK data as it lists all available types, their instances and the instances' properties and allows to modify them. It may be worth playing with!
Vladimir Kuznetsov moved Step from kdereview to kdeedu. This means that KDE 4.1 will ship it! Last week Step was demonstrated to several of Carsten's students (7th and 10th grade) resulting in a little feedback. This feedback already resulted in several changes, including the ability to easily modify the speed of the simulation:
Other recent changes include the tutorials. Aliona, Vladimir's wife, added five tutorials. The following video shows one of them (the second) and also demonstrates how easy it is to "play" with Step: I added a rectangule to the simulation to see what happens when the ball bounces against it...
We hope to get more bug reports and ideas for Step, now that it is inside an official KDE module. What we currently would like to get from users is more tutorials and more examples. So, we ask you, dear reader, to test Step and construct one interesting file and send it to us (email@example.com) with the permission to share it under the GPL or another free licence. For example, why don't you create a tutorial demonstrating advanced graphs or perhaps create a Billards-like situation on a "table" to demonstrate the physics of Billards?
If you have great ideas for simulations but do not have either time or the ability to create them for Step, please add those ideas to our Step Wiki. We will try to create them for you!
Last week, Marcus D. Hanwell (last year's Google Summer of Code student for Kalzium) ported the 3D Viewer of Kalzium to use the latest released version of Avogadro. This move enables us to use several advanced features which have been added to libavogadro after KDE 4.0 was frozen. For KDE 4.2 we now plan to stop using a local snapshot and use the version of (lib)Avogadro installed on the system.
For KDE 4.0 this was not possible as the Avogadro API was still under heavy development. For KDE 4.1 the API is unlikely to change very much, but the hard freeze for KDE 4.1 is a little too close. Marcus' Summer of Code project last year was a huge success. It resulted in many improvements to the Avogadro library itself, but, even more importantly, where he ported Kalzium to use an early snapshot of the Avogadro library. Marcus has continued working on the Avogadro library and recently was able to begin working on KDE trunk again (after a trans-atlantic move, laptop breakage, and many delays in shipping his desktop).
Now that Kalzium has been ported to the latest Avogadro snapshot, Marcus will continue working on exposing more of the features he implemented during his Google Summer of Code project. He has also expressed an interest in mentoring students for this year's Google Summer of Code (if any suitable applications are accepted).
If you want to discuss Step with us, please visit us in our new IRC channel, #step on irc.freenode.net.
|Commits||2302 by 224 developers, 5049 lines modified, 1353 new files|
|Bugs Opened||306 in the last 7 days|
|Bugs Closed||198 in the last 7 days|
||Adriaan de Groot||
Internationalization (i18n) Status
|Brazilian Portuguese (pt_BR)||
|Low Saxon (nds)||
Bug Killers and Buzz
|Aaron J. Seigo||
|Aaron J. Seigo||
|Adriaan de Groot||
There are 126 selections this week
digiKam from trunk : fix Crash when starting new Advanced Search tool from Marcel...
This is the same problem here than from Statusbar : KLineEdit. Using QLineEdit instead work fine !!!
Problem is relavnt of stylesheet applied to KLineEdit with Qt4.3. Note than QT 4.2, no crash appears...
There is a _serious_ problem here which must be fixed in KDELibs before next stable KDE release.
Properly close DOM-created nodes. Fixes CNN.com election tracker, and 3 Acid3 tests (more like 3.5, actually --- gets one further).
It also makes Acid3 look uglier, since it exposes a bug in rendering of alternate content (it didn't show up before since the object was plain not getting loaded).
I know what's wrong just need to <strike>Bug dfaure for a solution</strike>figure out how to fix it.
fix parsing of the argument of the functional :not() selector to obey CSS3's definition of a simple selector.
KHTML now fully passes Daniel Glazman's selector test!
Fix calculation of required display size given (lines,columns) in TerminalDisplay widget. Include width of vertical scrollbar (if visible) and top/left margins. Konsole will now start with a default width of 80 columns on most systems if no window size has been saved in konsolerc
The initial size of Konsole is specified as 80x40 internally. Qt constrains the size of top-level windows on their first automatic resize to a maximum of 2/3rds of the screen size (see QWidgetPrivate::adjustedSize()).
This means that the display might not get the 80x40 columns that it asks for, depending on the desktop size.
Change and fix Uncompress support. Old value of "true" is converted to "always"
* "always" - try to uncompress, if can't detect archive type, or error uncompressing, fail
* "archive" - try to uncompress if it's an archive, otherwise, just copy
* "never" - default, just copy the files to the destination path
also changed the signalPayloadFailed to pass the entry pointer, used in my local ui changes to report failures when installing
There was a bug in KMines: the program was freezing in a custom game if you chose to put in the field so many mines that there was not at least 9 free positions. Now, it's working.
New to avoid trivial games, KMines now constrains the user to let at least 10 (-> one more than 9) positions free.
Note: I'm not sure it's a good idea to avoid to put mines on neighbor positions to the start position... To discuss...
First steps for the automation dialog GUI:
Use KConfigXT instead of plain KConfig. Love the kcfgfile arg="true" feature in the kcfg file which allows to construct multiple instances pointing to different files, which is needed here because each site check to automate has its own configuration file. The implementation is a little strange though :( I have to do things like this:
AutomationConfig* config = AutomationConfig::self();
because AutomationConfig::instance only do something if self() is a null pointer.
The automation configuration dialog now shows with the several site entries in the left, still missing the widget with the configurations and the wizard to configure a new automated site check.
Allow to configure the mail transport within KLinkStatus as well as Identity settings like real name and e-mail. This identity setting are specific to the application but it is also possible to use system wide setting (but not to change them).
If an automated schedule is set and the mail transport is not defined a config dialog is automatically presented to the user.
No more items left in the automated support thing :)
AbstractAlbumModel is a QAbstractItemModel based on our Albums as managed by AlbumManager.
This base class provides most of the functionality for mapping albums to QModelIndexes and vice versa and complete mapping of the signals from AlbumManager when an album is added, deleted or renamed. Editing and Drag-and-Drop is not implemented.
AbstractSpecificAlbumModel is a subclass that manages thumbnail generation for album and tag thumbnails.
AbstractCheckableAlbumModel adds a property to make the albums in the model checkable. The check states are kept in an internal QHash. Various methods are provided to access the check state by Album*.
AlbumModel and TagModel are finally the subclasses that can readily be used, providing physical albums and tags resp.
The current implementation is very very very simple and minimal, and misses a bit of stuff (eg the queue'ing for messages, errors, etc), but for now seems working.
Many thanks to Maksim for his precious help with the extension working :)
PhotoCopy. Changed to print image using 'scan' print mode with scanner resolution obtained from sane, can do this as scan/print i one operation. Also changed to parameterise m_extraMarginPercent in call to KookaPrint::printImage to ensure that printed image is close approximation to original.
Operation is available from the "Scan - PhotoCopy" menu. When presented with print dialog simply push print button (or cancel to return). If print button pushed
- print dialog will disappear
- scan progress bar and scan will start
- printing status message box will appear
- printing status message box will disappear
- print will spool and print dialog will re-appear
digiKam from KDE3 branch: Tag Edit Dialog is now the common implementation for simpler and fast Tags hierarchies entry.
- Dialog is now redesigned. There is new text to guide user for fast tagging creation.
- In this dialog, the rules are the same than Caption & Tags create new tags field.
- Dialog includes several static methods to create TAlbums and show errors if creation fail.
- Tags Folder View, Tags Filter View and Tags pop-up menu use these new static methods.
New Search Interface:
SearchTabHeader is the widget at the top of the search sidebar.
It provides a directly accessible line edit to start a quick search, and a button to start an advanced search.
In the lower part, the current search can be saved as a stored search, or if a stored search is selected, its parameters can be edited.
The widget currently consists of two group boxes. This may not be the best solution, but after some experiments with separator line, flat group boxes, QFrames etc. this was the most acceptable solution so far.
Advanced search is still under development; you will see that it will show an UI, but not carry out a search.
digiKam from trunk : Marble widget integration into right sidebar as new Geolocation of picture!
A screenshot of digiKam using Marble can be seen here:
Make KDE3 applications restart in saved session using a wrapper script 'kde3' if not running in a KDE3 session (<a href="http://lists.kde.org/?t=120569055200005&r=1&w=2">http://lists.kde.org/?t=120569055200005&r=1&w=2</a>).
Make KDE4 applications restart in saved session using a wrapper script 'kde4' if not running in a KDE4 session (<a href="http://lists.kde.org/?t=120569055200005&r=1&w=2">http://lists.kde.org/?t=120569055200005&r=1&w=2).
- Use the KDE shortcut editor widget to edit shortcuts in the Manage Profiles dialog.
(Requires recent kdelibs rv. 792234 for the 'Clear' button to work)
Implemented tagging of multiple files at the same time.
The result is always an intersection of the tags of all files.
Another possibility would be to only change the clicked tag. Feedback?
Add some i18n support.
I'm slightly concerned that the translations may not be easy without context, but including context means that applets can't just call i18n() on all strings (which is kind of the point of the I18N_NOOP calls).
CC'ing the kde-i18n-doc list for comments.
This should finally address all the issues raised by the review process.
Thanks to David Faure the 'Copy To' and 'Move To' menus in the context menu can also be used by Dolphin now :-)
In opposite to Konqueror the sub menus are turned off per default.
Minor issue: the Dolphin context menu should take care about the protocol capabilities (copy, move, delete, ...) like in konq_popupmenu (I'll fix this before 4.1).
Added user friendly substitutions to the calculator command line.
- e+ E+ and ^ becomes the pow operation
- Honor locale decimal symbol
- Added "and" "or" "xor" operatons
Add beginnings of Windows/WMI Solid backend. Make appropriate backend build on appropriate platform.
The code right now is all copied from HAL but this will obviously change (didn't svn cp because there's no need to preserve the history as it's not relevant to this platform.)
New option: if [General]->ShowReminderDaemon is false, then do not show the korgac icon in the systray.
I will add this setting to the KOrganizer configuration dialog.
Note however that the daemon still runs whenever KOrganizer is started.
Some more refactoring.
Changed the scripting backend to Kross!
Some things dont work yet (field values), but its a good start.
Added a 'report' object available to scripts which contains a helper to reference any object in the report, aswell as its title and data source.
Added a 'constants' object to the script engine because kross doesnt allow 'global' contants, they have to belong to an object.
Maybe some features like this could be borrowed from qtscript (adding values/constants to the manager, aswell as objects)?
Remove the psuedo queuing from both the library and brainzscanner.
Double click an artist name in brainzscanner now fetches releases.
Refactor a bunch of public calls in lib to better indicate how they behave.
Brainzscanner has the start of a config dialog.
Make it possible for QueryMakers to define which levels of filters they accept.
The default implementation is to accept everything. Some QueryMakers ( Such as Ampache and Mp3Tunes ) do not support filters for all the levels in the collection tree, and thus override the validFilterMask() function to return a mask of the filter levels that they support.
The collectionTreItemModelBase has been updated to honor this and only add filters that are accepted. The AmpacheQueryMaker now only accepts Artist filters.
This system will also be really useful for making the FilterEditor aware of which filter options should be available depending on which collection we are building filters for.
Added group policy feature. Each custom group can now have several default settings which will be applied to the torrents of that group.
These are the settings we now support :
- Default save location
- Max share ratio
- Max seed time
- Max upload rate
- Max download rate
- new: recursive costs system, useful to determine automatically when to evaluate arguments and when to meta-unroll.
- use it in Product to determine when to eval args. not yet used to determine when to unroll. for now, not used anywhere else but that'll follow.
- fix badness of my last commit
Cache and reuse pixmaps for each frame. Before, new ones were created, and Qt would stick every single one of them into the pixmap cache, potentially keeping as many as ~1000 X pixmaps pointlessly, which could slow down things such as EXA (though FredrikH made the latest devel X handle that better..)
Imported a new snapshot of the Avogadro library. Ported the compound viewer to use the new snapshot.
Fixed the visibility issues (I think). I still need to fix the label settings which are currently not working along with the global quality. Also need to expose many of the new engines and other new features.
This is a modified version of the Avogadro library that was tagged as 0.6.1.
Introducing Nepomuk::Service, the base class for all nepomuk services. Nepomuk services are close to KDED modules (from a developer's perspective) but are controlled by the nepomuk server.
Each service is run in its own process since nepomuk services tend to perform long operations and one buggy service should not bring down the whole server.
My next commit to kdebase will cover the new nepomuk server and the base services.
Completely redesigned the nepomuk server.
It now mainly acts as a service controller and configuration endpoint.
The nepomuk store has been converted to a nepomuk service which acts as the default dependency of all other services.
Strigi is now also controlled via a nepomuk service.
This redesign makes nepomuk much cleaner as there are no more special cases. The depencency handling takes care of letting other services wait for the storage service to convert data if necessary and also stops and starts dependecies automatically.
While it may seem like wasting resources to have multiple processes it makes the whole nepomuk system (which was never intended to be lightweight btw) more stable and responsive.
A little code cleanup.
We now use the new NAO ontology memebers nao:prefLabel and nao:numericRating instead of the deprecated ones nao:label and nao:rating.
The API does not change. But the data does. The latter is handled by the first migration service which I will commit in just a minute.
Kickoff changes asked on panel-devel. As voted, the background painting did not get in
- Strict mouse hover
- Leaving an item will unselect that item
- Leaving the viewport will unselect the selected item if was any
- Better keyboard navigation
- If no item selected, Up will select the last item, Down will select the first item
- Search improvements
- The first result becomes the selected index, if exists
- The bottom tabbar is hidden for ease of use, intuitivity and letting more room for search results
Use the document-open-recent icon instead of view-history on the "Recently Used" Kickoff tab. It's only a fine line between those two, and both would probably be suited for this, so I argue the change with the following two reasons:
a) Looks less sharp and black with the default Oxygen theme (making it look more in place with the other tabs, hopefully), but more importantly:
b) It's specified in the naming spec, and therefore should exist in a lot more themes than just Oxygen.
merge some ad hoc changes to RangeImpl::surroundContents, whose main rationale is "keep Acid3's 11th test happy".
I tried hard to make up a sound explanation for those, digging deep into the specification's arcane semantics, but eventually, I don't think I really convinced myself, and certainly not Harri.
He says: "it's a pragmatic solution".
And that's what it is.
now that we have both proper tabs and they are animated on switching, the icon movement is gratuitous.
it also doesn't work visually with non-South facing tabs, so even if it was kept it would remain a South only thing unless the text/icon placement was altered significantly.
i opted for less drawing crazyness and more calmness.
Some cleanup in AmarokConfig, there was quite a bit of rot in there.
This commit also includes commented out code to support crossfading/gapped playback.
I cannot test this currently as it isn't implemented in the xine backend and I can't get the gstreamer backend to work.
Improve pause behavior: game will now pause automatically when it loses focus, this helps us deal properly with all configuration options and modal dialogs.
When focus is restored the game will either resume or continue paused (if it was paused by the user before the focus event.)
1. Replaced the "computer skill" menu by a KGameDifficulty one. => Thus: more consistency between our KDE games and less text to translate for i18n teams.
2. For high scores, the game now takes the lowest difficulty level chosen during the game and not the current one anymore. No use anymore to change to level "Impossible" just before the last turn! ,o)
patch from <a href="http://mattr.info/r/267/,">http://mattr.info/r/267/,</a> list newly installed applications