one of the lessons learned with kicker was that some things are not so trivial under the hood (think: taskbars, pagers, weather reporters) and so if you marry them too tightly with the display ..... you end up with very few alternatives. in fact, virtually every taskbar replacement written for kicker was a fork of the original taskbar. what makes that doubly interesting is that the task manager (aka "windows bean counter") was abstracted out for use in other user interfaces. the pager, kasbar and the taskbar all used it. but still, people would generally start by forking the taskbar.
this was rather annoying since most of these forks were to provide new cosmetics. bug fixes in business logic didn't get shared or passed around and i truly think a lot of possible innovation was stunted by the bar one had to clear and the lack of headroom left once cleared.
looking around, this pattern repeated a lot. unless one looks at superkaramba and system monitors. holy crap are there a lot of them! so why so many monitors and why so few taskbars? is it that monitors are simply sexier? probably that's part of it .. but certainly not all of it.
something superkaramba did was provide simple access to hardware data. and then it provided simple access to display widgets you could plug that data into. or you could write your own. i think this is the true reason for the explosion of such widgets; for even though there are other categories of superkaramba widgets, this was the class that really took off.
so in plasma we're going to deliver all business logic sets wrapped in a neat little bundle. and we're going to call them "data engines". why? because that was the name that occurred to me at the time and now i'm stuck with it. ;)
we're also going to provide sinks for these engines called "data visualizations" which are display widgets that accept data in various formats (QVariants, actually). and you can mix and match these data engines and data visualizations to your liking. you can also write new engines and visualizations and share them with others.
there's a basic introduction. using the data engines from a plugin (or "plasmoid" as they seem to have been christened) is pretty simple. in both javascript and c++ it would be:
loadDataEngine("windows")doing it manually would look like:
Plasma::Interface::self()->loadDataEngine("windows")but then you'd have to handle unloading it yourself. the data engines are reference counted and shared between plasmoids which fits the pattern: the engines are the models, the visualizations are the views.
enough for tonight ... on friday we'll look at writing a simple data engine, and on wendesday we'll look at writing a simple data visualization and hooking them up. from there .. who knows =)
when i started writing this entry, the p-man was in the bathtub and i heard an excited squeal, "this is gonna be crazy!" it's moments like that which make a parent cringe and smile simultaneously.
i went for a run with the soccer ball at a neighbourhood park this afternoon and a clean cut young kid on a skate board, 10 years old, came up and asked if he could play with me. we spent about 45 minutes kicking the ball around, the last 15 or so with him taking shots on goal. i'm a lousy goalie so it was fun for him ;) he kept asking questions; all sorts of questions ... asked if i was from canada (apparently i don't look like it); if i was on t.v.; if i played on a soccer team; if i had been to other countries; if i was married, had a kid ... sometime during the game of inquisition soccer i noticed his shoes were worn through at the toes. either he loves those shoes (and his mother chokes every time he insists on wearing them) or he's got it hard at home. he asked if i'd come to the park again sometime, and i said yeah ...
i hope he's sleeping as well as the p-man is right now...

10 comments:
I think there were a couple of big problems with libtaskmanager in kde 3.x:
1) It was a non installed library making it very hard for people outside of kdebase to use it.
2) No one knew it was there except the few of us who worked on the code. This is no doubt partly a result of (1).
I like the plan for a data abstraction in plasma, and I have some further thoughts on the topic that i'll try to write up for the ML.
Rich.
Hello !
For us non native english speakers, what does "clean cut" means when applied to a young kid ?
That's typically the kind of idiom I can't google an explanation for :-)
Bruno
Hi Bruno. Word reference is a good source for translations. And it even has a shorcut. Type "en2fr:clean-cut" in konqueror and you get the french translation. :)
Med
Med,
thanks for the tip !
Bruno
/me would like to see screenshots ;)
Btw., one other reason for the fact that there were only few taskbar forks was maybe that the taskbar was always installed as a part of the system: you never got the feeling that it could be exchanged or something - superkaramba was clear about the fact that everything was exchangeable.
To change this it would be cool to have some three example plasmoid taskbars with very different features preinstalled so that every (interested) user immediately realizes that he/she can write his/her own. That would spur the curiosity and development, I guess.
And for comment #1:
http://www.thefreedictionary.com/clean-cut has some information, found by searching for
"clean cut" dictionary
;)
@rich: " I think there were a couple of big problems with libtaskmanager "
yes, those were both issues. but even when one knew it was there, it often presented the wrong level of abstraction and much filtering of signals and interpretation of what those signals meant had to be done. both kasbar and taskbar show this.
it wasn't designed for "casual" usage. and there's no reason it couldn't/shouldn't be.
@liquidat: "was maybe that the taskbar was always installed as a part of the system: you never got the feeling that it could be exchanged or something"
it's just an applet like anything else, such as the clock which is also installed by default. we actually ended up with a couple of clock alternatives.
you're right that sk did a good job of saying "everything's replaceable", in part by not starting with any default configuration. obviously, we can't do that with everything: we need to have some basic facilities. we also need to make it feel like things can be changed about.
"To change this it would be cool to have some three example plasmoid taskbars"
no, i'd like to have just one of each essential piece and allow the rest to be distributed over the network or as addons via GHNS.
Hey Aaron, nice to see there are other people interested in both tech & vegan. I wonder, how did you make a _vegan_ manicotti? I imagine a meatless one, but manicotti normally has cheese. Did you use a substitute?
It just occured to me, since you guys are re-writting a bunch of KDE code, why not make it Real-Time optimized in preparation for real-time linux? =)
http://www.internetnews.com/dev-news/article.php/3627831
"You can run any app as a real-time application," Dietrich said. "A well-designed one will really benefit from the response time."
@Jeroen: manicotti is, of course, just the pasta shell shape and size (cannelloni being the slightly small tubes, of course). traditionally (at least where i come from =) they are stuffed either with a cheese mixture or a ground meat and/or sausage mix. i make a stuffing similar to the meat one, replacing the meat with veggie ground (which has gotten really good, btw).
i start by sauteeing diced mushrooms, white onion and garlic in a large pan with olive oil and a bit of salt ... then i add finely chopped (though not quite diced) bell peppers (mix of green, yellow, orange, red) and zuchinni. i start spicing this with whatever i feel like that evening ;) and then last add some tomato paste (not much though, just enough to give it some "hold together"ness for stuffing) and the veggie ground...
then i stuff the boiled manicotti shells, put them in a casserole dish, cover them with a tomato sauce and bake for another 15 minutes or so in an oven ... voila.
Thanks Aaron it sounds delicious I used local Wikipedia version and got confused with the terms (differences explained here http://en.wikipedia.org/wiki/Manicotti ). Your mixture is a classic one much like the ones I use in my cuisine as well though for example i saute my aubergines (eggplant) instead of courgette (zuchini). You didn't name which mushrooms but champignons, sauted or not, as well as their bigger brother portabellos are an excellent replacement for meat! Instead of tomato paste consider adding your own fresh tomatoes in the previous mixture since tomato paste is basically an expensive scam which includes a lot of water. One could even blender them in advance. Cheers from NL, -- Jeroen
Post a Comment