-
 KDE-Apps.org Applications for the KDE-Desktop 
 GTK-Apps.org Applications using the GTK Toolkit 
 GnomeFiles.org Applications for GNOME 
 MeeGo-Central.org Applications for MeeGo 
 CLI-Apps.org Command Line Applications 
 Qt-Apps.org Free Qt Applications 
 Qt-Prop.org Proprietary Qt Applications 
 Maemo-Apps.org Applications for the Maemo Plattform 
 Java-Apps.org Free Java Applications 
 eyeOS-Apps.org Free eyeOS Applications 
 Wine-Apps.org Wine Applications 
 Server-Apps.org Server Applications 
 apps.ownCloud.com ownCloud Applications 
--
-
 KDE-Look.org Artwork for the KDE-Desktop 
 GNOME-Look.org Artwork for the GNOME-Desktop 
 Xfce-Look.org Artwork for the Xfce-Desktop 
 Box-Look.org Artwork for your Windowmanager 
 E17-Stuff.org Artwork for Enlightenment 
 Beryl-Themes.org Artwork for the Beryl Windowmanager 
 Compiz-Themes.org Artwork for the Compiz Windowmanager 
 EDE-Look.org Themes for your EDE Desktop 
--
-
 Debian-Art.org Stuff for Debian 
 Gentoo-Art.org Artwork for Gentoo Linux 
 SUSE-Art.org Artwork for openSUSE 
 Ubuntu-Art.org Artwork for Ubuntu 
 Kubuntu-Art.org Artwork for Kubuntu 
 LinuxMint-Art.org Artwork for Linux Mint 
 Arch-Stuff.org Art And Stuff for Arch Linux 
 Frugalware-Art.org Themes for Frugalware 
 Fedora-Art.org Artwork for Fedora Linux 
 Mandriva-Art.org Artwork for Mandriva Linux 
--
-
 KDE-Files.org Files for KDE Applications 
 OpenTemplate.org Documents for OpenOffice.org
 GIMPStuff.org Files for GIMP
 InkscapeStuff.org Files for Inkscape
 ScribusStuff.org Files for Scribus
 BlenderStuff.org Textures and Objects for Blender
 VLC-Addons.org Themes and Extensions for VLC
--
-
 KDE-Help.org Support for your KDE Desktop 
 GNOME-Help.org Support for your GNOME Desktop 
 Xfce-Help.org Support for your Xfce Desktop 
--
openDesktop.orgopenDesktop.org:   Applications   Artwork   Linux Distributions   Documents    Linux42.org    OpenSkillz.com   
 
Home
Apps
Artwork
News
Groups
Knowledge
Events
Forum
People
Jobs
Register
Login

-
- News . 
1
votes
click to vote up

writing a plasma shell


Published Aug 1 2010 via RSS

I'm a hobbyist writer of fiction and poetry, which is to say that I write for the purpose of enjoying the pleasure the activity itself brings and for little other purpose. Sometimes I'll go back and read something I wrote some time ago, perhaps years ago, maybe even a decade or more. Sometimes when doing so a fairly odd thing will happen: I'll suddenly realize something that I was trying to say, something which was quite plainly there in what I had written, but which I was blind to at the time of writing. I've heard similar experiences from other writers, and if you are a writer you may have experienced the same thing too.

I had a similar experience with Plasma the other day. We get asked from time to time "Why Plasma?" or "What is the purpose of libplasma, exactly?". Or we get compared to other projects out there, even though there are only passing similarities. (I have yet to find another single project that approaches this problem space in the same way Plasma does; either Plasma is fairly unique or I'm just not looking hard enough. :) I have my stock answer about a scalable, repurposable interface component system with a high degree of data/visualization separation that emphasizes scripting, etc.

It ends up being an accurate description, but it's never been one that really speaks loudly to what drove the writing of libplasma or the design of Plasma itself. It's all about attributes of the system, after all, not motivations.

So let me try that now. Some of what follows will be familiar to those who have followed by writing here and elsewhere over the years, but I don't think it's probably ever come together this succinctly.

I Want To Write Workspaces



What I want to do is to be able to create a user interface that is "applet" or "widget" centric. I want to be able to design how that is presented to the user, how it fits together, how the interaction works for a given audience or device.

What I don't want to do is write all the applets/widgets myself in the process of doing that. A battery is a battery, a window list is a window list, a CPU graph is a CPU graph, a tweet is a tweet, etc. That's a hell of a lot of work just to get a new primary user interface on a device. Too much, in fact.

Plasma allows us to write a desktop, a netbook, a tablet, a mobile, a media center, a screen saver, a log-in screen and an in-app dashboard interface that can all use the same component model. We just write the workspace for them and all the details, from theming to configuration management, are handled for us.

In KDE3, Kicker had applets. They were pretty cool, but they were tied to Kicker. So SuperKaramba came along to let us do something similar (better in some ways, worse in others) on the desktop layer. It also brought a new API and we had to write a whole new set of widgets. Not the best.

Every other widget API out there tends to come with no way to build a workspace around it. Either they are tied deeply into an existing workspace presentation, or are so loosely coupled to the idea that you have to do all the work around them yourself. Plasma is the happy medium: it gives all the tools to easily make a workspace and access to it's own API as well as any other you wish to add, just as we've already done with Google Gadgets and SuperKaramba.

I Want To Write Killer Widgets / Gadgets



What I want to be able to do is sit together with a designer and a developer and put together a really cool widget that does something. I want that widget to run on my phone and my tablet and my laptop. Or maybe just my laptop. Or maybe just my tablet.

I want to let the designer do as much of the UI as possible. I want the developer to deal with the data. It all has to scale across devices. I want to be able to choose whether I use C++ or Javascript or GoogleGadget's API or ... I want to choose!

I want fancy things like animations and SVGs. I want simple things packaging and configuration handled for me. I want it all to be platform independent.

Plasma lets me quickly write widgets with a clear design and data separation that any workspace can use on any hardware platform libplasma is available on. In fact, not only can other workspaces use what I've done, but other widgets can even use my data level work!

A Toolkit That Fits Those Needs



Qt is an awesome toolkit. It is, however a general purpose toolkit. Ditto for the other libraries in kdelibs. They all lack what is needed to meet the above motivations. Plasma fills those gaps and provides a great way to write widgets and workspaces for them.

It isn't something you'd write a traditional monolithic app with (e.g. Digikam, Krita, K3B, etc), though you might use Plasma inside your app for the parts that have the aforementioned needs. It isn't meant to support the monolithic app concept on top of it, it is meant to support the componentized "app made of apps" concept. Nothing more, nothing less.

If we look around at what others are doing, whether it is companies like Apple and Microsoft or projects like Moblin or GNOME, no one is approaching it this way. Everyone is still making separate silo APIs welded into purpose-specific workspaces. I don't believe that "write a new workspace from scratch for every device on top of the generic toolkit" is a viable strategy in the new era where the device spectrum reigns supreme. In fact, I think the web itself is going to find itself one-up'd by the device spectrum reality and will experience displacement in the coming years. And I certainly can't imagine GNOME Shell running on my phone, no matter how good it would be on the desktop.

So this, then, is what I was writing when I started on the first classes in Plasma. Looking back all that was there, but I couldn't enunciate it because it was a new set of thoughts and ideas rolling around just out of reach. It is also what I see in the work of the others who have joined in on Plasma and made it more than I ever could have on my own.

I'm really excited that we're seeing the first device making companies picking up our API and building workspaces around them. It brings tears to my eyes. :)

Do You Want To Do This Too?



Would you like to do this too? I know it isn't for everyone, it's just a certain brand of odd fellows who think this is great, interesting, cool stuff. If, however, you are one of those people, libplasma is there just waiting for you to explore.

We have several ongoing projects of our own to create workspaces, with new ones such as Plasma Classroom just starting (more on that in a blog entry later in the week). But don't let what we're doing limit what you would do. Maybe you want to do something completely different. Maybe even just for yourself or a certain group of friends.

If you want to work on widgets, we have a growing number of tutorials and examples, and would welcome more if you'd like to write some.

If you want to make a new workspace ... well ... we haven't really had anything good for you. You'd have to rummage about the libplasma API, maybe read how Plasma Desktop or Netbook is stitched together. But documentation? *chortle* Well, that just won't do. So we've started a page, for now on community.kde.org until it is ready for the tutorials section on Plasma Desktop, that will document everything that goes into making a workspace shell, the way I'd always wanted to ever since picking up maintainership of Kicker all those years ago.

Questions? You can find us on irc (#plasma in irc.freenode.net) and our mailing list.


BackRead original postSend to a friend

Add comment Add comment
Show all posts




-



 
 
 Who we are
Contact
More about us
Frequently Asked Questions
Register
Twitter
Blog
Explore
Apps
Artwork
Jobs
Knowledge
Events
People
Updates on identi.ca
Updates on Twitter
Content RSS   
Events RSS   

Participate
Groups
Forum
Add Content
Public API
About openDesktop.org
Legal Notice
Spreadshirt Shop
CafePress Shop
Advertising
Sponsor us
Report Abuse
 

Copyright 2007-2016 openDesktop.org Team  
All rights reserved. openDesktop.org is not liable for any content or goods on this site.
All contributors are responsible for the lawfulness of their uploads.
openDesktop is a trademark of the openDesktop.org Team