{June 25, 2008}   re: stop energy

so, ervin blogged about about “stop energy” and the poisonous people that we’ve been failing to deal with.

“The story started several weeks ago (probably even months ago) ” – ervin, it’s been going on a lot longer than that. ever since I started trying to get involved in plasma last year, I’ve watched aaron deal with these people over, and over, and over… his patience with them amazes me. I probably would’ve snapped pretty fast if I was getting that amount of negative energy thrown at me on a daily basis. This has been coming for a while, and none of us seems to have done much about it.

The fact that he’s both the president of the KDE e.V (which is mostly just an organisation that deals with KDE’s paperwork!) and project leader for plasma (which far too many people seem to equate with all of KDE) puts him in an uncomfortably public place. many people seem to be treating him… almost like a celebrity. it’s creepy. it’s not a healthy way for a community to behave. it makes me somewhat nervous about my own involvement in KDE; I’d hate to end up in a position like that. I wouldn’t be able to handle it. I’d love to be able to get more involved in the KDE community in future, and do useful things beyond just writing code… but not if it’ll mess with my life like that.

So… what can we do about this? I’m glad ervin made some suggestions, because I know fuck all about dealing with things like this. Properly moderating the dot seems like a very good place to start; I think of it as the cesspool of the community. :P
I think it might also be good to have a place to send people when we tell them “this discussion has been done to death, please stop talking unless you’re sure you have something new to add.” (because how can they know whether they’ve got something worth saying until they’ve read the old discussions?) – but that’s one of those things that requires manpower, and I’m currently behind schedule on my soc project.

Another thing I’ve noticed; when aaron is patient and tries to reply to these trolls, people wonder why he doesn’t just ignore them. when he tries to put an end to conversations, he gets called names like “dictator”. what’s anyone supposed to do in a situation like that? as a community, just what the heck do we expect from people?

Of course we don’t want to ignore users entirely. Of course we don’t want an environment where certain people are Always Right and nobody can voice dissent. but I think we’ve gone too far in the other direction. we’ve become so tolerant of people voicing their opinions and arguing about things that we’re unable to say Enough is Enough. There has to be a balance somewhere, where users can still be heard but developers can still get on with things instead of constantly justifying and re-explaining every little thing they do.

I hope we can work towards finding that balance, before more harm is done.

{June 24, 2008}   on communication

communication is hard. I’m seeing things happening in the KDE community that concern me, but I don’t know enough about this community or life in general to know if I really should be concerned, or what can be done (if something should be done).

I see one person worrying about the effect developer blogs are having on users – seeing new and shiny things and then finding out the packages their distro provides don’t have those features yet, or maybe the UI to set them up isn’t done, or whatever.
I’ve seen people suggest that developers, on their blogs, shouldn’t be writing as if they were talking to other developers, because then users come along and wildly misinterpret what they read.
I’ve seen posts on the planet, in the past, that seem designed to do nothing but stir up cotroversy and fan the flames (thankfully, very few of them).
I’ve see posts that were well-meaning, but written in a way that just stirs up trouble, worrying or angering people unnecessarily.

funny. I find half my mind wanting to generalise and leave out details, avoid naming people who might take offence or pointing to specific bad posts that should be left dead. but the other half of my mind is going “no! specifics! must have specifics!”

anyways, back on topic.
on the one hand: it’s my blog, damnit! shouldn’t I be allowed to write whatever the heck I want?
on the other hand: it’s published on the planet. shouldn’t I be careful about what I say? shouldn’t I try to write thoughtful, useful posts and avoid causing unnecessary pain to the community?
as for users misinterpreting things… these are developer blogs. developers probably want to blog about technical things. they’re not marketing folks. however, it seems users will read them anyways.

perhaps what I should be asking is: what’s the intended audience for planetkde? what are our expectations for content on the planet? what standards do we expect people to meet in terms of thoughtful, mature communication? what do we do about people who are *not* the intended audience reading the blogs anyways and misinterpreting things?

I also see other things that concern me. we have a *lot* of users these days. it’s easy to spend all day trying to explain things to users and not actually get any code written. some of these users are really friendly and make us feel good about our work. some are nice, but unintentionally get on our nerves. some are a a bit of a pain. some seem to have nothing better to do than continually provoke us without being in any way constructive until we don’t want to write code at all. some are downright creepy (identity theft is not cool).

when those non-constructive people are replying to blog posts and commenting on bugzilla, it gets really hard to just ignore them. especially when we don’t want to ignore the nicer users. these trolls also make it a lot harder to be patient with the mildly annoying comments. plus, mildly annoying becomes extremely annoying when it’s repeated over and over and over.

so how do we keep communication between developers and other contributors and users open, without people being overwhelmed?

I get the impression that many developers are doing just fine. perhaps they have thicker skins, perhaps they’re working on less public bits of code and don’t have much to stress them out. but some of us don’t have thick skins. sure, it’s the internet, stupidity and trolls are inevitable. but you can’t always expect a person to just grow a thicker skin and not care so much. if we didn’t care, why would we be here in the first place, writing code, trying to improve the software we love? when you care about things, you can get hurt – but you care anyways because what’s the point in living otherwise?

I’ve asked a lot of questions there. now maybe I’ll take a stab at some answers.

“what’s the intended audience for planetkde?”
I’m really not sure what our intended audience is, but effectively we seem to have contributors, users and trolls. I think we can agree that trolls aren’t part of our intended audience, at least. :) I’m on the fence about what sorts of users should be included in our intended audience. certainly users who are interested in becoming contributors someday or are curious about what we do; not so much the users who just want an answer to their own question – which is usually something more appropriate for bugzilla or a mailing list or #kde (our blogs are not a support forum, no matter how convenient it may be to just drop questions here!).

“what standards do we expect people to meet in terms of thoughtful, mature communication?”
I think it’s quite reasonable to expect people to think before they post, and try their best not to spread FUD or provoke people or fan flames.
I think it’s also reasonable to expect people who aren’t so good at it to try and improve – or rather for *all* of us to always be trying to improve our communication skills. it’s one of those things that’ll help you in all aspects of your life, really. I hate this communication thing, but I keep trying, for the sake of my future self. ;)

“what are our expectations for content on the planet?”
well, developers need a place they can blog about technical things. most aren’t marketers. I don’t think we can expect them to suddenly become marketers, or dumb down their posts for the sake of nontechnical users. the users seem intent on reading their blogs anyways, though. I briefly entertained the idea of having a separate planet for nontechnical blogging – but isn’t that what the dot is for? (I don’t even *read* the dot any more. the comments there just got too inane.)
Perhaps we can do something to remind the users that these are mostly developer blogs? I don’t know what. I’m certainly not going to start putting a “not intended for end-users” disclaimer at the top of all my blog posts. :P
could we remind the users that the screenshots they’ve come to expect are from trunk, and their version might not have this stuff? perhaps. I think everything I’ve blogged about has been brand-new at the time, and if people don’t realise that software released months ago won’t have the feature I wrote yesterday there’s not much I can do for them. anyways, lately we’ve been mentioning version numbers a lot, talking about what will and won’t be in 4.1 – so the more I think about this, the more I believe it’s a non-issue.
I do think developers should try not to scare users; I don’t think they should be expected to go out of their way to accommodate them or turn a technical post into a non-technical one.

“what do we do about people who are *not* the intended audience reading the blogs anyways and misinterpreting things?”
damn, I don’t have an answer for this either. some people disallow anonymous comments, but personally I don’t like to do that – plenty of nice comments are anonymous too. can we try to teach people that these blogs aren’t meant to be marketing pieces? that we’re just humans, writing about what’s on our minds?

sometimes I think I should set up a separate blog somewhere far away that either can’t be linked back to me or isn’t open to the public, because there are some things I’d like to blog about but don’t really want exposed to a bunch of random internet-strangers. but that’s not really relevant here; I think that posts about my kde work naturally belong on planetkde.

“so how do we keep communication between developers and other contributors and users open, without people being overwhelmed?”
hmm. there’s a big question.
for starters, I think having a bugzilla that didn’t suck would be nice. :P I don’t know if I can expect that to happen, though. there is some new version in the works, but I don’t know when it’s coming or what improvements it’ll bring. it’d be nice if bugs didn’t just have one huge dump of the entire history of the bug. it’d be nice if I could take bugs offline and work on them. it’d be nice if I could search without using that godawful query page. it’d be nice if we could send bugs upstream or dowstream instead of just closing them and telling people to go talk to $project instead.

maybe it’d also help if there was somewhere to send users that are asking a question that’s already been answered a dozen times. a techbase-for-users or something. of course, that’d require people stepping up and setting it up and maintaining it n’stuff. any volunteers? ;)

there are many users, and few contributors… it doesn’t seem to scale very well in terms of communication. now I kinda understand why gmail has only a user forum, and no bug reporting or email addresses or developers to pester (you just have to wait for a developer to reply to a forum post – if they choose to do so). I still don’t *like* it, but I understand it.

{June 23, 2008}   soc week 4

I took a bit of an unscheduled break this week. didn’t write any code until sunday (although I did read and think about and talk about code). :) it was nice to just relax for a while.

unfortunately I haven’t *quite* got my goal for the week finished. input is somewhat partially working; I can click on things, and keypresses are going through, so the basic stuff is there. contextmenus and plasma-dialogs work, although they’re drawn below the semitransparent containment background (it’ll be fully transparent later, but this is useful for debugging). the add-widgets dialog and config dialogs aren’t showing up, but I’m sure they’re out there somewhere. ;) what bugs me right now is that qactions’ keyboard shortcuts aren’t working at all, and I’m not sure how to solve that one.
the code for this stuff is currently in the ‘input’ branch on gitorious.

if I’m lucky I’ll get those bugs ironed out tonight or tomorrow and be back on track for this week’s goal – requiring a password to unlock plasma. and if I’m not lucky… well, that’s why week 6 was left blank. :)

oh, and my email got pretty backed up while I was relaxing. I’d only been keeping up with things addressed directly to me and a few important parts of lists, and ended up with around 2500 unread messages! :/ it turns out that a little over two thousand of them were plasma bugreports; I hadn’t touched that folder in about two weeks, and before that I hadn’t quite been keeping up with it (it was hovering around 500 for a while).

so, I gave up and marked the folder as read. it’s starting to fill up again already. :/ ick. there are way too many bugreports there. being busy with soc, reading them isn’t really a useful way to spend my time anyways, I guess.

{June 17, 2008}   soc week 3

these weekly reports are going to be pretty boring if I keep blogging about what I’ve done halfway through the week. :)
I haven’t written any code since then; I spent my time dealing with some Real Life stuff I’d been neglecting, then getting outside and enjoying the sushine. :) I need to remember to spend more time outside the house and not get lost in my computer.

I did do some planning for this upcoming week, though. hopefully getting input working properly won’t be too much of a headache… we’ll see. I don’t think I’ll have time to actually write the code for that for another day or two.

{June 12, 2008}   shiny!

whee! only thusday and already I have my goal for the week done. I have plasma-overlay displaying properly over the screensaver. on my laptop, where composite is on, I can see them both together. on my desktop, where composite is off, I only see plasma (and the screensaver process should be nicely suspended). I have a screenshot of the composited one, and as usual the code is up on gitorious. :)

I had to set up a dbus interface before this would work – need to pass the winid n’stuff. There are some nice techbase tutorials, but I still ended up banging my head against the wall a few times :P I’ve never worked with dbus before. still, in the end I managed to do everything in a way that feels nice. :) I’m quite happy that I managed to get cmake generating both the xml and the adaptor-class for me. :)

once dbus was working, then I had to get the window stacking order right, so that plasma-overlay was above the saver and under the lock dialog. ohhh, the headaches that caused. as I was on my way to a party last night I realised that half my problem was that I was using the wrong winId. :) so when I got home of course I had to go bacck on the computer and test this, and bam! plasma-overlay shows up. :D
…and then I discover that I can’t get rid of it. the screensaver won’t respond. killing krunner_lock crashed X. doh. turns out I had an infinite loop in the stacking code because I ignored a comment about infinite loops… :) once I had that fixed, I polished off a few things, and… well, it works now.

of course, when I say “works”, I mean it displays the way I want it to. I still have the problem that the unlock dialog steals all input, so I can’t actually *interact* with plasma from the screensaver. but that’s next week’s goal. :)

I guess now I can spend the rest of the week seeing if non-compositing ways of trying to draw the screensaver are really as bad as I think they are. or fixing plasma bugs. or just enjoying the sunshine. :)

{June 9, 2008}   soc week 2

well, I pretty much covered it in my last post: I haz code now. yays.
since then I’ve cleaned up some little things and created my own containment without all the useless desktoppy stuff, so I’m back on schedule. :) I poked at the appearing-below-screensaver issue, and fredrikh gave me some pointers, but… I’d actually totally forgotten about that until a minute ago. luckily I still have the window open, so perhaps I’ll work on it tonight. looks like I also have to make a dbus interface for the lock process and the plasma one to talk to each other.

once I’ve got that dbus stuff running, I guess I’ll have to figure out once and for all whether there’s any feasible alternative to using composite.

actually, I just had an interesting thought, right this second.
see, for desktop containments, in 4.2 we’re planning to have background-drawing plugins, so that you can do things like using a folderview as a containment and having wallpaper in it too. I wonder… if a way to draw screensavers in the plasma process were to come along later, could it be done as one of those plugins? if it could, then it could be done later, if someone figures out a way after soc is over.

just a thought. might not necessarily be doable – drawing on the canvas would be sucky. but to get behind widgets you basically have to be drawing on the canvas, or drawing in the view’s background-painting function (and it’s not like that gets called at 20fps or anything), so there aren’t that many non-composite options for screensaver stuff in the first place.

{June 6, 2008}   let there be code!

I just pushed the first bits of my soc code to my public git repo. :) the code is awful and hackish and probably has lots of problems besides those noted in the merge commit-message, but it runs and you can add widgets. :)

right now there are two main problems with it. first, the only way to stop it is with `kquitapp plasma-overlay`. it’s easy to hide it, but impossible to re-show it. second, when it’s started via the screensaver, it shows up *under* the screensaver. fun, huh? oh, and if you want to compile it, see README.git first. and be aware that it’s based on a copy of workspace/ that may not be entirely up-to-date (aren’t bic changes fun?). doing a git svn rebase seems to spew commit messages all over gitorious; I wish there was a way around that.

I’m hoping that ossi can help me get it running over the screensaver nicely, because that code isn’t always easy to understand. aseigo, ossi, sebas: if any of you have time, please review the code for me :) I’ve never really written an app from scratch, there’s lots of copy&paste from plasma/plasma, and I’m sure there are tons of things I’ve done wrong. (should my app even be a KUniqueApp in the first place? should it fork? etc, etc…)

oh, and I suppose I should add my own name to some of the copyright somewhere. I’m terrible at attribution – there must be a ton of files in plasma that should have my name in them and don’t :P

now, since I don’t see aaron or ossi online, I guess I’ll work on making my own containment so I can stop using the desktop one. :)

wow. last week seems like a long time ago.
soc, for me, started monday evening, when I spent a few minutes tossing together a quick hack and got this:
screensaver + clock
that made me pretty happy – I had a plasma clock, and I had a screensaver, with very little effort, and they were mostly getting along. there was just that pesky green background to get rid of.

after a few days of banging my head against walls, I finally conceded that qt and X11 just weren’t capable of making that background go away. not without awful masking hacks that would probably not be worth the effort. so, I have two possible ways of dealing with this: either make it depend on composite to show both widgets and the screensaver, or change how screesavers work. the former sounds a lot more likely. :)

anyways, I decided to put those troubles aside for next week, and focus on getting some basic groundwork laid. I got kde4 compiled on my desktop, fought with suse and zypper a lot (I’ll post later about my impressions of suse), got things up and running, brought over some of my settings and scripts so that I wouldn’t go insane, got git installed, fought with git a tiny bit (I like it so far), and… didn’t get to much coding.

I was actually set up and ready to write code on friday, but Real Life has been getting in the way (hey, it *is* the weekend), we have a houseguest sleeping in the computer room, I’ve been procrastinating a little too, and it seems like every time I feel ready to start coding something jumps up and demands my attention – or I somehow find something more important to do. ;) at least I managed to channel some of the procrastination into useful things like answering questions and doing laundry and fighting weeds. now I’ve realised that the code I was going to copy&paste as a beginning has some really stupid bugs that I should fix first – after all, I’m going to need to fix them before 4.1 is released anyways.

so… yeah. not much of any code to show for this week. monday’s going to be busy, too. guess I’ll have to get up early in the morning and get the RL stuff dealt with so I can get lots of code written when the computer room isn’t occupied.

right now I have to go get dinner started… where does the time go? :P

et cetera