The Volume Slider Compromise

Hi, KDE users. I think it is time we had an adult conversation about KMix and usability.

You see, in my last post, there was an awful lot of vitriol spewed about my heavy handed decision to use horizontal sliders. My personal belief is that vertical sliders have a tendency to induce vertigo in older users and ex-paratroopers. There is no way I can live my life with that kind of guilt on my conscious. Paratroopers serve an incredibly useful purpose in our military operations. I simply cannot allow these great ‘murricans to experience pain at my hands.

After much thought and discussion of usability with an awfully friendly bartender (and much tequila), I’ve decided to implement a compromise in KMix2:

Down and to the left means louder!

I hope you’re happy, because I certainly am.

I realize that this is a very controversial change, so I’ve created a kde pastebin entry to maintain this branch. We all know that KDE git is totally unreliable and the sysadmins are convinced that backups are not backups, so no sense in trying to stay there. The geniuses at Hacker News (who are never wrong or sensationalist) tried unsuccessfully to convince the sysadmins otherwise, so I must conclude that I have no reason to keep faith in them.

Posted in Fedora, Gnome, KDE | 26 Comments

A fresh new KMix

KMix is KDE’s forgotten redheaded stepchild.

Humble beginnings

It is old, has been maintained my Christian Esken since early 2001, and has grown organically. Through no fault of Christian’s or anyone else’s, it is buggy, messy, and nobody else wants to help fix it, or at least has the constitution to do so.

Us redheads need to stick together.

At last year’s Randa, I started working on refactoring and rebuilding KMix from the ground up. Why should adjusting the volume in your desktop be so frustrating? It shouldn’t, thats why.

KMix is back with a new edition~

That is the prototype for the new KMix. The UI design has been shamelessly stolen from pavucontrol:

pavucontrol

As you can see, there is much work left to do. However, I feel that it is ready for others to hack on and test. This restructuring of KMix contains a *lot* of the original KMix code that has been contributed to over the years by over 142(!) people. The biggest committers have been Christian Esken (601), Colin Guthrie (130), and Laurent Montel (123). Mad props to those people and everyone else involved for their work and dedication.

When I started out on this endeavor, I aimed to fix a number of issues I had encountered before:

  • Sometimes at startup, your volume would be all kinds of broken since the KDED module, Tray application, and a session startup script would all sometimes try to restore the volumes and sometimes it just wouldn’t.
  • The GUI was completely rebuilt with every device change. Back in the early days of KMix, hot-pluggable audio devices wasn’t a major use case so it wasn’t included in the design.
  • Since there is no one process that controls all the volume everywhere, that means lots and lots of backend libraries and their respective data structures loaded into many processes, such as plasma, the tray application, the KDED module, the tiny script at startup that restores your volumes.
  • All these different points of control had to make sure they didn’t step on each others toes all the time.
  • To control the volume over dbus, the tray application had to be running. There was no dbus autolaunch, and why would you want a GUI application to automatically launch and do weird things when you just want a small script to turn down your volume between the hours of 3 am and 6 am?
  • pavucontrol had neat VU meters
  • I’m just kinda okay at UI and UX design for end-users.

In response, I’ve come up with the following design:

  • There exists a unique daemon on the session bus at org.kde.kmixd, which is managed via dbus autolaunch
  • This unique daemon supports multiple backends being loaded at once, such as ALSA and PulseAudio (note: currently requires commenting out an if statement)
  • Clients don’t need to worry about learning the oddities of ALSA or PulseAudio control since all interaction happens over the bus in a backend-agnostic manner. You are given a set of controls (such as your internal audio output, or the output of chrome’s flash plugin), a set of control groups (Output Devices, Recording Streams, etc), and a single interface to adjusting the master volume (which is whatever the user configures).
  • Thanks to dbus autolaunch, you don’t have a daemon running in the background until the very instant during your session that volume control is needed. This helps to decrease startup time and overall resource usage.
  • The UI is decoupled from the volume control itself, so others can easily create much better looking UIs in QML, Plasma, QtWidgets, or whatever other language that supports DBus.

All of this is in my kmix-improvements branch on KDE git’s kmix repository. I’ll reiterate: this is mostly just a pre-alpha. Don’t expect everything to work, though I have been using it on my desktops without significant issues. Feedback and contributions are welcome.

Posted in KDE | 80 Comments

Phonon-GStreamer 4.6.3

Howdy, all!

I know I’ve been quite a bit scarce in KDE lately, but that doesn’t stop me from writing a release post :P

VW Beetle

VW Beetle by Ken

The Phonominals are super excited to release Phonon-GStreamer 4.6.3: the GStreamer backend for Phonon, the Qt multimedia framework. This is a bugfix release which includes:

  • Increased compatability with Phonon versions older than 4.7
  • Proper setting of the user-agent for HTTP streams
  • Abortion of in-progress fades when a fader effect is asked to fade again
  • Less CPU hogging when streaming
  • Fixed playback of discs on multi-drive setups
  • Much improved non-gapless playback for shorter sound files
  • Graceful handling of a broken setup that causes a failed gst_init() call

It can be downloaded from KDE infrastructure, as usual.

Cheers!

Posted in Fedora, Gnome, KDE | Leave a comment

A Renaissance of Collaboration

Over the weekend, I had the opportunity to attend Ohio Linux Fest 2012 in nearby Columbus, Ohio.

KDE developers are apparently photo OPs

I had also attended the year prior, where I had a very strange experience. Up ’till then, I had only ever been surrounded by developers and other like-minded people who already “get” KDE, what it means to use free software, and how to get involved. Thats great and all, but Ohio Linux Fest is a convention for the users. There, I was one of maybe three other FOSS contributors that I recognized, and even then I didn’t really know anyone. There, it is incredibly uncommon to meet anyone who actually slaves over a hot vim session to churn out code and put together your working distributions. Meeting a developer, even for something as small as phonon-gstreamer is a humbling event from what I could gather.

This year, our closing keynote was How to Create Ravenously Passionate Contributors by Angela Byron. Her talk explained how she got involved in free software, how she keeps people around in Drupal, and an overview of how their community works.

If you have a look at our Ohloh stats, commits and contributors are down significantly in the past 12 months. I’m sure there are dozens of good reasons why, but the question here is how can we get more contributors?

Angela’s talk discussed some very good points, all of which have parallels to my own path from being some highschool kid wanting to get involved but not knowing how, to being a KDE contributor.

Overview slide from @webchick's talk

The above slide was towards the end of the talk and summarizes things very nicely. I’m going to attempt to apply what I learned at the talk to KDE:

Corrupt Young Minds

This point is aimed more towards getting more people into the field of free software in general. If you’ve got kids, you need to sit them down in front of a computer with KDE installed and tell them to go crazy. They’ll beat it up, they’ll break it, and they’ll fix it. Throughout all that, they’ll learn and discover what it takes to get involved.

Destroy Einstein

A major misconception about free software, is that you need to be a genius to contribute. Only senior software engineers who write code exactly right the first time make free software happen, right? Wrong. Behind every line of code is a dedicated team of people who works hard to make it happen:

  • Sysadmins, who maintain the git repos, reviewboard, cia hooks, IRC channels, and who knows what else.
  • Documentation writers, who explain how things work in easy terms.
  • Packagers delivering released software into the hands of users and developers who don’t like to run kdelibs from git (i.e. me)
  • Artists and designers drawing awesome icons, desktop themes, making usable interfaces and websites.
  • PR teams writing up press releases, taking screenshots, getting the word out.
  • Community managers making sure everyone plays nice.
  • Testers and triagers to keep bugzilla clean of fluff, duplicate reports, and to make sure that the software doesn’t crash and eat all your cheese.

I’m sure there’s more, but no single person can do it all or even knows how it all works. I’m really not sure what goes into running Akademy or Roktober, but I know there are people within our community who make it happen. They are everyday people who aren’t Einstein and are essential to our success.

Mentoring++

This is also a critical component of gaining new developers. Google Summer of Code is an absolutely wonderful program, but we can’t rely on it to gain new contributors. If an interested person is not a student, they still should get some mentoring. KDE has had an informal mentoring program for a long while. I just learned about it last month. We also have an awesome book on how to develop for KDE. Both of these need to be pushed more by current contributors.

Mentorship doesn’t need to be hard, either. If you’re mentoring someone, just take a few minutes out of your week to poke them and see what they’re up to. Sometimes that little push is all that is needed to show that their contributions matter. Ego stroking is a good thing.

Full-frontal nicety

What this means is that all of our public communication channels should be welcoming to new contributors. If something nasty is going down in a mailing list, IRC channel, or wherever else, don’t just let it happen. It sends the message that this kind of behavior is supported by the community.

Fail early, often, and in public

Far too often, a newbie’s mentality is that in order to contribute to a project, they need to do it perfectly on the first try. Real contributors don’t do that. We make and fix mistakes all under public scrutiny. We’re only human, after all. New contributors should be taught that the best way to become part of the community is to actively participate. Here are the two approaches to contributing to Drupal, taken from Angela’s presentation:

Perfectionist Mere Mortal
Find a bug Find a bug
Spend a few days learning the project and developing your patch Contact the maintainer(s) on IRC, asking for some pointers
Review the patch a few times to make sure it follows the documentation standards, code formatting, krazy doesn’t complain, and all that jazz. Someone points them in the right direction, explaining the issue in detail and happens to have some semi-working code available for them to build upon
Submit the patch Contributor submits the patch after a little bit of work
A developer sees the patch, commits it, and says Good Job! A tester tests the patch and finds out it works good, but the documentation and formatting needs adjusted
Contributor fixes the formatting and resubmits
Tester is happy with the results, says “Ship it!”
The inevitable “it doesn’t work in IE6″
Contributor gets it to work in IE6 and resubmits
A core developer commits it to master and says Good Job!

Compare how visible the Mere Mortal is compared to the Perfectionist. The perfectionist is seen exactly once, whereas the mere mortal is seen a handful of times by various people and is all that much more a part of the community by the end. When contributors feel welcome and significant, everybody wins.

Encourage diversity, in both contributors and contributions.

Girls can code too, but are told they’re too pretty for the sciences from a young age. Knock that off, mainstream culture.

Even if you can’t code, check the big list of other jobs in KDE earlier up in the post. They are just as important as everyone else.

Meat-space is sticky

Ask just about anyone who has gone to Akademy or Randa: Face to face meeting sticks with you for a long time. My first KDE event was the last Camp KDE in San Francisco. There I met some of the KDE contributors that I admired, wishing I could be like them too someday. This happened again in Randa 2011. Once you meet them, you find out that they’re just people, much like yourself. Nothing special. It does, however, develop some amazing bonds. KDE feels a bit like family these days.

Cultivate a do-ocracy

Going back to the point “Killing Einstein”, it needs to be clear that stuff only gets done by those who get it done. If you find a bug, report it; nobody else will know about it otherwise. If someone reports a bug, fix it; don’t assume someone else will get to it. If something looks unmaintained and needs some love, just do it. Who will stop you?

Recognize Contributors

People contribute more when they feel that they are important. Shining the spotlight on someone is a great way to do that. In KDE, we have BehindKDE: a contributor is interviewed and you learn who they are, what they do, and how they got to be a part of KDE.

Thats not the only way to do it though. Something I’ve made a habit of doing is making sure the contributors to a Phonon release are acknowledged in blog posts, usually by signing it with “–The Phonominals, X, Y, and Z” If a bug gets fixed by someone’s patch, I’ll be sure to note it in the git commit message and CCMAIL them and call them awesome. Its the little things like this that give new contributors that warm fuzzy feeling of making free software happen.

Scale yourself

Try to reduce your bus factor by encouraging others to take on tasks that you normally do. Intensive mentoring and some really good poking will spread out your load and bring some fresh enthusiasm into the mix.

If you want to help KDE grow, try practicing some of this in your own projects. Maybe sign up to be a mentor. Or review commits for commit-digest.org. Plan a sprint for your group. Write a blog post about what you’re working on and how someone can help test or document. Perhaps even join the KDE Promo team? The sky’s the limit.

Posted in Fedora, Gnome, KDE | 4 Comments

Randa 2012 Day 6

Hello again, from Randa!

The KDE Multimedia Team.”]

[most of

Today is Day 6, the last day of Randa 2012. Its been a fun adventure, with lots of productivity!

 

  • Tons of bugs fixed in Amarok, Phonon, and others
  • Initial development for a fresher, more maintainable KMix
  • KMix sound menu
  • Sustainable architecture plans for Amarok 3 and Phonon 5
  • QML for Phonon 4.8, with consideration for QML2

Posted in Fedora, Gnome, KDE | 3 Comments

Randa 2012: Day 4

Its been a busy week thus far, here at Randa.

First, a quick rundown of what’s been done in phonon-gstreamer:

Finally, something that a lot of people have been waiting for.

QML! Its here!

Yesterday evening, Harald and I spent a few hours on implementing the last bits of QML support in phonon-gstreamer (colorspace negotiation, mostly). It is currently in the master branch and requires the latest master of libphonon to work.

It is a bit CPU intensive, as only RGB32 is supported. YUV is being worked on today, which will allow phonon to use hardware acceleration to process the video at super fast and low-CPU speeds.

Additionally, work on Dragon3 progresses. Here’s the screenshots of Dragon 3 along with the Phonon QML support in action:

Dragon 3

Bad Apple, playing

 

Posted in Fedora, Gnome, KDE | 4 Comments

Randa Day 2

Hello, again from the village of Randa, Switzerland!

Yesterday’s work was focused around getting our week organized and scheduled, but nothing exciting to report on.

Today is currently focused on the Amarok 3 vision, scope, and requirements. Since I’m not much of an Amarok developer and instead opt to take the brunt of complaints for broken audio (phonon-gstreamer), I’ve spent my morning listening in and fixing bugs. Before I arrived on Thursday, there were maybe 45 open bugs for phonon-gstreamer. As of now, we’re down to ten. One of those bugs was a feature request for audio track selection which is now implemented and available in latest PGST git.

After lunch, I plan on expanding on my previous work of getting Zeitgeist into Dragon and Juk.

Posted in Fedora, Gnome, KDE | Leave a comment

Greetings from Randa!

Hello from Randa, Switzerland!

The KDE Multimedia team is here for Randa 2012, where we plan to Get Stuff Done.

There’s a couple of big topics we’re planning on discussing this week:

  • KMix
  • Phonon 5
  • Building a new KDEMM website
  • Defining our target audience
  • Dragon 3
  • Other goodies

I myself showed up yesterday around noon and helped Mario Fux hang up signs and prepare rooms before passing out for a few hours after my ~28 hour adventure.

This morning I checked our pledgie page, and was pleasantly surprised to see that we raised 144 EUR past the goal of 10k! Congrats!

Today is Day 1 of the sprint, where we plan on organizing and scheduling our goals for the week.

If you’re interested in following the activities, have a look at the Google+ event page.

    Posted in Fedora, Gnome, KDE | Leave a comment

    Randa 2012

    Howdy, Planet!

    KDE Multimedia is planning on making an appearance at this year’s Randa meetings!

    For the past four years, Randa has given us a wonderful environment to Get Things Done. Situated in the village of Randa, Switzerland, the meetings are far removed from the everyday hustle and bustle of modern civilization. The beautiful countryside inspires us to be immensely creative and accomplish a volume of work that normally takes us three months in a single week.

    I participated in last year’s sprint, and I can say with 100% confidence: everyone benefits from it.

    Pictured below is last year’s KDE Multimedia team at Randa:

    However, there is a problem this year. We don’t have enough money to get everyone together. We’re about 10.000,00 € short. To fix that, KDE is having a grand ole fundraiser!

    As you might also know, some other KDE teams will be there. Even if KDEMM isn’t much of your thing, you should still support the Randa meetings by throwing some money at our Pledgie page:

    Click here to lend your support to: KDE Randa Meetings and make a donation at www.pledgie.com !

    There has been an awesome team of very dedicated people working towards making Randa happen this year. Lets not let them down :D

    Posted in Fedora, Gnome, KDE | Leave a comment

    Phonon-GStreamer 4.6.2

    Howdy, all!

    Coinciding with the new Amarok release, the Phonominals are proud to announce the 4.6.2 release of Phonon-GStreamer.

    Chevrolet Camaro

    Chevrolet Camaro by @dave_7

    It is available from the KDE infrastructure, as usual:

    http://download.kde.org/stable/phonon/phonon-backend-gstreamer/4.6.2/src/phonon-backend-gstreamer-4.6.2.tar.xz

    Phonon-GStreamer is the GStreamer backend to Phonon, the Qt multimedia library. This is a bugfix release, which addresses some bugs related to gapless playback on certain systems.

    Enjoy!

    – The Phonominals

    Posted in Fedora, Gnome, KDE | 3 Comments