In my last post, I gave some background on what a shared-memory cache is, and how KDE already uses one (KPixmapCache) to save memory and make the desktop more efficient. I also noted how the current implementation leaves some things to be desired, and hinted at a new implementation I was working on.
In this second part, I’ll discuss some of the basic design principles of the new class, which I called KSharedDataCache.
Why a new class?
If you didn’t read Part 1, you may be wondering why I don’t just fix the current implementation, KPixmapCache, instead of writing new code. It’s a good question, but the short story is that due to the public API used by KPixmapCache, it is non-trivial (to say the least :) to improve KPixmapCache and take some necessary steps to improve its performance. The penalty of getting it wrong is pretty severe as well, as there have been probably hundreds of reported crash bugs already due to KPixmapCache.
Since forever (where we define the start of time to be when I started working on Plasma) it has been possible to run Plasmoids, or any widget that Plasma can display, in a window on its own using plasmoidviewer. It isn't completely satisfactory for running widgets in a window, though, because at its heart plasmoidviewer is a development tool meant for testing and debugging Plasmoids.
(By the way, did you know that there are similar apps for DataEngines and Wallpapers? plasmaengineexplorer and plasmawallpaperviewer.)
Marco worked up a small proof-of-concept app in playground some time ago that lets us run Plasmoids in windows slightly more satisfactorily. Here's a shot of a clock and the microblogging Plasmoids running with a Konversation window in behind and the pretty KRuner window nearby:
Right clicking on a Plasmoid gets you the usual suspects in the context menu along with a "Quit" entry that quits that Plasmoid. What's really cool is that they all run in the same process, keeping overhead down. Now, the goal for this ...read more...
Right from the time I found about the Gluon project (which I found on the GSoC ideas page), I've been very excited and having loads of fun with the Gluon team (as usual :)
I'm happy to announce that the Plasmoid has taken its first step, displaying a Gluon example game on an OpenGL rendered Plasma applet. The applet is a Plasma::GLApplet which uses the Gluon Framework to create game graphics and output game audio alongwith support for input.
Here's a screenshot (yes, the transparency is a bug)-
Wow, what an awesome development cycle! The Lucid Lynx has matured to a ripe old age of 10.04 and now brings you 3 years of support through free security and maintenance updates for your desktop. The Kubuntu team, as well as the entire Ubuntu community, did an awesome job this cycle and my hats off to each and every one of you, job well done friends!
Some new things for this release include:
KDE Plasma Desktop 4.4
An official Kubuntu Netbook Remix featuring KDE Plasma Netbook 4.4
Installer slideshow (I did the text, so read it! Let me know how horrible it is and we can fix that up in future releases)
Today we released Kubuntu 10.04 LTS. This is the first Long Term Support release to feature KDE 4 Platform and Applications. It's very exciting that the long journey to KDE 4 has come to the level of stability where we can call it LTS.
A big thank you to the hard working Kubuntu team, too many to name but they have toiled day and night over the last 6 months to make sure you have the latest software with the minimum of bugs.
While Clarisse had chickenpox and then the other kids were on holiday for two weeks, develoment has been slow for me but I managed to finish a few tasks. - Picture Frame widget: I gave the Picture of the Day various providers a good test and repaired those which were not working anymore. Marco "notmart" discovered that the Flickr one was constantly asking for kio processes and he fixed that. I added today the change of the picture when the day changes. - Etienne "eti" who has been providing patches for several KDE areas got a svn account and implemented an auto-update feature on the Picture Frame for static pictures: the user can set the refresh time for his pictures. Thanks to eti for all the patches he is committing, it's great to get new people into KDE development! - I also got a contribution for KAppTemplate, the small program in kdesdk which generates templates to get you started in KDE programming (those templates being also used by KDevelop). Lindsay sent a Konq plugin template which I ...read more...
I wanted to blog last monday - but just didn't get too it. Bloody busy at work. And NOW is the only time I have, as later today I work, then it's queens night in NL, and then queens day, and then it's weekend again and I'd be a week late....
Anyway, I just wanted to write a bit about last sunday - which was a brilliant day. I went to the Elf Fantasy Fair in Kasteel de Haar, a beautiful medieval castle close to Utrecht.
And here I'll include a few pics (more on Picassa) to give a taste of what THAT was like ;-)
I'm sure you recognize them...
This dude just went over the top - he looked like he walked just out of the movie...
And this lady also must've spend quite some time on dressing up.
A big hello to all planetkde readers and authors. This is my first post here and it’s about my main current KDE project. Since KDE 4.4 the kdeplasma-addons package contains an onscreen keyboard. I decided to write one after I didn’t find a really useable keyboard for text input for a touchscreen-umpc. Well, I gave the umpc back. But the next time I buy a touchscreen device I want to have a nice keyboard for text input – that’s why I’m working on this. I never used the keyboard in 4.4 on a touchscreen – and I never got much feedback before its release.
Onscreen keyboard in KDE 4.4
Now I have to admit that the 4.4 version is not much useful for several reasons – but the good news is that this will all change in 4.5. This is the list of improvements I have already in place:
The speed and memory usage of the keyboard has been greatly enhanced. I ...read more...
Yes, this is the now customary "we have students in GSoC for our project" posting for Plasma. First, though, some updates on the scripting session from yesterday: Jonathan Riddel has posted logs of the meeting (thanks Jonathan! :); I've updated the documentation on Techbase for the Plasma Shell Scripting and review is welcome as are fixes made directly to the page, it is a wiki after all!
Back to the topic at hand, however: GSoC and Plasma! It's a bit of a different kind of year for us with GSoC, to be honest. In past years we've had a number of "brand new ideas being implemented from scratch" type projects. This year there's a much strong focus on finishing out features.
We tend to design a little bit ahead of ourselves so that we know where we are trying to go and always know what there is to do next when we finish what we're currently busy with. While this can sometimes lead to a feeling like we're constantly "behind" where we ...read more...
Hello KDE followers and developers. As some of you may already know this year I play the role of mentor for my baby, Plasma Media Center project. A lot of work is going on behind the scenes thanks to the big efforts Mr. Christophe Olinger is putting in this huge project. I'll probably talk about his work later on a dedicated post.
Say hello to Onur-Hayri Bakici, the one who will take care of improving and deploying a good API and some plugins for the Media Center. Here comes his personal introduction to himself:
"My name is Onur-Hayri Bakici. I am studying computer science since 2005 at the Technische Universit
Are you also one of those who find setting up multiple displays in KDE workspace is not as good as it could be. The part that handles this is called Kephal, which provides KDE apps with a unified interface to various display configuration backends. On GNU/Linux this means XRandR and if is not available it uses Qt’s QDesktopWidget as a read-only fallback. Currently Kephal doesn’t support all the latest and greatest features available in XRandR and the graphical configuration tool, available in System Settings, is also not so nice to use. More streamlined integration into KDE workspace would also be nice.
And here is where Google Summer of Code comes in. This year I’ve been selected as one of the 50 students who will be working hard on improving various KDE parts. And as you guessed it, I’ll be working on improving Kephal. The main direction I envisioned is that Kephal should become smarter so that it would ...read more...
We are collectively elated, in the KDEPIM community, by the news that all four of "our" applications for Google's Summer of Code have been accepted this year. There'll be work on bringing the wonders of plasma to Kontact's summary widget, improving Akonadi's SyncML support (mentored by last year's student in that area, awesomely), porting KMail to use Stephen Kelly's very cool Grantlee templating library (which will allow much easier themeing and probably attract 1000 elephants) and on infrastructure for import and export of data and settings. All this is exceedingly useful and much needed stuff, and exactly the kind of work by new contributors that we were hoping to facilitate by building a strong, flexible, nice to work with foundation in the form of Akonadi. As the core Akonadi team continues to improve the machinery under the hood and as mobile versions of our applications emerge (watch this space for news on that hopefully later today), new contributors and those who have been waiting for a while for their moment can get to work improving the overall experience and bringing ...read more...
My Summer of Code application this year made it! Exultation! All the more sweet after the vivid bitterness of last year’s failure. So I shall be working this summer towards the conceptualization and creation of a sensible system tray for Plasma Mobile, and the excitement I feel, at being allowed the chance of contributing to the ongoing work to bring KDE to the mobile space, could hardly be overstated. Needless to say, this will be an awesome summer for me
Another cool fact: all the (othertwo) Plasmaters also landed their respective projects this year. Congratz guys! (Yes I spontaneously coined the term “Plasmaters”. I think I like it though)
And a final not so cool fact: Plasmate has been piling dusts of neglect ever since school started going crazy on me. ...read more...
It's been a ridiculously busy few weeks during which I haven't had much time to write and keep everyone up to speed on what's up and going on (let alone some of the other writing chores I have on my plate right now). Let's see if I can't get everyone caught up over the next few days though, starting with this blog entry.
Today I held a tutorial in #plasma on irc.freenode.net aimed primarily at KDE packagers about the Plasma Desktop Scripting framework. I felt this was an important topic to do some downstream communication on since it's become central to how plasma-desktop handles initial setup, updates and things like layout templates. While plasma-desktop has supported this feature since the 4.4 release, there are a lot of new features in 4.5, it's taken on a more central role and some of our downstreams managed to get things Very Wrong(tm) with their scripts in 4.4. So I was very happy to see that several distros were represented by those who turned out. I should also tip the hat to Jonathan ...read more...
It's still early in the year but I feel like this is the favorite for the "best computer science related blog title of 2010". I'd include 2009 in that as well, but realistically speaking I probably wrote something equally stupid last year and I don't have the kind of time required to read what I write.
Last week I've merged the new geometry processing pipeline and hooked it into our new software driver, llvmpipe. It actually went smoother than I thought it would, i.e. it just worked. I celebrated by visiting ER, a harsh reminder that my lasting fascination with martial arts will be the end of me (it will pay dividends once llvmpipe becomes self-aware though).
The codepaths are part of the Gallium3D Draw module. It's fairly simple once you get to it. At a draw call we generate the optimal vertex pipeline for the currently set state. LLVM makes this stuff a lot easier. First of all we get the human-readable LLVM IR which is a lot easier than assembly to go over if something goes wrong. Running ...read more...
Well after all the micro-blogging at night and the IRC chat, and writing an exam, here is a really good post!The proposal is Amarok and KDE UPnP Integration. I'll be working with mentor Bart Cerneels. This news was awesome! Last year I didn't get in for kwin-tiling, but I participated in Season of KDE and did a few other contributions all year and it paid off. This year I started of quite early
Thanks to the comments on my previous blog entry about Hausa and Kanuri keyboard layouts, I’ve looked into the topic a little more, adding yet more options for typing.
Dead keys: the keyboard may have “dead keys” for accents. A dead key does not print anything when pressed, but combines with whatever you type next. For instance, you could have a dead accent acute key that combines with a, so you hit dead-acute followed by a and get
On the kubuntu.org front page we list a few interesting Kubuntu users of various shapes and sizes to give a feel for how diverse use is.
One rather cool user which is missing is Weta Digital. Whenever I've been out the flat this week I've seen adverts for the Avatar DVDs, those blue 3D faces are all made on Kubuntu desktops and a whopping 35,000 cluster of rendering machines. That must be a large proportion of computers in New Zealand running Kubuntu.
I am Kubuntu
Then I got an e-mail from a guy at Lionstracs makers of groovy musical keyboards. The keyboards run Kubuntu for all your composing and music playing needs.
KMid is now a multi-platform application for Linux, Windows, and Mac OSX. It may be the right time to make a comparison between the different operating systems with regarding to the development of KMid backends.
First, the functional components needed by a KMid backend
Read and parsing of SMF: MIDI and Karaoke files. This mechanism must offer not only timestamped MIDI events, but also the metadata (for instance, song lyrics) embedded into the SMF data.
Facility for sequencing MIDI events. Events read from a file are labeled with timestamps, to be delivered to MIDI synthesizers at the right times, handling also common player actions like play, pause and stop.
Internal and external, hardware and software MIDI synthesizers. The main goal of KMid is to support external musical instruments, but as many potential users do not have one, it is interesting to be able to use software synthesizers, in a transparent way without complicating the program design.
I'm glad to announce that yesterday the kwin-tiling branch was merged into kwin trunk by commit 1118677!. It will be available in KDE SC 4.5. Please keep in mind that it is an experimental feature with rough edges. Bug fixes are already on the way, but some things, like session saving and so on are absent. Please do add feature requests and bugs to the KDE bug tracker.This screencast should show
So awhile ago I mentioned that I was trying to add a new shared-memory cache for the next version of the KDE platform. It’s almost done now, and has been submitted for review (both old-skool on kde-core-devel, and all Web 2.0-style on our review board).
Given the number of things I had to think about while implementing it (and I promise you that even still it’s not fully as thought-out as it could be), I decided that I could probably make a half-decent, if very technical series of posts about the implementation process.
I’ve got a basic outline set out, but without further ado, I’ll go over in this post what exactly a shared-memory cache is, why KDE has one now, and why I’m trying to make a different one.
Why a shared-memory cache?
Most of the programmer types are already familiar with the idea of a cache: You have some input that isn’t particularly helpful right now, you have a function to turn that non-helpful input into something you can use, but that function takes awhile ...read more...