The Device Spectrum
Plasma has always been designed to make rapid development of small components with little or no bias towards where these components would eventually be used easy to accomplish. We have the Plasma Desktop Shell, but it is only a shell. It's sculpted to aid users of today's laptop and desktop systems, but it's evolving how we do that while not fixing the scope of Plasma those kinds of use cases only.
So now we have Plasma Netbook which is a new shell along with a few new components (Containments and Plasmoids) designed for devices that have smaller screens than the typical notebook computer but bigger than a phone which are used primarily in mobile and online scenarios. We do not believe that the full potential of the netbook form factor can ever be achieved by stuffing a desktop interface onto them and calling it a finished product. We're putting our code where our mouth is with Plasma Netbook, and relatively little new code has had to be written and nothing had to be rewritten to accomplish this.
So now we have Plasma that was only on the desktop broadening it's scope by taking a lateral step into netbooks. To us this is simply natural since we do not see the world divided up into form factor categories that are therefore their own completely separate worlds. The Linux kernel does not believe in this either, and so it runs across the entire device spectrum from small embedded systems to the largest supercomputers and everything in between. Likewise, Plasma aims to run on devices with user interfaces across a large spectrum. We also aim to work with devices Plasma can not or should not run directly on via things like Remote Plasma.
Applications As Decomposable Components
So much of what we are able to do, from broadening our footprint on the device spectrum to adding whole fields of new features to allowing "foreign" widget frameworks (e.g. Google Gadgets) to be hosted without hackery, are possible in large part due to having created a system that is unrelenting in its focus on components that run largely independently (Plasmoids, Containments, ContainmentActions, Coronas, Views, etc.) but also with rigidly defined relationships between each (which is why there are no Containments-in-Contianments and Applets-hosting-Applets is frowned upon except in very specific cases).
We remain committed to the idea of building our applications out of such components due to this success. It will continue to open new doors for our existing code. On a phone, perhaps each Plasmoid will run full screen, not to mention the power of Remote Plasma with such devices. As we continue to evolve the desktop experience, we can keep our previous years' work and just reshape the parts around it.
Components give us a fluidity in our movements and are helping to purge the need for rewriting.
The Network
The network is still underutilized by computers. Hooray for Web 2.0 and all that, but being able to send components between two computers in both structured as well as fairly ad-hoc manners is a whole new kind of world.
Being able to integrate online (aka "web") content directly into our primary user interface components is also powerful: no longer is the web a place we go to but it's what feeds our desktop, laptop, netbook, PDA and phone.
Being able to pull snippets or summaries from online content and then "zoom" them into site specific applications will start to pry the web browser as we know it out of the hands of users. Yes, web browsers are great .. for browsing. Plasma is doing its part to help free the web from the browser (where appropriate) as part of a bigger movement within KDE as a whole to accomplish this for our users.
The People
I got into software (instead of pursuing a natural science such as physics or neurobiology, two fields I seriously considered as a young person) because I realized that computers were communication devices the like we'd never seen before in history. They were the seeing stones from Tolkien's worlds, the doorway to the Oracles of Greek mythos and the embodiment of democratic discourse the American founding fathers could only have dreamed about. I still, though with some added maturity and probably a little more jadedness, hold to that idea.
The social networking revolution on the Internet has taken off in ways few if any could have predicted. Many in the Free software world, let alone KDE itself, are looking at ways to make software more people oriented, more social, more open to interaction.
So we're working on ways of opening doorways to online services with an emphasis on people and communication through Plasma.
Contextual Computing
"Who am I?", "Where am I?" and "What am I doing?" should drive the compass point of your computer. The map it navigates is the full set of data it holds: your files, your contacts, your dates, your interests. We want to allow the computer to adapt more to you as a personal artifact rather than make you fit it in some perverse "this is a mass produced item for a mythical human norm" concept. Nepomuk is key here, but so are things like geolocation and environmentally available components via Remote Plasma.
Organics and Beauty
It's an obvious one, but it's also important to re-affirm our commitment to beauty and organics. From subtle and useful animation to adhering to "how this would work if it were part of the real world, assuming the real world was more like a computer interface" is all part of it. So it attention to detail, and why we fuss nearly endlessly over various parts of the interface that "already work".
The goal is simple: create objects of desire that others measure their own efforts next to, that cause those who use it to smile and those who don't to covet them.
Choice
At the end of it all, freedom is an undeniable rock bed. All must be free to use, modify and distribute what we do. You need to be able to make Plasma what you want, whether you are an end user, an OEM, an entrepreneur, a KDE distributor, etc. We certainly can't make room for every imaginable feature or option directly within the software we ship by default (sometimes they run counter to core design principles, other times it's just a judgement call), but we don't try and destroy choice wantonly and ultimately the code is there for you to hack on. With the highly componentized approach, you also need to only work on the bits that you want to most.
Wow ...
I know, and so does everyone in our team, that the above is not trivial. There's a lot of ground to cover. It's big picture, holistic and scoped broadly. The above isn't marketing driven; if it was there'd only be three items in the list, more buzzwords and be easier to grasp in the form of a thirty second video. The above isn't an implementation plan, either; if it was, there'd be lots of discussion of milestones and definite feature definitions. It is, instead, our vision of the landscape around us as we see it. It is what guides our hands and feet as we build things, and it evolves over time as we do so. It is what allows us to measure how "Plasma" something is: it's not unusual to hear someone say "that's very Plasma" or "that's not Plasma" to describe something someone is working on.
Ultimately, it's our core project belief. By stating it we gain purpose and direction and even open the possibility for others outside of our little team to decide what parts make sense to them and how they might be able to work with us or us with them.
Personally, I wish that more KDE projects would have a similar "core project belief" that they can and do state publicly. It would help us all align even better, even when there are differences. It would also help challenge and shape the Plasma vision, likely for the better.

12 comments:
So what would I do if I wanted to create a container for applets like Windows Sidebar? Would an Applet really be able to do it properly?
You guys really rock. However: With all those planed features, please don't forget to make Plasma more robust. I've already seen a few misbehaving Plasmoids wreaking havoc with whole Plasma-Desktop. Eg. Lancelot in 4.3.0 had a bug that made it hog 100% CPU time. Plasma-Desktop had to be killen and relaunched.
You can't guarantee that Plasmoids will ever be bug-free so please invent some solution to run each Plasmoid as individual process.
Keep up the good work!!
@yman: The current task bar is nothing else that just a Plasmoid container. You can easily add another bar when Plasma-Desktop is unlocked.
Have a look at http://bayimg.com/EAeoCaACa
That's my sidebar: Kopete contacts, unread mails and local weather. Pretty nifty, right?
@yman: a Containment, not an Applet, and yes it would be able to mimic it perfectly.
@kamikazow: plasmoids will never run out of process (OOP). the overhead would be disastrous and trying to synchronize the painting and composition would be absolutely insane.
a better (because it's actually achievable ;) answer is scripting and in particular QScript. we have some outstanding feature requests for QScript that i hope to see in future versions of Qt that will let us do very powerful and useful things like limiting CPU usage on a per-widget basis.
as a bonus, scripted plasmoids are cross-platform as-is (no recompiles, etc) which OOP plasmoids wouldn't give us.
that said, i would like to eventually move DataEngine OOP.
@kamikazow: ah, and as for robustness that's not really a guiding vision item. that's more an implementation goal. i did mention some robustifying (is that even a word?!) efforts in the previous blog entry. that entry was about specific features / implementation. this one is more about our general vision.
i like to think/hope that "is stable" doesn't need to be part of the vision but something one takes for granted as an implementation goal.
As far as I've noticed, panels are global, so I can't have a different set of panels for each activity. Are there any plans to allow per-activity panels?
@yman: probably not in the imediate future, but yes those are definitely a possibility
Very cool and all, but when will basic things like vertical panel work in a slightly polished way?
@Tom: patches welcome to make it meet your standard of "slightly polished".
@Aaron:
OK :) fair enough.
if panel == vertical then show_taskicon_only()
That wasn't hard.
@ Tom: Can't you just use stasks or smooth tasks? Some people want vertical panels to only show icons, some want it to show the text horizontally on multiple rows like it does now, some people want it to show the text horizontally on one row like it did in KDE 3.5. There may even be some who want the text vertical, although I can't understand that myself. There is no one solution for a vertical panel that will satisfy everyone.
@Todd:
No I'm afraid not, it isn't packaged by my distro (downloading from "open"-desktop.org is no option) and actually I want my desktop to have working defaults.
Showing no text and teeny tiny task icons on a vertical panel is not really working and it has been this way for way too long. This is basic stuff.
That plasma is this flexible is great, but please don't use it to excuse broken solutions. The default taskbar has to work sensebly in every situation.
Post a Comment