Aseigo

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Thursday, 28 February 2013

elegant plasmoid configuration

Posted on 01:10 by Unknown

The way Plasmoids currently create user interfaces for configuration is not really what one would hope it to be. We have set out to fix this for Plasma Workspaces 2 and today after some back and forth between Marco and myself, we are edging closer to what could well be a solution as near perfect as one could hope for. Before showing what we've come up with, let me explain how it works right now.

The current system was really designed for components written in C++ and coming from the world of QWidgets. At its most basic, a Plasmoid written in C++ would create a configuration interface "by hand" in the C++ code full of QPushButtons and the like. If they were fancy, they'd use Qt Designer to visually design the interface and then the build system would generate the code from that. If the developer was going for the extra brownie points, they may have used KConfigXT files which describe the configuration data using XML. This too would be converted at build time into C++ and compiled into the C++ library containing the component.

This was ultimately very flexible. The Plasmoid could do whatever it wanted, after all. However, it meant that we required compiled C++ code at some point. This was obviously at odds with the design goal of Plasmoids that came in the form of architecture independent script bundles.

So I wrote a small class that took the KConfigXT XML and parsed it into the same kind of object that the kconfig_compiler helper tool did. We then used Qt's ability to load Qt Designer files and create user interfaces at runtime and, voila, we had the ability to show a configuration interface from a scripted Plasmoid with zero C++ code.

There were two downsides to this. First, it meant that the developer had to learn how to write a KConfigXT file (Plasmate helps automate that, at least) and how to use Qt Designer. Normally this wouldn't be too much to ask, but we're trying to keep the barrier to entry low and the Plasmoid developer had just gone through the trouble of learning QML and/or Javascript to get this far. So this was not great.

The real problem, however, was that the scripted Plasmoid had no ability whatsoever to interact with the configuration interface. It was simply a static thing that got shown to the user on behalf of the Plasmoid by libplasma. This means that if the Plasmoid needed to create widgets on the fly, populate lists or comboboxes with data from the Plasmoid itself, validate data and more .. there was very little it could do. This prevented some Plasmoids from being QML only and forced C++/QML hybrids in some cases simply because of the configuration dialog.

With libplasma2 and Plasma Worskpaces 2 we decided to Do The Right Thing(tm) and see if we could make it possible to write configuration pages in QML. Keep in mind that we want to still be able to load KControl modules where needed, as seen in the device notifier configuration dialog, and that we want them to look like normal everyday configuration interfaces.

After some back-and-forth between Marco and myself on the mailing list and in the plasma-framework repository, we have accomplished this. Now one can put a config.qml file in contents/config/ and define each page that appears in the configuration dialog:

import QtQuick 2.0
import org.kde.plasma.configuration 0.1
ConfigModel {
    ConfigCategory {
         name: "General"
         icon: "plasma"
         source: "configGeneral.qml"
    }
    ConfigCategory {
         name: "Page2"
         icon: "stuff"
         source: "whatever.qml"
    }
}

The configuration defined in the KConfigXT XML is then automatically connected up with the UI, just as it does in the QWidget/C++ case. When the user is done, the config object in the QML with all the configuration options is updated and thanks to the magic of property binding in QML the changes are then automatically propagated to wherever they are being used. This greatly simplifies configuration change handling and makes it much more declarative and therefore feel more at home in QML.

The source property in the ConfigCategory items refer to QML files in the package; names of KControl modules will also be supported. This means that the developer only needs to content with QML and they have full interactive control over the configuration UI. With QML Components, it looks the same as a QWidget based layout.

This also means that now the configuration UI can also be adapted automatically at runtime to fit the form factor. On Plasma Active a touch friendly interface can be presented while on Plasma Desktop a mouse and keyboard focused interface can be shown. All that needs to be done is to create a touch directory in the Package with any specializes in it. Even without that, the QML Components themselves will be the touch or desktop variety, which already improves things dramatically.

There is some work left with the KConfigXT runtime loader. I need to make it possible to use a given KConfigXT file as a template of sorts, so that one can define a set of configuration entries which can be duplicated multiple times in uniquely named groups. This is useful for things like launchers, for instance. In fact, Kontact uses KConfigXT in this way in places in it's C++/QWidget code.

The scaffolding is now in place, however, and it essentially works. 

This means that a Plasma Workspaces 2 release will require some additional work. We will need to "port" existing Qt Designer based configuration interfaces to QML. That should be rather easy, however, and perfect as an entry-level job for those looking to dip their toes into the QML waters. We're keeping a set of documentation of what needs doing and what has changed as we make these kinds of changes. Once plasma-framework is in a slightly more solid state we'll start inviting people like you, kind reader, to get involved with a variety of fun and easy tasks so that we can put out a Plasma Workspaces 2 release as quickly as possible once Frameworks 5 is released.
Read More
Posted in | No comments

Wednesday, 27 February 2013

The Luminosity of Free Software, episode 5

Posted on 10:52 by Unknown
A new episode of The Luminosity of Free Software will be recorded tomorrow at the usual place and time: Google+ Hangouts at 20:00 UTC. Immediately after recording, it will appear on Youtube as well as at the end of this blog entry.

Last week's episode was a little heavier on the philosophical meanderings than usual, but this week the pendulum will swing the other way slightly as I focus on more technical topics. The planned agenda goes something like this:



  • Developer Driven APIs: How the emerging world of openly developed, Free software mobile platforms presents a new kind of opportunity to application developers
  • Memory Lane: when Fonts and video editors were problems for Free software .. and the awesome things we have now.
  • PostgreSQL: Why it is the only Free software database I care about .. and the completely valid reasons why it isn't used more by desktop applications.
  • Question Period: Ask the questions that are on your mind, and I'll respond with what is on mine!

The audience delivered up some terrific questions last week and it really made the episode, so I'm hoping that you come with questions and queries in hand again! If you can't be there tomorrow during the live recording, feel free to leave your questions in the comments below and I'll be sure to incorporate them into the show tomorrow.

See you then!


Read More
Posted in | No comments

process separation

Posted on 01:54 by Unknown
When Google Chrome first came out sporting its process separation feature where each tab is in its own process, it was broadly hailed as the best thing ever. The idea was to increase stability and security. 

This was during a time when Plasma Desktop was still facing a number of implementation hurdles that impacted stability. So a number of well-meaning people decided that I should be informed about this revolutionary new idea in Chrome and every component in Plasma Desktop should be put into its own process.

This was applying a solution from one problem space to another that just didn't map at all. For technical reasons it was not feasible and I offered alternatives. Still, there was a good year or so when pretty much every single day I would get at least one message from someone suggesting we redesign Plasma to be separated across different processes. Some were kinder than others, but after a while even the nicest of people sounded like fingernails on a chalkboard.

Since then we've moved on to the alternative approaches we identified well before Chrome was even available: interpreted rather than compiled code. Today we're walking with both feet into the brave new world of QML. As of Qt5 we have QML2 which brings with it scene graph based rendering that can be done in hardware where available and a runtime that makes writing beautiful interfaces that are also stable very easy. It has been a long road to this point and has involved countless dozens of bright people working hard.

In the meantime, how is that process separation in Chrome working out? Here's the conclusion of one analysis based on actually measuring things: "The [process separation] mechanism is based on a relatively dated concept, superseded by compile-time code validation techniques such as Google's own Native Client [..] 
An unintended consequence of this design is that all attempts to synchronize the state between two processes are inevitably very expensive. [..] It seems that the apparent improvements in the stability of Chrome come at a very significant cost; and that unless the architecture is revised substantially, it may hinder the development of tightly-integrated and highly responsive web apps."

I don't hold quite so dim a view of process separation used in the right places as one might come away with after reading that article, but it is a cautionary tale about believing in silver bullets. Different problems are different and very few design concepts carry only benefit with no cost.
Read More
Posted in | No comments

Wednesday, 20 February 2013

The Luminosity of Free Software, episode 4

Posted on 05:53 by Unknown
It's that time of the week again already! Yes, the Luminosity of Free Software episode 4 will be broadcast live tomorrow at 20:00 UTC via Google+ Hangouts, and you're all invited.

As I get more familiar with the way Hangouts are structured, things are becoming smoother. This week, rather than inviting everyone directly to the Hangout, everyone will follow along on the live video stream that gets automatically placed in my G+ updates stream. You can ask questions and post comments there just as in the chat, and I will be monitoring those in the videocast. This should be simpler and a more equal an experience for everyone.

Tomorrow night I will be covering the following topics:
  • Does open development matter? Wherein we explore the thought experiment: "What if the entire world used and ran Free software, but all the development was done behind closed doors?" It's an interesting question with no simple answers. As Free software continues to expand its influence, and with more companies trying out the mix of open source and closed development, it will become a more and more pressing question over time.
  • LXDE's new file manager. What could I find interesting about that? Join us and find out tomorrow!
  • Linux desktop infrastructure fragmentation: lightdm, maliit, systemd, dconf .. when did we stop collaborating on these kinds of things, and how can we get it back on track? My answer is perhaps not what you'd expect ... 
  • Question Period: you ask, I ponder; you provide feedback, I share it with the audience.
If you would like to submit a question, do so in the comments below or join us for the live videocast tomorrow and ask away live on Google+.

Update: The episode is now up on Youtube, see below. Thanks to everyone who participated .. the feedback and questions were great! See you all next week...


Read More
Posted in | No comments

control and openness

Posted on 05:13 by Unknown
The people over at Muktware published a video the other day of Plasma Active running on Google's Nexus 7 tablet. You can see it here:



Occasionally people ask me what I think about Plasma Active appearing on various devices, knowing that we're working on a tablet ourselves. It's a really good question, and gets to one of the core tensions around open culture: the interplay between control and benefit.

The conventional wisdom is that to maximize benefit, control must also be maximized. Thus the historical emphasis on proprietary technology in the IT industry, something that has been slowly but surely shifting with time but certainly has not fully swung away from proprietary-is-better. 

There are benefits to openness as well, however. It opens up avenues for collaboration which in turn has effects such as lower risk, shared costs, greater market confidence among other network effects.

It can appear easier at first blush to succeed with complete control, especially since that is what most of us are taught and exposed to as we grow up. Control is not without its merits: at the very least, it's certainly faster to make decisions when you don't have to work with others. This particular factor causes some to place a higher valuation on control that it deserves.

So what about Plasma, and in particular Plasma Active? In the case of Plasma Active, if we had tried to keep it to ourselves, to control development tightly, to control what people did with it, to deny other companies from participating .. it simply wouldn't exist. Even if it did manage to exist in some way, it would have nearly zero chance of long term success.

The lack of dictatorial control opens long term opportunities for us .. and for those who join us on the journey. Some things would certainly be easier with more control, but it would be an overall net loss as the diminished  participation and interest could never be balanced out.

This (very abbreviated) argument is not how I personally arrived at the current balance of control and permissiveness, however. It's just how I defend the position in economic terms. For me, personally, it is ultimately a matter of human and social value.

One must ask themselves: would I be OK to die penniless and unknown if what I did made the world better? Would I rather be wealthy and well known (which is anything but a guarantee even with all the control one can imagine) and leave the world at best no better and at worst diminished in some way?

Obviously those aren't the only two choices we have in life; it's somewhere in between, but the questions are useful tools for thought. With my answer in hand, it then became a matter of figuring out how to not end up a starving and forgotten person while leaving the world around me a better place for whatever little I manage to do in this life. This motivated me to explore and understand the economic argument, which are certainly not my own but the distilled wisdom of people who have been thinking about these things much longer and deeper than I have.

Oh, and I think it's beyond awesome that Plasma Active runs on the Nexus 7 and that people are installing it and using it there. Which is why we support those efforts without question. :)
Read More
Posted in | No comments

Wednesday, 13 February 2013

LoFS Episode 3 .. tomorrow!

Posted on 09:08 by Unknown
It's been a silly busy week for me, and I'll be working into the night to get reasonably through my "must be done by today" list .. but I finally got to this one: blog about tomorrows Luminosity of Free Software Google Hangout. This will be the third one and hopefully the best yet.

The agenda goes something like this:

* Free software, who participates?
* Simon listens: Free-software-powered accessibility robots! 
* Kate: why it is the only text editor that I use .. other than vim.
* Open participation, Q&A

As usual we'll go for 45-60 minutes max and then it will end up on Youtube in the LoFS playlist. Also as usual: if you have a topic you'd like to have me cover, a question you'd like to ask or if you have an insight you'd like to share, leave them in the comments section below or message me on Google+ or by email and I'll work it in.

Cheers!

(.. and one less todo is on the list!)
Read More
Posted in | No comments

Wednesday, 6 February 2013

a release

Posted on 04:46 by Unknown

a brief reflection on balance

Contemplating things that are in a state of balance evokes serenity. It can also provide wonder and enjoyment, such as when watching someone walk a tightrope high above the ground or execute a particularly tricky bit of gymnastics in a game of sport. There is also an inherent sense of tension within systems in balance: the sweet spot that is neither too far one way or the other; a counterpoint found for every force that pulls or pushes.

Not only physical objects can be in balance, of course. Systems can be in balance, communities can show balance in their dynamics and people can demonstrate balance in their thoughts, actions and intentions. From such balance, great things can come forth.

on the morning that a release is made

Today the 4.10 releases of KDE's Platform, Workspaces and Applications were announced. People started sharing the link online and users of KDE software began downloading the anticipated release. I visited the release announcements and found myself staring at this gorgeous shot:


.. and it was only a few more minutes until I stumbled upon this funny bit of Onion-style satire: "Arch 

Servers Went Down As KDE 4.10 Is Released" which caused me to, quite literally, laugh out loud. 

We'd just put out a great release (after which one tends to feel something like this), I had been looking through a really well done set of release notes and then I was laughing along with others in our community ... which reminded me of something I love about KDE, something that keeps so many of us around through the years, something that powers the engines that make these releases and something that is really easy to forget because it's always there ...

counterpoints using "and"

KDE is often serious, and it is also often light-hearted. We're confident in decisions we make, and we're also keen for input from others. We love what we make, and we are never so satisfied as to think we're done. This gives us the drive necessary to keep pushing forward and improving.

We embrace the future in our plans and products, and we respect our roots and the present we live in. We have "big vision" projects that have equally large aspirations, and we also have stuff that's just plain fun and geeky. This allows us to build a future for KDE without losing touch with what we have.

We value and practice collaboration, and we encourage personal responsibility. We share successes and failures, and we highlight individual achievements. We cheer each other on, and we provide critical feedback. We support our successes loudly, and we acknowledge our failures. We're consistent on politically tinged issues that matter to us such as Freedom, and we maintain a pragmatic focus on technology. This grants us momentum and direction.

We've been a leader in the Free software ecosystem in terms community governance, and we're also a bit organizationally chaotic. We invent what we need, and borrow good ideas from where ever we can. We have large numbers of volunteers, and we have lots of entrepreneurs. We have people with lots of experience, and people who are looking for it. We celebrate diversity, and we value unity. This provides us with a rich melting pot of ideas and motivations to draw from.

the way you make me feel (and other 80s music)

None of the above are things I wish KDE did, or KDE should do, or KDE could do .. they are things KDE has been doing. KDE is not perfect nor perpetually in a state of unnaturally precise balance .. but it's hard to miss that 15 years on, through all sorts of maturing and meandering, we've just released a fantastic set of software with a shiny 4.10 sticker on it, we're working on a 5.0 inspired by where we see ourselves going and reflective of lessons we've learned, and we still manage to have a good laugh with each other, still ask and answer questions of each other, and still find reasons to come back and make another commit.

After all these years we're still one cohesive (meta-)community interacting with each other and working on an increasingly diverse set of projects that hold together thematically.

.. and that is what it meant to me when I saw "The KDE Community proudly announces the latest releases of .." appear on my laptop's screen this morning. You know, just another day at the office. :)

Thank you to everyone who made this release possible with efforts great and efforts small. I can't wait for the next one!

Read More
Posted in | No comments

Tuesday, 5 February 2013

The Luminosity of Free Software Episode 2!

Posted on 11:48 by Unknown
The day and time for the next live video cast on Google Hangout has been set. There was a clear preference among those who responded to the survey. (Thanks to you all!) The live show will happen this Thursday, the 7th of February at 20:00 UTC.

If you'd like to be there live, just add me to your circles on Google+ and you'll get an invite. If you can't make it, the video will appear on Youtube directly after the video cast concludes and you can pick it up there. Either way, feel free to leave questions, comments and topic suggestions in the comments below. You can, of course, bring your questions to the live show, too!

Here is the agenda (as currently planned) for the show:

  • Marble-ocity: Cool things you can do with the Marble mapping application. 5 minutes
  • Forkification: a reflection on the phenomenon of major Free software communities that have experience significant forks in recent years (MySQL, OpenOffice, XFree86, GNOME ... ) and those that have maintained their community in one piece (PostgreSQL, Linux, XFCE, KDE ...). 5 minutes.
  • Vivaldi tablet: finally! I can briefly share what we have been working on, our timelines and the implications for KDE software on devices. 5 minutes.
  • Audience interaction: updates from last week's audience interaction, then on to new topics: discussion, questions and answers. 30-45 minutes.
See you there!
Read More
Posted in | No comments

new plasma-framework repo

Posted on 08:03 by Unknown

On November 3, 2008 libplasma moved from kde-workspace to kdelibs sporting a spiffy API that used the new QGraphicsProxyWidget heavily.

In Randa this past summer we agreed on the last few big decisions for libplasma2. We would remove QGraphicsView and move entirely to QML. In the process, libplasma would have no drawing system dependent code in it. It would be data and business logic only.

The other day a new repository called plasma-framework was created for the  Frameworks 5 release and libplasma2 was added to it along with the relevant bits from kde-runtime. Today libplasma will be removed from the frameworks branch of kdelibs. 

The QML2 effort is making good progress, as can be seen in the anticlimactic screenshot below showing a QML containment loading a QML plasmoid in a QML2 view.






It's been quite the journey thus far, and the road stretches out before us yet.





The most wonderful thing about this is that once we're done, despite all the changes under the hood, you won't really notice much has changed just from using it. Well, other than the improved performance, I suppose.

For developers working with Plasma, this is a good time to start using QML if you haven't already. It will be a while yet before a release of Frameworks 5 is made, let alone a release of the Plasma Workspaces on top of that. This should give everyone time to migrate to QML in their own time without facing a last minute rush. Testing your QML work on top of the 4.x releases will help ensure a smooth transition when the time comes.

Read More
Posted in | No comments

building KDE software from git.kde.org the easy way

Posted on 00:30 by Unknown
Last week I heard it not once, not twice but three times in three different conversations with three different people that building KDE software and getting involved was mysterious and perceived as difficult. We have documentation on the KDE wikis for this, but I admit that it can take time to read through everything and find the shortest path from point A (e.g. a machine with Linux installed) to point B (building software from git.kde.org).

Video tutorials were suggested .. and so last night after finishing my work for the day (as if it is ever "finished" .. ha!) I sat down and recorded two episodes of what has, it appears, become a series. In these videos you will find out how to set up your system and be compiling KDE software in no time at all. I try and pace things so it doesn't go too quickly, but even then the first two episodes are only around twenty minutes all together, by the end of which you are a source compiling monster. Or at least your computer is.

I've started a playlist for these videos and will upload a new one every few days until we're at something resembling a useful conclusion. If there is something you'd like to see covered in this series, drop a comment below and I'll do my best to work it in.
Read More
Posted in | No comments

Monday, 4 February 2013

The Luminosity of Free Software

Posted on 09:17 by Unknown
Last week I mentioned that I was going to do a live cast on Google Hangout .. and I did. It went well enough to consider doing it again, in fact. Having learned the ropes a bit in the process and played with a few tools over the weekend, I'm going to try to make it a weekly adventure. Yes, my weekly live vidcast is back after it sat lonely and scared in my closet for several years! ;)

About 5 minutes before starting the Hangout last week, I impulsively named it "The Luminosity of Free Software" as that was resonating with the thoughts in my head at the time .. and I think I'll stick with that name for the time being. You may notice that there is no "KDE" in the title (or my name, either :) and that's intentional. I want to be able to discuss larger issues in Free software, and this gives me more freedom to do so. The show will be a reflection of my interests and those who watch and participate, so there will be a good amount of discussion that relates to or is relevant for KDE, it just won't be exclusively about it.

The format is going to be pretty simple: I'll open with a short (2-5 minute) reflection on Free software, followed by two (maybe sometimes three) prepared segments of about five-minutes each on technology and community happenings and then open it up to your questions. The goal is 45-60 minutes of content in all. That means I'll only come with fifteen minutes of prepared content ... the rest is up to!

I'll announce the show on my blog (and elsewhere) a day before it happens just in case you forget. We'll record the show live together and then it will appear on my youtube channel shortly thereafter so those who couldn't be there can watch it later.

You can ask me whatever you'd like (ok, within reason ;) and I'll do my best to answer or, if it stumps me, become a topic for a future show giving me time to research a useful response. You can ask your questions live during the show, or you can leave them in the comments section of my blog entries announcing the next show.

So .. when will the next episode happen? That's somewhat up to you. I'd like to do them either Thursday or Friday evenings (UTC), but I'd also like it to be at a time when you're able to be there. So head on over to this magical survey and let me know when it would work for you.
Read More
Posted in | No comments
Newer Posts Older Posts Home
Subscribe to: Comments (Atom)

Popular Posts

  • more plasma workspaces 4.8 news
    In my last blog entry on Plasma Workspaces 4.8 I talked about a number of things that we've worked on in the last six months. I promise...
  • what trains are for
    Today I had to go to Milan .. and back .. by train. That's a total of eight hours planted in a moving seat. I won't explain why I ha...
  • #merweek
    Make · Play · Live' s website is counting down to ... ? As Dario Freddi  noted in his G+ stream today, the week of the 25th is shaping u...
  • Improv and KDE
    When I announced the Improv ARM computer  on Monday, I did it on my blog which is also syndicated to Planet KDE. That's because there is...
  • a network
    Before I get to the positive strides we're making forward with Spark, I want to first apologize for not having the pre-order registratio...
  • an afternoon of small things
    I spent the afternoon working with some very small computers that we picked up today from a local shop that specializes in electronic parts ...
  • Call to authors
    For the last couple months I've been quietly working on a publishing deal for KDE books. I now have a contract in hand and we're mak...
  • bodega: partners, aggregating audiences and YOU
    I did a quick screencast today showing what "partners" are in Bodega and how they work. It's one of the many ways that Bodega ...
  • Break even weeks on bugs.kde.org!
    KDE developers around the world: we're currently just 14 closed bug reports away from a break even week! As of right now 475 bugs have b...
  • quick notes on using review board effectively
    The Plasma team has been using review board for quite a while. We were the pioneering project within KDE for its use, in fact, which leads t...

Blog Archive

  • ▼  2013 (56)
    • ►  December (1)
    • ►  November (9)
    • ►  October (4)
    • ►  June (3)
    • ►  May (8)
    • ►  April (3)
    • ►  March (11)
    • ▼  February (11)
      • elegant plasmoid configuration
      • The Luminosity of Free Software, episode 5
      • process separation
      • The Luminosity of Free Software, episode 4
      • control and openness
      • LoFS Episode 3 .. tomorrow!
      • a release
      • The Luminosity of Free Software Episode 2!
      • new plasma-framework repo
      • building KDE software from git.kde.org the easy way
      • The Luminosity of Free Software
    • ►  January (6)
  • ►  2012 (49)
    • ►  December (1)
    • ►  November (8)
    • ►  October (5)
    • ►  September (4)
    • ►  May (7)
    • ►  April (5)
    • ►  March (2)
    • ►  February (11)
    • ►  January (6)
  • ►  2011 (93)
    • ►  December (3)
    • ►  November (4)
    • ►  October (2)
    • ►  September (7)
    • ►  August (18)
    • ►  July (11)
    • ►  June (3)
    • ►  May (10)
    • ►  April (15)
    • ►  March (7)
    • ►  February (3)
    • ►  January (10)
  • ►  2010 (105)
    • ►  December (1)
    • ►  November (8)
    • ►  October (5)
    • ►  September (8)
    • ►  August (11)
    • ►  July (6)
    • ►  June (6)
    • ►  May (5)
    • ►  April (7)
    • ►  March (10)
    • ►  February (16)
    • ►  January (22)
  • ►  2009 (167)
    • ►  December (2)
    • ►  November (8)
    • ►  October (16)
    • ►  September (10)
    • ►  August (9)
    • ►  July (9)
    • ►  June (18)
    • ►  May (10)
    • ►  April (26)
    • ►  March (12)
    • ►  February (16)
    • ►  January (31)
  • ►  2008 (30)
    • ►  December (19)
    • ►  November (11)
Powered by Blogger.

About Me

Unknown
View my complete profile