Sam Hartman: How Can Debian Turn Disagreement into Something that Makes us Stronger
Recently, when asked to engage with the Debian Technical Committee, a maintainer chose to orphan their package rather than discuss the issue brought before the committee. In another decision earlier this year, a maintainer orphaned their package indicating a lack of respect for the approach being taken and the process. Unfortunately, this joins an ever longer set of issues where people walk away from the TC process disheartened and upset.
For me personally the situations where maintainers walked away from the process were hard. People I respect and admire were telling me that they were unwilling to participate in our dispute resolution process. In one case the maintainer explicitly did not respect a process I had been heavily involved in. As someone who values understanding and build a team, I feel disappointed and hurt thinking about this.
Unfortunately, I don't feel much better when I consider several of the other issues brought before the TC. In a number of cases, the process has concluded, but it feels like a pyrrhic victory. We have an answer, but often we never reached an understanding of one of the key stakeholder's positions. People are sufficiently disappointed or frustrated that they reduce their involvement. That is, the answer is not one they can live with. Sometimes, I'm not even sure that answering the question was worth the cost.
My initial suspicion as I begin to consider issues that have come before the TC in the last few years is that as a necessary consequence of how the TC operates, we will drive a significant chunk of those who come to us away from our community. I will not be part of that. If I end up eventually agreeing with this suspicion, I will either work to improve the TC process or find a different way to contribute to the project that is more aligned with my goals.
Our Community is More Important than Technical Correctness I firmly believe that Debian's strength is its community. Distributions, upstreams, free-software advocates, corporate interests, and everything in between work together. Because we are working on a concrete product,we actually have to understand how our needs conflict and compliment each other. Also, like any organization, our ability to get things done is dependent on our contributors and the time we all put in.
I cannot think of anything more harmful we can do than drive away a constructive contributor. Technical quality is important: many of us will eventually go away if quality drops too much. However, Debian itself can be improved incrementally. Yes, new people do join Debian. However, it takes a lot of new people to make up for a situation where everyone involved is frustrated, and some leave and tell their friends to stay away from Debian.
When a Disagreement Reaches the TC When a disagreement reaches the TC, we know a few things. First, people have not have not been able to resolve it on their own. Second, the disagreement is important enough to at least one of the parties to ask for outside help.
If the TC were to simply announce a decision, it is very likely that at least one party would feel frustrated and disappointed. If the decision is important to someone it almost always means that they care about the outcome. If previous efforts have not reached agreement then there is an outcome that is undesired. While it's possible under the constitution that two parties could bring an issue to the TC mutually where the dynamics could be different, this does not happen in practice.
When we "lose" When a decision making process decides to select one of my undesired outcomes, I have strong negative feelings. First, there is the technical result itself. Because of an adverse decision it is generally harder for me to do my technical work, or some ethical position or group I care about is disadvantaged. However, the strongest feelings are related to needs about my place in the community, not a direct response to the technical decision. I worry about whether issues I care about will be valued in the future; I would likely feel weary or scared thinking of contributing in an environment where issues that matter to me aren't going to be considered. I tend to feel frustrated if my position was not adequately considered this time around.
Often, the strongest feelings do not stem from how I am impacted by the decision itself. Thus, if my more general needs are addressed, I will feel a lot better about not having my preferred outcome selected. Confidence that my position was understood is the single biggest factor in being able to accept the result. If the community took the time to understand me, then I have confidence that I am valued. I can advocate for change and be part of the ongoing discussion. If I understand the other positions then I can understand that the position was not arbitrary. Understanding the other positions is also a prerequisite to seeing how things I value were considered, especially when the tradeoff did not ultimately favor these values.
My conversations with others about their experience with conflict suggest my feelings and needs are common.
However, the TC focuses almost exclusively on the technical matter before it. I don't think the TC has done a good job of actually understanding maintainers or the people bringing issues to us. Especially when we're fairly sure we understand what the ultimate decision will be, we focus on getting to that decision. Of course part of actually understanding someone is considering what they have to say. Even when you have high confidence in an outcome, if you want someone to feel understood, you do have to listen at a point where you can consider what they bring forward.
Frustration of Being Questioned
On the other side, it's frustrating to have your decisions questioned. Reviewing a decision takes time. Even if the TC agrees with a maintainer, asking that maintainer to sit through a long process can create frustrations as deep as any I discussed in the previous section.
So the process is doubly bad for maintainers. Someone can bring up an issue which requires precious time. Then if the TC decides against the maintainer, we have all the problems I discussed previously.
I acknowledge this. A good process must respect the maintainer's time. However, it must respect the community members who disagree with maintainers. Everyone who brings an issue to the TC is a developer. They have contributed significantly to our community and are part of our team. Yes, we need to protect the process against abuse. But in a very real sense if we aren't willing to consider an issue and we aren't willing to engage with someone, understand why they think the issue should be considered, and work until they understand why we made our decision, we are saying we do not respect them enough to take that time. We should expect that to drive people away.
I wonder if the solution here involves a two phase process. During the first phase we work with someone bringing an issue to us until we understand it. We either engage the maintainer at that point, spend the time to help the person bringing an issue to us understand why we are not engaging the maintainer, or have decided the issue is abusive of the processs/misdirected. For this to work maintainers would have to trust us enough to actually be willing to sit back and not spend a lot of their time.
Sam, It's Just Personalities
One criticism I've heard as I discuss this is that a lot of the negative feelings surround interpersonal conflict and are personality conflicts. Yes, personalities matter. Yes, we re still healing from the Systemd discussion.
However, as a community, I think we need to figure out how we respect the inevitable personality conflicts. I can think of one or two developers I'm still upset with years after an issue. It happens. Perhaps if I were a maintainer when one of these developers raised a concern with my packages, I could ask that someone else be a primary advocate for an issue. Similarly, if a developer wanted to address an issue with me as a maintainer but would prefer not to deal with me, perhaps we could figure out some way that we could see if someone else shared the concern.
Dropping a Package is Sometimes an Answer
My concerns were sparked by instances where a maintainer dropped a package rather than interact with the TC. Sometimes that can be a healthy step in a transition. At Debconf this year, Enrico Zini gave a talk on consent culture in Debian. One of the key points of his talk is that we can find over time that what we're being asked to do in Debian is no longer consistent with our boundaries. If it isn t helping us move forward if it isn t fun then it is likely time to stop.
In that sense, approaching disagreement can be a great time to take stock and ask whether we still enjoy maintaining a package. If we don t, then stepping aside and letting others take it on can be a great way that we and they can be happier. I don t really think that s what happened in these instances though. Based on comments made to me, this sounded more like a lack of faith in being treated well or in our ability as a committee.
Even so, Enrico s talk applies in a number of ways here. He suggests that the approach we should take when someone is done and steps away is to thank then. I couldn t agree more. From the depth of my heart I offer thanks: Thank you for taking care of yourself and stepping away when it is no longer fun. Thank you for all the effort you have put into these packages. I hope to work with you on great things in the future.
For me personally the situations where maintainers walked away from the process were hard. People I respect and admire were telling me that they were unwilling to participate in our dispute resolution process. In one case the maintainer explicitly did not respect a process I had been heavily involved in. As someone who values understanding and build a team, I feel disappointed and hurt thinking about this.
Unfortunately, I don't feel much better when I consider several of the other issues brought before the TC. In a number of cases, the process has concluded, but it feels like a pyrrhic victory. We have an answer, but often we never reached an understanding of one of the key stakeholder's positions. People are sufficiently disappointed or frustrated that they reduce their involvement. That is, the answer is not one they can live with. Sometimes, I'm not even sure that answering the question was worth the cost.
My initial suspicion as I begin to consider issues that have come before the TC in the last few years is that as a necessary consequence of how the TC operates, we will drive a significant chunk of those who come to us away from our community. I will not be part of that. If I end up eventually agreeing with this suspicion, I will either work to improve the TC process or find a different way to contribute to the project that is more aligned with my goals.
Our Community is More Important than Technical Correctness I firmly believe that Debian's strength is its community. Distributions, upstreams, free-software advocates, corporate interests, and everything in between work together. Because we are working on a concrete product,we actually have to understand how our needs conflict and compliment each other. Also, like any organization, our ability to get things done is dependent on our contributors and the time we all put in.
I cannot think of anything more harmful we can do than drive away a constructive contributor. Technical quality is important: many of us will eventually go away if quality drops too much. However, Debian itself can be improved incrementally. Yes, new people do join Debian. However, it takes a lot of new people to make up for a situation where everyone involved is frustrated, and some leave and tell their friends to stay away from Debian.
When a Disagreement Reaches the TC When a disagreement reaches the TC, we know a few things. First, people have not have not been able to resolve it on their own. Second, the disagreement is important enough to at least one of the parties to ask for outside help.
If the TC were to simply announce a decision, it is very likely that at least one party would feel frustrated and disappointed. If the decision is important to someone it almost always means that they care about the outcome. If previous efforts have not reached agreement then there is an outcome that is undesired. While it's possible under the constitution that two parties could bring an issue to the TC mutually where the dynamics could be different, this does not happen in practice.
When we "lose" When a decision making process decides to select one of my undesired outcomes, I have strong negative feelings. First, there is the technical result itself. Because of an adverse decision it is generally harder for me to do my technical work, or some ethical position or group I care about is disadvantaged. However, the strongest feelings are related to needs about my place in the community, not a direct response to the technical decision. I worry about whether issues I care about will be valued in the future; I would likely feel weary or scared thinking of contributing in an environment where issues that matter to me aren't going to be considered. I tend to feel frustrated if my position was not adequately considered this time around.
Often, the strongest feelings do not stem from how I am impacted by the decision itself. Thus, if my more general needs are addressed, I will feel a lot better about not having my preferred outcome selected. Confidence that my position was understood is the single biggest factor in being able to accept the result. If the community took the time to understand me, then I have confidence that I am valued. I can advocate for change and be part of the ongoing discussion. If I understand the other positions then I can understand that the position was not arbitrary. Understanding the other positions is also a prerequisite to seeing how things I value were considered, especially when the tradeoff did not ultimately favor these values.
My conversations with others about their experience with conflict suggest my feelings and needs are common.
However, the TC focuses almost exclusively on the technical matter before it. I don't think the TC has done a good job of actually understanding maintainers or the people bringing issues to us. Especially when we're fairly sure we understand what the ultimate decision will be, we focus on getting to that decision. Of course part of actually understanding someone is considering what they have to say. Even when you have high confidence in an outcome, if you want someone to feel understood, you do have to listen at a point where you can consider what they bring forward.
Frustration of Being Questioned
On the other side, it's frustrating to have your decisions questioned. Reviewing a decision takes time. Even if the TC agrees with a maintainer, asking that maintainer to sit through a long process can create frustrations as deep as any I discussed in the previous section.
So the process is doubly bad for maintainers. Someone can bring up an issue which requires precious time. Then if the TC decides against the maintainer, we have all the problems I discussed previously.
I acknowledge this. A good process must respect the maintainer's time. However, it must respect the community members who disagree with maintainers. Everyone who brings an issue to the TC is a developer. They have contributed significantly to our community and are part of our team. Yes, we need to protect the process against abuse. But in a very real sense if we aren't willing to consider an issue and we aren't willing to engage with someone, understand why they think the issue should be considered, and work until they understand why we made our decision, we are saying we do not respect them enough to take that time. We should expect that to drive people away.
I wonder if the solution here involves a two phase process. During the first phase we work with someone bringing an issue to us until we understand it. We either engage the maintainer at that point, spend the time to help the person bringing an issue to us understand why we are not engaging the maintainer, or have decided the issue is abusive of the processs/misdirected. For this to work maintainers would have to trust us enough to actually be willing to sit back and not spend a lot of their time.
Sam, It's Just Personalities
One criticism I've heard as I discuss this is that a lot of the negative feelings surround interpersonal conflict and are personality conflicts. Yes, personalities matter. Yes, we re still healing from the Systemd discussion.
However, as a community, I think we need to figure out how we respect the inevitable personality conflicts. I can think of one or two developers I'm still upset with years after an issue. It happens. Perhaps if I were a maintainer when one of these developers raised a concern with my packages, I could ask that someone else be a primary advocate for an issue. Similarly, if a developer wanted to address an issue with me as a maintainer but would prefer not to deal with me, perhaps we could figure out some way that we could see if someone else shared the concern.
Dropping a Package is Sometimes an Answer
My concerns were sparked by instances where a maintainer dropped a package rather than interact with the TC. Sometimes that can be a healthy step in a transition. At Debconf this year, Enrico Zini gave a talk on consent culture in Debian. One of the key points of his talk is that we can find over time that what we're being asked to do in Debian is no longer consistent with our boundaries. If it isn t helping us move forward if it isn t fun then it is likely time to stop.
In that sense, approaching disagreement can be a great time to take stock and ask whether we still enjoy maintaining a package. If we don t, then stepping aside and letting others take it on can be a great way that we and they can be happier. I don t really think that s what happened in these instances though. Based on comments made to me, this sounded more like a lack of faith in being treated well or in our ability as a committee.
Even so, Enrico s talk applies in a number of ways here. He suggests that the approach we should take when someone is done and steps away is to thank then. I couldn t agree more. From the depth of my heart I offer thanks: Thank you for taking care of yourself and stepping away when it is no longer fun. Thank you for all the effort you have put into these packages. I hope to work with you on great things in the future.
For many years now, I have been driving a diesel based VW Passat Estate. It
has served me very well and been as reliable as I might have hoped given how
awful I am with cars. Sadly Gunther was reaching the point where it was
going to cost more per year to maintain than the car was worth, and also I've
been being more and more irked by not having a car from the future.
I spent many months doing spreadsheets, trying to convince myself I could
somehow afford a Tesla of some variety. Sadly I never quite managed it. As
such I set my sights on the more viable BEVs such as the Nissan Leaf. For a
while, nothing I saw was something I wanted. I am quite unusual it seems, in
that I don't want a car which is a "Look at me, I'm driving an electric car"
fashion statement. I felt like I'd never get something which looked like a
normal car, but happened to be a BEV.
Then along came the Hyundai Ioniq. Hybrid, Plug-in Hybrid, and BEV all looking
basically the same, and not in-your-face-special. I began to covet.
Eventually I caved and arranged a test drive of an Ioniq plug-in hybrid because
the BEV was basically on 9 month lead. I enjoyed the drive and was instantly
very sad because I didn't want a plug-in hybrid, I wanted a BEV. Despondent,
I left the dealership and went home.
I went online and found a small number of second-hand Ioniq BEVs but as I
scrolled through the list, none seemed to be of the right trim level. Then,
just as I was ready to give up hope, I saw a new listing, no photo, of the
right thing. One snag, it was 200 miles away. No matter, I rang the place,
confirmed it was available, and agreed to sleep on the decision.
The following morning, I hadn't decided to not buy, so I called them up, put
down a deposit to hold the car until I could test drive it, and then began the
long and awkward process of working out how I would charge the car given I have
no off-street parking so I can't charge at home. (Yeah yeah, you'd think I'd
have checked that first, but no I'm just not that sensible). Over the week
I convinced myself I could do it, I ordered RFID cards for various schemes,
signed up with a number of services, and then, on Friday last week, I drove
down to a hotel near the dealership and had a fitful night's sleep.
I rocked up to the dealership exactly as they opened for business, shook the
hand of the very helpful salesman who had gone through the purchase process
with me over the phone during the week, and got to see the car. Instant want
coursed through me as I sat in it and decided "Yes, this somehow feels right".
I took the car for about a 45 minute test drive just to see how it felt
relative to the plug-in hybrid I'd driven the week before and it was like night
and day. The BEV felt so much better to drive. I was hooked. Back to the
dealership and we began the paperwork. Emptying Gunther of all of the bits
and bobs scattered throughout his nooks and crannies took a while and gave me a
chance to say goodbye to a car which, on reflection, had actually been a
pleasure to own, even when its expensive things went wrong, more than once.
But once I'd closed the Passat for the last time, and handed the keys over, it
was quite a bittersweet moment as the salesman drove off in what still felt
like my car, despite (by this point) it not being so.
Sitting in the Ioniq though, I headed off for the 200 mile journey back home.
With about 90% charge left after the test drive, I had two stops planned at
rapid chargers and I headed toward my first.
Unfortunately disaster struck, the rapid (50KW) charger refused to initialise,
and I ended up with my car on the slower (7KW) charger to get enough juice into
it to drive on to the next rapid charger enabled service station. When I got
the message that my maximum charge period (45m) had elapsed, I headed back to
the car to discover I couldn't persuade it to unlock from the car. Much hassle
later, and an AA man came and together we learned that it takes 2 to tango, one
to pull the emergency release in the boot, the other to then unplug the cable.
Armed with this knowledge, I headed on my way to a rapid charger I'd found on
the map which wasn't run by the same company. Vainly hoping that this would
work better, I plugged the car in, set the charger going, and headed into the
adjacent shop for a rest break. I went back to the car about 20 minutes later
to see the charger wasn't running. Horror of horrors. I imagined maybe some
nasty little oik had pressed 'stop' so I started the charger up again, and sat
in the car to read my book. After about 3 minutes, the charge stopped. Turns
out that charger was slightly iffy and couldn't cope with the charge current
and kept emergency-stopping as a result. The lovely lady I spoke to about it
directed me to a nearby (12 miles or so, easily done with the charge I had)
charger in the grounds of a gorgeous chateau hotel. That one worked perfectly
and I filled up. I drove on to my second planned stop and that charge went
perfectly too. In fact, every charge since has gone flawlessly. So perhaps my
baptism of failed charges has hardened me to the problems with owning a BEV.
I've spent the past few days trying different charge points around Manchester
enjoying my free charge capability, and trying different names for the car
before I finally settled on which is a reasonable Korean boy's name
(since the car is Korean I even got to set that as the bluetooth ID) and it's
roughly pronounced sock/gin which are two wonderful things in life.
I'm currently sat in a pub, eating a burger, enjoying myself while suckles
on the teat of "free" electricity to make up for the fact that I've developed a
non-trivial habit of leaving Audi drivers in the dust at traffic lights.
Further updates may happen as I play with Android Auto and other toys in an
attempt to eventually be able to ask the car to please "freeze my buttocks"
(a feature it has in the form of air-conditioned seats.)
Narabu is a new intraframe video codec. You probably want to read
Here s are some of the bugs against the Debian Policy Manual. In
particular, there really are quite a few patches needing seconds from
DDs.
Consensus has been reached and help is needed to write a patch:
Like
This post has it all. Flotillas of sailboats, peer-to-peer wikis, games,
and de-frogging. But, I need to start by talking about some tech you may not
have heard of yet...
No spoilers, for those who have yet to watch it...
Channel 4 have been broadcasting a new 10-part series called Electric Dreams,
based on some of the short fiction of Philip K Dick. The series was
commissioned after Channel 4 lost Black Mirror to Netflix, perhaps to try and
find something tonally similar. Electric Dreams is executive-produced by
Brian Cranston, who also stars in one of the episodes yet to broadcast.
I've read all of PKD's short fiction




Earlier this month I had the pleasure of attending the Web Engines Hackfest, hosted by Igalia at their offices in A Coru a, and also sponsored by my employer, 



With the development of
While the format is not 100% stable I might change some thing I consider it pretty settled. The output of tlmgr info --data json is a JSON array with JSON objects for each package requested (default is to list all).
Dear all,
This would be a longish blog post (as most of mine are) compiled over days but as there is so short a time and so much to share.
I had previously thought to share beautiful photographs of Ganesh mandals taking out the procession at time of
The firefox version I was using to test the site/wordpress-wp-admin was Mozilla Firefox 52.4.0 which AFAIK is a pretty recentish one and people using Debian stretch would probably be using the same version (firefox stable/LTS) rather than the more recent versions. I went to the link it linked
Often, when I mention how things work in the interactive theorem prover [Isabelle/HOL] (in the following just Isabelle