Monday, October 25, 2021

Team Profile

What makes a great team? One important factor is that you have a balanced set of skills and personalities in the team. A team which only consists of leaders won't get much work done. A team which only consists of workers will not work into the right direction. So how can you identify the right balance and combination of people?

One answer is the Team Member Profile Test. It's a set of questions which team members answer. They are evaluated to give a result indicating which type of team member the person is and where it lies in the spectrum of possible types.

There are two dimension which are considered there, how much team members are oriented towards tasks and how much they are oriented towards people. This can be visualized in a Results Chart.

Here is an example:

You can see five segments:

  • The center (5,5) is the "worker" who has a set of balanced of attributes, no extremes. These team members are extremely important because they tend to just get stuff done.
  • The top left (9,1) is the "expert" who is focused on the task and its details but doesn't consider people that much. You need these to get the depth of work which is necessary to create great results.
  • The bottom right (1,9) is the "facilitator" who is something like the soul of the team, focused on social interactions and supports the team in creating great results.
  • The top right (9,9) is the "leader" who is strong on task and people and is giving direction to the team. You need these but you don't want to have more than one or two in a team otherwise there are conflicts of leadership.
  • The bottom left (1,1) is the "submarine" who floats along and tries to stay invisible. Not strong on any account. You don't want these in your team.

The test can provide some insight into the balance of the team. You want to have all but the submarine covered with an emphasis on the workers.

How does your team look like on this diagram?

Thursday, October 14, 2021

Twenty-Five Years of KDE

It's KDE's birthday today. Twenty-five years ago Matthias Ettrich called for programmers to create a GUI for end users of Linux. They came and did. I wrote about the first Twenty Years of KDE five years ago. What I wrote there is still true, but there is more.

The table where KDE was founded

KDE started with tremendous ambition and momentum. Creating this unified graphical user interface, this integrated desktop for Linux, this vision drove hundreds and hundreds of amazing people to put together a massive amount of code, the desktop and tons of applications to cover all needs. And they succeeded, KDE's desktop represents the state of the art for many years now, on par with the best alternatives out there.

Over the years, with a growing community, the focus shifted. KDE was not only about this integrated desktop anymore, it turned into an umbrella for dedicated sub-communities working on specific parts and applications. The community got bigger and more diverse and created applications such as Kontact, Kate, Okular, Krita, GCompris or Kdenlive. All of them are at the top of their category.

KDE Plasma 5.22

I use KDE software for more than two decades now. I read my mail with KMail, I operate my shell with Konsole, I edit my texts with Kate, I manage my desktop with Plasma. It's special for software to stand this test of time. KDE's software is stable, it's durable, it's reliable, it's carefully adapted to deal with changes in its environment, so that it stays fresh and familiar at the same time. Some may remember the heat we got for breaking things with KDE 4.0. That was thirteen years ago. It has been much smoother sailing since then. So maybe this is what I learned to appreciate the most over the last years: KDE creates sustainable software.

The same is true for the community. The community always was KDE's finest features for me and, as I know, for many others as well. I met many very good friends there, and it's still great to also meet new people. People join, people leave, people stay around. It's a very healthy mix. KDE creates sustainable community.

Akademy 2021 group photo by Akademy Team (CC-BY)

There is a very strong feeling which keeps this together, the feeling of doing meaningful things together. It's an experience which is tremendously strong in KDE, but also in many other Free Software projects. Being free and empowered to do these changes you want to see in the software you use. Having people around you who support you, praise and criticise your work, and work with you on a shared purpose. This can be an incredibly strong source of motivation and satisfaction and happiness. It definitely has been for me.

Thanks, KDE, for a wonderful twenty-five years, and all the best for many more to come.

Wednesday, March 10, 2021

11 takeaways from a year of online conferences

I love going to conferences. It's how I learn, meet people, get inspiration, share my work, and have fun. The last conference I went to physically was FOSS Backstage in March 2020. It was great. I talked about Inner Source, met great people, had great discussions.

That was one year ago. Conferences got cancelled or went virtual. I have been to a lot of virtual conferences since then. It's great, attending doesn't require travel, fees went down, with a few clicks you could join any conference on the planet. Sometimes it was attending one session and realizing that it wasn't for me, sometimes it meant spending days in a different time zone.

Of course it's not the same, it's different. So what have I taken away from a year of online conferences?

Ease of access makes a huge difference - I have been to huge conferences who would have been in the US such as KubeCon but also to small local ones I probably wouldn't even have noticed such as the OpenBike conference. If they would have been physical events I wouldn't have been there. They all gave me something of value.

Emulating a physical conference is meh - There are so many systems which try to stick close to the format of a physical conference, with virtual lobbies, virtual booths, virtual conference rooms. In the end they all felt hollow. You visit booths and get all the emails but none of the stickers and no real social interaction.

Live talks are ace - You might think it doesn't matter if a talk is recorded or live. You just watch a video, aren't you? But it's noticeable if somebody is speaking live, there is a different level of energy. For a speaker it might be nice to answer questions during their own talk but it is a distraction and these side talks would be impolite during a physical talk for a reason.

You need more time - It's tempting, back to back talks, only seconds to switch rooms. But there needs to be chatter, there needs to be space to relax. And without the energy you get from a physical group of people it's more exhausting to focus on a conference hours in a row. So while in theory you could do more in an online format, in practice you should aim for less.

Treat talks as broadcasts - Without the limits of physical spaces you can go bigger, you can broadcast. No need to impose artificial limits. And broadcasting videos of people speaking is a well understood art. It's what TV is doing all the time, it's what YouTubers and streamers are doing. Embrace it, tap into the tools and the experience of people who are doing this already. re:publica 2020 did that in a very interesting way.

Manage chat - You need a way for people to chat, but it can quickly get our of control. Big rooms with hundreds of participants amplify the signal of individuals too much. So the best conferences were those who managed that carefully, providing extra sessions for tracks or individual talks, providing breakout rooms, have moderators to guide people around, have a quick way to create your own channels for specific conversations in a natural way. Also give room to the introverts, who might not want to chat with many people at the same time.

Have fun going down the technology rabbit hole - Naturally you need some technology to participate in online conferences. It should not be required to go crazy on that, but some good equipment is really helpful, and it can be fun to go deep on some of that. So have fun exploring fancy microphones, green screens, OBS, light and camera arrangements, DIY teleprompters, etc. And learn from the streamers, they have figured out a lot of that.

Don't save on moderators - Online formats need more guidance. That can't come from the speakers alone. It's worth a lot to have good and present moderators. They keep conversations going, handle technical issues, create atmosphere and much more. You probably need more of that then you assume.

Continue experimenting with the social bits - The stuff which is going on besides the talks, that's what usually makes or breaks a conference. The social bits. These are harder to replicate in an online format than anything else, and they need most creativity as direct translation from offline formats doesn't work well. So keep experimenting. Do things such as a pub quiz, a virtual hallway track, a cocktail challenge, spreadsheet parties, speed dating, music tracks, walk & talk etc. A special shout-out to Work Adventure here. This has been one of the most effective tools I have seen to give some social feeling to a virtual conference.

Authenticity beats perfection -  Polished videos of speakers who rehearsed and cut their videos. That's marketing. It results in these videos which get you 23 clicks on YouTube. They look like you have seen them before. A speaker who has their roommate walking by, or who are struggling with the video situation etc, that's reality. People who have something to say will still bring across their point and engage the audience. Authenticity is a big part of this.

Support the organizers - It's tough. Business broke away for many conference organizers. It's fantastic that many took up the challenge to deal with the situation and become creative. But they need support. Organizing conferences is hard and if you are constrained in the way we have been during the last year it's particular hard. Support the organizers by participating, speaking, sponsoring, and what else you can do.

So a few weeks ago it was FOSS Backstage time again. This time as a virtual event. It was a great experience again. A fantastic lineup of speakers which probably wouldn't have come together at a physical event. Some creative ways to get people together and inspired such as the pirate themed track or the virtual lounge. And lots of insights, conversations, and things to learn.

I'm looking forward to what still is to come in terms of virtual events. I'm sure we haven't seen all what is possible there. Keep on experimenting.

Wednesday, January 30, 2019

Governance on demand

I have talked about the Spectrum of Open Source Governance Models before. After rereading Nadia Eghbal's excellent post Governance without foundations I feel tempted to add one more: Governance on demand.

Why that?

Nadia suggests a theory in the last footnote of her post, "that projects only need to define governance at the first sign of conflict". Intuitively, this makes immediate sense. We have all seen the projects which seem to work very fine without any thoughts about governance, and we also have seen those projects where attempts to set up formal governance have brought things to a halt instead of serving the project. So doing it at the last responsible point in time, when you actually need it, sounds like a very attractive model.

Being able to add governance on demand needs a high level of awareness and reflection. It also needs a culture which is open to the idea of governance, has the means to facilitate discussions about it, and is able to come to a conclusion. It is the point where you have to "decide to decide".

This is not easy, especially in the context of a conflict. It can be paralysing. Making decisions without having defined structures, without having precedence, takes responsibility and courage. Maybe not everybody will go along with it. You don't know because you haven't done it before.

One model which seems to be a quite natural outcome of such a "we need governance, now" situation, is the "benevolent dictator". When conflict arises, the founder or another exposed person steps in and takes a decision. This sets a trajectory for the project, which might be right or not. It depends on the project, on the people, on the environment.

Another model which comes naturally is to follow the "those who do the work decide" principle. This adds local, high context governance. It has to be underpinned by common values and a common sense of direction, though. Otherwise it will fail to solve the kind of conflicts where active people seem to stand against each other.

If you have a strong culture, it might appear you don't need governance. If you have shared values, if you have a common mission, if people learn by imitating healthy behavior from others, then it's easy to take decisions and to preempt conflicts. This could also be called a state of implicit governance, because it is there, but it's not formulated.

If you have a strong culture, then you are also prepared to add governance on demand. This can become necessary because of growth, a changing environment,  or other factors which can't be addressed by existing intuition.

From this point of view: Build culture first and governance will follow.

These are my thoughts. I would be more than happy to hear about your thoughts as well.

Foot note: In some way "governance on demand" is not a governance model in itself, but more a meta model. It doesn't tell how the governance regarding the project then has to look like but only answers a part of the question how to get there. It is in the nature of governance models to also cover this meta level, though. Maybe "governance on demand" is more a governance element than a model in itself. It governs the evolution of governance models.

Wednesday, January 9, 2019

Beautiful GitHub labels with Terraform

Managing issues is part of the daily life of most software projects. Reacting to bug reports, feature requests, pull requests, tracking what's going on and where to put attention, all that is usually handled in the bug or issue tracker of the project's choice.

On GitHub there are the GitHub issues, and they have become quite powerful over time. Just recently GitHub added the capability to show related issues, pin issues to repositories and to move them between repositories.

One important tool to manage issues on GitHub are labels, those nicely colored badges you can add to issues to get a better overview, to filter lists and queries, or to build further automation such as the presentation of good first issues to people new to the project.

If you have a lot of labels it tends to become a bit of effort to manage them well, especially if you want to keep colors consistent and descriptions up to date. It becomes even more effort when you try to do so across different repositories. We have all seen the psychedelic potpourri of colorful labels which tends to happen when you use labels generously.

Last year I saw Mitchell Hashimoto's excellent talk about anything as code at the Open Source Datacenter Conference in Berlin. He showed there how to use Terraform to manage infrastructure as code beyond the typical management of computing infrastructure such as servers or networks. He showed how to use it for more administrative tasks such as managing teams on GitHub.

This is a great approach because it replaces clicking around in a user interface by a more programming-like approach of maintaining configurations, preferably version controlled, and applying the same rules on them as on code. So you can do pull requests, review changes, have the history of what happened in git, run tests and other automation easily, etc.

The GitHub provider for Terraform also handles labels so I thought I would give it a try to manage labels as code. Directly doing this in the Terraform configuration is possible but it's a bit cumbersome and limited in what you can do with the data in this format. So I decided to put the data into a good old YAML file and writing a bit of Python code to deal with it.

The result is beautiful-labels, a small tool to manage GitHub labels from a YAML description via Terraform. It scans your repository for existing labels and their data, creates a YAML description from it, and then provides you the tools to turn it into a Terraform configuration.

Terraform is great in handling the state of things in the cloud, it takes care of operating the API in an effective way, figuring out what needs to be updated, and gives the user control, for example by providing a dry run which tells what would change without applying the changes yet. This is all quite convenient and powerful.

One thing beautiful-labels is supposed to make easy is the management of label colors. In addition to the convenience of managing them in YAML instead of having to use the UI, it also adds the option to generate an overview of the labels as SVG, nicely grouped in categories. This helps in grouping things together using colors and generally can augment documentation about how you intend labels to be used.

The tool is in an early state but it works. I use it to manage the labels in the inqlude repository on GitHub.

You could add another step of automation by letting CI run Terraform on commits to the YAML file. Maybe something to try for the future. As managing labels is not something you usually do on a daily basis, some manual step might also be good enough.

One caveat with labels is that GitHub uses the name of the label as identifier. That usually works great but can be a bit tricky when changing the name of a label. For this case I recommend to do it in the GitHub UI for now.

There are some other approaches how to do this kind of stuff. One of them is labeler which is a nice tool written in Go to manage labels from a YAML description. It directly operates the GitHub API. The advantage is that it's self-contained but it lacks the power of Terraform in terms of state management. Another is Zach Dunn's post "How we organize GitHub issue: A simple styleguide for tagging" which introduces the notion of color-coded categories.

It's wonderful when pieces come together, such as the GitHub API, Terraform, YAML, git, and people writing open source code around that. They result in a way to beautifully manage labels without having to put in too much effort.

If you have feedback or input please don't hesitate to drop me a line. I would be happy if beautiful-labels would be useful for you as well. Let me know how it goes. :-)

Wednesday, September 5, 2018

My open source career

When I started doing free software in 1999, I came for the technology. I wanted to practice my C++ skills. I was fascinated by developing graphical user interfaces with Qt. I wanted to scratch my itch of organizing my life digitally. I started to work on KOrganizer.
I stayed for the community. I stayed for the friends I met, for the amazing people I work with, for the people using my software. There is this feeling, when you go to an event such as a conference, and you meet the people you have worked with over the internet for the first time in person, and it feels like meeting old friends. No matter how diverse their backgrounds are, there is something which holds the community together. This is why I’m still there.
And while I didn’t plan it, doing free software became my career. I did free software because I was curious, because I could apply and hone my skills, because I could learn, because there were real challenges, because I could shape what I did and how I did it, because I could work in a brilliant team, because I got direct feedback from other contributors and from people using my software, because what I did mattered to others. Putting all that together made the ideal job, and it turned out that this is something companies need and pay for.
My learning experience in the free software community went beyond technology. I also learned a lot about people, about how they work together, about organization, about leadership. I became a member of the board of KDE e.V., the foundation behind the KDE community, and this was the ideal place to learn about a lot of the non-technical aspects.
I’m an engineering manager and distinguished engineer at SUSE today. My free software work was essential in developing the technical skills which make me a distinguished engineer and the leadership skills which make me a manager. I’m still contributing to free software. It’s part of my job. It still is a way to learn, and it keeps me grounded.
I have written and talked about this before, and somehow I feel this comes together nicely in three key points which summarize what I consider to be most important:

Wednesday, July 25, 2018

I'm going to Akademy, again

A little bit less than a month and I will be at Akademy again, KDE's annual conference. This is the place where you can meet one of the most amazing open source communities. To me it's kind of my home community. This is where I have learned a lot about open source, where I contributed tons of code and other work, where I met a lot of awesome friends. I have been to most Akademy events, including the first KDE conference "Kastle" in 2003. But I missed the one last year. I'm more than happy to be back this year in Vienna on August 11.

Akademy will start with the conference on the weekend, August 11-12. I was in the program committee this year and I think we have put together an exciting program. You will see what's going on in KDE, what the community is doing on their goals of privacy, community onboarding, and productivity, hear about the activities of KDE e.V., get to know some of the students who work as part of one of the mentoring programs such as the Google Summer of Code, and much more.

It's a special honor to me to present the Akademy Awards this year together with my fellow award winners from last year. It was hard to choose because there are so many people who do great stuff in KDE. But we have identified a set of people who definitely deserve this prize. Join us at the award ceremony to find out who they are.

Being at Akademy is always special. It's such an amazing group of people hold together by a common idea, culture, and passion. You could never hire such a fantastic group. So I feel lucky that I got and took the opportunity to work with many of these people over the years.

It's also very rewarding to see new people join the community. Akademy always has this special mix of KDE dinosaurs, the young fresh people who just joined, and everything in between. The mentoring KDE does with great care and enthusiasm pays off, with interest.

Vienna is calling. I'll quickly answer the call. See you there.

Team Profile

What makes a great team? One important factor is that you have a balanced set of skills and personalities in the team. A team which only con...