 So I'll hold it on for our first session today and we'll come as soon as possible. Hi everyone. So my name is Miroslav Mazel. I'm here to talk to you about Dobraca Nakua, which is a check bike to work campaign. But before I get to this campaign, I want to tell you a bit about the organization organizing it, which is Automat. This is a 20-year-old check non-profit organization that promotes efforts to improve the environment in cities around the Czech Republic. Besides this Dobraca Nakua initiative, they have several other projects. One of these is the Sustainable Urbanism Lab, which makes sure that cities' plans don't conflict with public interests and that they don't destroy public important public spaces. So this is more of a political effort than there's Generation U, which is more of an educational effort, where people from this organization visit primary and secondary schools and they have talks about sustainable transport. And then there's Zazitne Stojenak, which roughly translates to experience the city differently. And this is really about getting people to know their neighborhoods and livening up public spaces. This is organized locally. There's a day where people from the neighborhood organize workshops, concerts, theater shows, and more to really make sure that people know their environment and have a greater appreciation for their neighborhood. Now, as you probably noticed, two of these three projects are centered around modes of transportation. And really this is also one of the main focuses of this organization, and it's the focus of this challenge that I'm here to talk to you about today. So about this challenge, how does it work? So first off, the process is relatively simple. The first step, if you want to be an attendee, is to maybe ask your company if it wants to participate. It's usually companies that take part of this challenge. And even if your boss or superior says, no, we don't want to participate, you can still participate as an individual, so that's possible too. But if they say yes, then that creates an effort inside the company. You get more people maybe competing with you. And there's an initial fee to take part in this organization in this challenge. So it's better for you if your organization pays that fee for you, supports you in this challenge. For this sign-up fee, you get a welcome package with a t-shirt. And once you have that, and once the competition starts, you bike or walk or run to work. Basically you can use any non-motorized way of getting to work. If you don't use it, that's somewhat acceptable. You just have to track it. Every day you track your runs or walks or travel to work. And if you happen to take the car or public transport, you track it. It counts against you, but if you use ecological modes of transport most of the time, you're still able to basically win the challenge. And that's the last step. You win prizes. You can win prizes. You get entered into a draw. And then each city has different prizes that people can win from that city. Now this challenge has been happening for 13 years around various cities around the Czech Republic. There's typically now three challenges during the year. There's a 30-day one in May. There's a 14-day one in September. And there's a 7-day one in January. So showing that people that even in the winter you can still take your bike or run or walk to work. Why are we doing this? Well, it turns out that personal transportation accounts for around 15% of all greenhouse gas emissions. And this is an ecological effort to reduce that. That's one component of it. Some other components are really raising awareness about the possibility to travel to work in a sustainable way. And not just raise awareness, but also make it easier for people to choose these modes of transportation. So showing them that it can be done. Showing organizations, those tend to be involved too, that it can be done. People change their habits. Having organizations change perhaps the work environment so that it's easier for people to park their bike near work. And also to motivate cities to develop safe infrastructure so that people can use their bikes around the city more easily. Who participates in this contest? Well, it's the civil society. So generally people from the public. It's the private sector. So companies tend to be involved. As I said, it's usually companies that encourage this among their workers. And people generally ask their companies if they'd like to participate. And it's also municipalities. So it's up to cities to organize events as well as prizes for people in that city. And it's this marriage of multi-sector collaboration that really makes this challenge work. Because when you have collaboration across all of these sectors, then you can have much more impact. And address systemic problems because everyone here is involved. It's not just one sector trying to push the other sectors into making a change. If you look at what's been motivating people to get involved, this is according to a survey. One of the main motivators is really improving the environment, making sure that the environment is better. It's also finding community in the people who participate. It's improving their fitness. It's also nice to bike to work because you're not sedentary the whole day. Even if you work in an office, it's good to get outside a bit and get some exercise. It's about lowering emissions. And also it helps people because it's nice psychologically good to be outside for a bit, breathe clean air. So even the psychological impact is important for people. This makes challenge had 25,625 participants, more than 2,500 companies participating in 52 cities. And that's a significant in and of itself because all of these companies and all of these cities are at least showing some interest in making biking work throughout the city. These companies oftentimes make changes such as making sure that people have a place to shower after they get to work after biking or that there is a place to park their bike at the company. But it also has some other forms of impact. So there's an estimated just this May, 739 tons of CO2 saved alone. From our survey, it seems that 99% of people who take part in this challenge plan to continue at some capacity. I don't want to mistake that with a grain of salt, but it does show that we're showing people that it's possible to bike to work and that they are enjoying it and see the value of it. And this contest over the years has reached more than 130,000 people in the Czech Republic, which is a relatively sizable portion of the Czech populace. So this challenge has quite a bit of impact. The reason why I'm presenting it to you today is because I've been involved with a redesign that's coming to the system. So there's more gamification coming into the system where you record your travel to work. So that's coming up. And the reason why I thought it'd be good to show at this conference is because it's based around open source. So all of these systems, the back end, the front end, all of that's open source. You can find it here at this GitHub link. They're using the GPL for this system. And if you happen to be from another country, you're more than welcome to try to replicate this challenge in your own country. If you're from the Czech Republic and want to help, you can help develop either as a volunteer using the standard GitHub PR processes or part-time jobs are possible as well. Sometimes, you know, there's work that needs to be done and Automat can afford to pay. Sometimes you just need to be ready for a deaf project shows up. But either way, let us know about yourself and we'd be happy to collaborate. And this is how you can reach us. Dominika Lentarova is the project manager. So she's the main contact person. But you can, if you visit the website, you can also find contact links there. All right. I think we have a bit of time for questions. Yes. I don't know the definition of different problems, but how do you work with the government to improve that infrastructure? So the question was, in general, there can be a problem with a lack of bike lanes. And the question is how do we collaborate with local governments to make changes in this area? I would say that the factor here is that the cities are involved themselves. So this topic usually oftentimes isn't on the mind of cities by involving them. This at least brings the topic up to them and they see that it is something to think about to consider in future plans. That doesn't necessarily mean that every city that is involved will make huge changes and introduce bike lanes where there aren't any. But it does mean that they're thinking about more and there is more hope for changes going into the future. Also, I should mention that there is another factor aspect to this collaboration with cities because cities can use the data that's collected throughout this challenge. And they can use it to make better plans going into the future so they can see through the data where maybe they should focus on more, which places would be a good fit for better bike lanes. Yes? What kind of data are we collecting? Right, so the question is what kind of data we collect and if it's public. So right now there's data about how the number of kilometers traveled. There's also data about paths that people can choose to share, but there's different ways to record paths. One is you record the precise places where you've been, but you can also just record the kilometers. So it's up to people whether they choose to share their path or not. But this is also given to the cities, it's not public per se, but this information is provided to cities. After every challenge, there's a final summary of the challenge that basically showcases mass data related to the challenge. So how many kilometers have been traveled overall? How many people participated? So the question was whether we get companies competing with each other as well. Yes, we do have a competition amongst not just individuals, but also teams within a company. Also cities and also companies themselves, so people can choose where they rank. Yeah, they can see where they rank. And we're out of time, so thank you all for attending. And if you have any questions, feel free to contact us. Hello everyone, my name is Zauab, I work at Red Hat, and I'm going to talk about leadership. Okay, so it's a great thing to get into DevConf, but then I realize that I actually need to talk about leadership. So I went online, I googled it, providing leadership as an individual contributor. And the first page of the results was amazing. I had some really great articles there. It shows the top three for you. You can go ahead and check them out online. I really encourage you to read them because they had really great stuff. Like they talk about lead by example and how you should take on project management and widen your influence and great practices that you can do to develop your own leadership as an individual contributor. But I guess that's not what you came here for, right? I mean, if you're in this talk, maybe you're an individual contributor, you're definitely interested in leadership. And you're probably intelligent if you came here to see me. And I don't take for granted people spending time to see me talk. But if you're intelligent, you can probably Google it on your own and read the articles on your own. You don't need me for that. So I thought to myself, what can I give you? What is my added value? So let me take a day-to-day situation you probably all know. You get tagged to review something, to look into something in Slack and GitHub or anything. And you get tagged with a bunch of people. What do you do? Do you take it on yourself or maybe wait for one of the other guys to take it? We'll get back to that. I want to take you 22 years ago when I was young and handsome. I was an officer in the Israeli army. And in officers training, I remember we had this week, it was week number seven. They took us all out of the base to this place. And we had all these team-building activities and leadership activities. One of the activities was called self-improvement group where you sit around in a circle, the entire team, like 15 people sit around in a circle and you go one by one. And when it's your turn, everyone goes and gives you feedback. They tell you stuff, things to keep about your leadership, things to improve. You're a good listener, you're not assertive enough and stuff like that. So we went around everyone by their turn. And when it was my turn, people said some stuff. But no one had anything that I can improve. And that was really bombing for me. I really wanted to learn, I really wanted to find stuff to improve. And no one had anything like meaningful to tell me. So I went ahead outside of this activity and then this one guy from my team came and maybe he was shy to speak in front of everyone, I don't know. And then he came and he told me this sentence. He said, people see you as a leader. They wait for you to lead, but you just don't take it. And that sentence really changed my perspective about leadership. Leadership is not something that someone can assign to you. No one can tell you, okay, you're the leader and that makes you the leader. It doesn't work like that. And it's also not part of a role. It's not like if they make you manager or they make you team lead, you're all of a sudden the leader. And it's something that you have to take on yourself and develop on yourself. And what helps me to take on leadership is to always ask myself, what if there was no one else? So if we go back to that first slide where I showed you tagging of a lot of people, you want to ask yourself, okay, what if there's no one else? And then you're the one taking it. Let's look into a different situation. So let's say you're a leader, you're working with a bunch of teams on a project and it's a complex project with multiple teams involved and a lot of integration and stuff like that. And you know, things happen. It doesn't always go as planned. Maybe one team didn't deliver on time. Maybe one team had too many bugs. Maybe the integration didn't go as you expected. So the first thing we would do is ask ourselves, okay, who is responsible? But what you really mean is whose fault is this? And I want to talk about the effects of complaining. So complaining has great benefits. I mean, if you're complaining or blaming someone else, then you take the heat off of yourself and you can get off the hook one or two times. But eventually people don't like to hear other people complain. And another thing about complaining is that people have a wrong perception of complaining. So people think that this is the equation. Like if you don't have the result, but you can complain about it or you have good excuses or good reasons, that equals having the result. But life doesn't work like that. In life, if you don't deliver, your customers will leave. And they will leave even if you had the best reasons not to deliver. So what can you do? So you remember that question, who is responsible? There is always one answer to that. I'm responsible. Responsibility, same as leadership, can be assigned. No one can tell you you're the one responsible. You have to take it. And if I am 100% responsible, then I'm not looking at what happened up until now. I'm looking at what can be done from here on to advances. And what actions can I take? And who can I ask to assist me with those actions? So this talk is about individual contributors. And the key difference between an individual contributor and a manager in terms of leadership is the authority. So when you're a manager and you have people report to you, then you have the authority. You can make them or motivate them to do stuff because you control their salary, their advancement at work, promotion. And that's one way to motivate people that individual contributors don't have. So what do individual contributors have? What individual contributors can have is inspiration. You want to inspire the people around you to follow you, to take the actions. How do you do that? The way to do that, like one way to do that, is to ask yourself, what is my added value? Same way I did when I went into that presentation. I could have given you the links to Google to go with yourself. But then I asked myself, okay, what can I give you? What is my added value? And another thing to look at is who is my role model? Because all of us, we have someone that we look up to as a leader. Whether it's someone we work with or work with or used to be our manager. It's the person that we go to when we need help. When we want them to review our presentations or our work or anything. And I always ask myself, what would that person do? And I try to apply it on myself. So you're a leader now. And the next step for you is allowing new leaders to grow around you. That's another aspect of leadership. And let's take that first slide where I get tagged with another bunch of people. Let's say one of those people is David. So I can take doing the code review on myself. Or I can give David the opportunity to grow. And I can tell him, hey David, you mind taking a look at this? And I'll be there to mentor him and support him with whatever he needs. That allows other leaders to grow. Before I give you time to questions, I want to leave you with some questions. And those are questions that if you ask yourself can be the key to develop your own leadership. You want to ask yourself at every situation, what if there was no one else? What can be done from here on? What is my added value? And how can I help other leaders grow? That's all for me. I'll take questions now. Yes, please. So I'll repeat the question. The question was where do you draw the line? In the example I gave with offering David to take the review. Where do you draw the line between asking David specifically to do it, like mandating him? Or giving him the opportunity? Is that the question? So that's what I was talking about authority. If I was David's manager, I could have told him, go ahead. Do that. I don't know if that's the managerial approach I'd like to take as a manager. But I always like to give people the opportunity. I really see that as an opportunity and I would present it as an opportunity for him. Another way to present it as an opportunity is to walk with him hand by hand. So you mind taking a look at this. I'm going to be there reviewing it with you. If you have questions, I'm here to answer. And that presents it more like an opportunity than as a duty. Yes, please. So how do you avoid landing in the zone of leadership without authority? So that how do you prevent yourself from becoming a scapegoat? Because it's very nice in products that succeeded. But there are products that don't. And if the product was expensive enough and it failed, there would be someone who tries to blame someone. So what do you do so that you are not the one? I'll try to repeat the question because it was a long question. But in summary, the question was, how much time do we have? Two minutes. The question was, were you working a project that has a lot of teams involved? And there's a tendency to look for someone that's their fault who's a scapegoat. How do you avoid being the scapegoat? Or how do you protect yourself from being the scapegoat? You can't. I mean, if someone wants to pinpoint you, they will. But again, what you want to ask yourself is, why do I do from here? Do I whine about it? About them blaming me? Or do I look forward and take this as the opportunity to grow? As the opportunity to see how can I advance this project? Because you can be scapegoat once. They're going to put it all on you once. But if you're going to be whining about it, they're going to put it on you twice. But if you're going to say, okay, you know what? Okay, I'm taking this and I'm moving on. You're not going to be the victim again. Do we have time? Yeah, maybe. Short question. Anyone else? Okay. Thanks, everyone. I'm going to check the audio. You can start. Do you want to make your own production? Sure. I can just start then. Hi, everyone. My name is Patrick. I work for Red Hat as a software engineer for the community platform engineering team. And my colleagues, Lenka and David, were supposed to be here with me, to present with me, but unfortunately, they could not make it. So today I would like to talk to you about authorizing OpenShift hosted projects to community members in Fedora. And let's begin. So first, I would like to go over some background about how all of this came about. A couple of years ago, we had a thing called Community Shift, which was a community-facing OpenShift cluster for the community like run and deploy and test apps, experiment and learn on. And this cluster was retired back in 2020, I think, in a data center move. And then in Q3 of 2022, CPE was tasked with solving a couple of the blockers that were holding up the release of the replacement cluster. There were a couple of areas that we have had to solve. First one was self-service administration of projects with or no added work for the infra team, because we had a lot of tickets being opened regularly that were requesting access to the systems. Another one was that we needed a way to sync the Fedora account system and the cluster, and we needed this to happen automatically. And the last one is that the Fedora account system API uses Kerberos authentication, so we needed a kit. Okay, as a quick aside here, I would like to briefly describe what an Ansible operator is. So it is a Kubernetes native application that consists of two parts. First one is a small chunk of code that just handles the interface between OpenShift and the operator. And the second one is a container that receives events from that code and then can run Ansible playbooks as is required. These operators can then be managed by the operator framework, which is like an open source toolkit, and it can be managed in an effective and automated manner. So what advantages does creating your operators with Ansible offer? First off, it's easier to write as Ansible and operator SDK, the project that I mentioned, abstract away all of the difficult parts of writing an operator, such as having to know relatively low-level programming languages like GoLang or being familiar with Kubernetes internals. And you also have immediate access to any module that Ansible can run, including custom modules that you can write, which is what we also did as part of the initiative. The solution to the problem that I was describing earlier was to write an Ansible operator named CommunityShift Authorization, which connects to the Federal Account System API, retrieves all of the CommunityShift named Groups and the Group Membership, then connects to the OpenShift API and syncs it. You can configure how often it should reconcile, we went with 20 minutes. Second operator that I would like to talk about is Fast2Discourse, because once we had the CommunityShift Authorization operator done, we realized that this approach could be used for more than just one service. And Fast2Discourse syncs again from the Federal Account System, it syncs the Group Membership to Federal Discussion, which is a discourse instance that we have and kind of forums where you can talk to members of the Federal Community. Okay, so here is a little graphic of how it works. On the left, we have the Federal Account System, which is our single source of truth regarding users and Group Membership. And it allows us fine-grained access to various systems that we have in the Federal Community. Group sponsors can add and remove members here from their group, and what we liked was a mechanism to sync these changes to the various systems that we have, which is where the operator comes into play, it's the sync in the middle. So once we have the information in the Federal Account System, the operators retrieve it and sync it to Federal Discussion or CommunityShift groups respectively, as we are talking about two separate operators. This approach could also be used in the future for any other service, and I reckon we will do it again at some point. So on the last slide here, I have a little demo. So on the left, you can see the web UI of FAS, where project admins can add or remove users from their groups. And on the right, you can see we are interacting with the CommunityShift cluster and retrieving the groups. And in the give here, bottom left, I am being removed from and then re-added to the CommunityShift admins group. The operator then picks up the changes and syncs it to the cluster. And the users, once this is done, can then log in to OpenShift and have access to their project, at least in theory, as the cluster has not yet been fully re-released. So this was a lightning talk, so it was just a brief overview of what we did, but if anyone is interested in digging into the technical details of how we did it, here are a couple of useful links. The first two contain the source code of the actual operators. This is all from me. Thank you for your attention and have a pleasant rest of the day. All right. Hello, everybody. I'm going to be talking about containerizing the operating system and how to do that efficiently. So before that, a bit about me. Who am I? I am an intern on the CoreOS team, and I'm also pursuing a computer engineering at the University of Toronto and here are my contact details. So let's start with the agenda. So why are we even containerizing the OS? This is what I'm going to answer first. And then how do we containerize it? And the more important question, how do we do this efficiently and intelligently? And the third part is what did I achieve from this? So let's start with which operating system am I talking about? We're talking about CoreOS, which is a Linux distribution specialized for containerized workloads and how it came about to be was from the merger of two different projects, Container Linux and Project Atomic, which brought together two very important open source projects, Ignition and RPMOS tree, and they helped solve some of the most important requirements of being a container host, which where the operating system should be lightweight, it should be configurable, it should be up-to-date, immutable, and should work on many infrastructure. So by doing this, we came across several challenges. The first one was obviously configuring the operating system. Now, when you have already provisioned your operating system onto your infrastructure, you need to think about how do you make changes to this config files? That was the first problem. Second one was how do you handle adding the packages, RPM packages, or handling unpackaged data to the base operating system after the node has been provisioned? So these were the three challenges we had, and the solutions we initially had, I mean, the solution to these problems exist. And the first one was Ignition Reprovisioning, which means you write beauty in configs, you change whatever you need it to, and you basically reprovision the entire system. And obviously, this is slow and not the most efficient way to do things. And the second thing was using client-side package learning, aka RPMOS tree install, the package name. But now, what this meant is that each of the client nodes needed to basically run like a script which basically handled RPMOS tree install, and doing that might lead to problems, because what if one of the nodes gets into an unmanaged state and there comes a problem? You don't want to SSH into one of the nodes and try to fix things over there. And also, there's no one way of testing it, because the customer needs to ship out this new package, and they haven't tested that before, and if something fails, it becomes increasingly hard to manage that. But the solution we wanted now was what if we could do all of this on the customer side in just one single update, and this update not being delivered from the base operating system, but from the customers that needed it, right? And also, if there was a way to basically do server-side learning, which means the customer could basically, like, if they wanted to add a package, they could basically test this already on the base operating system and then deploy it. Basically, the layer part and the building part could be done as a single operation. And thus came our need for CoreOS layering, which means you could manage your entire operating system with the help of Dockerfiles. Any configuration you needed to do, if you want to add any package data and package data, you could basically ship out as an update to your container image. And this is the part when I showed up. Everything that I've told you till now is what I inherited from the team, and this is when I actually came as an intern on the team. And this is the problem that I tackled. How to containerize the operating system efficiently? Now we get to the question. But hold on to this thought again. Let's give us a refresher on how our container images actually stored, right? So they're stored using this thing called overlayFS, which is a union mount file system. And just to give a brief on this, it contains of two different layers. One is the image layers, which means they're also known as the lower directories, which are read-only, which means that they cannot be modified. And there are several of these, and there's only one container layer on the top of them, which is read and write, and which is FML storage, right? Whatever changes you make to your container is only made to the container layer. And as soon as you destroy that container, all the FML storage gets destroyed, right? And what you see on the top is the overlay, the changes that you made. Now, from this, we can infer that if we could somehow divide the operating system files into these layers, we could efficiently containerize the operating system. So there are several ways to divide the operating system files. The first of them is to do it arbitrarily, like put random files into one, put random files into another. And the second one could be, like, slash boot, slash var, slash rock, put it into one of those layers. But the one that I chose was using, by segmenting the files to, like, the RPMs. Like, if all the files belong to one RPM, it would form a single block, right? And why did I do this? Because RPMs form the basic building block of an operating system. And if one of these, like, bash files or one of these binary files within them change, the entire RPM packet changes. And, okay, so now we tackle the first part of the problem. But how do we do this efficiently? So what does efficient mean? Imagine you have an operating system with just two very simple packages, glipc and openSSL. And you need to containerize this. So let's say you have two different layers on, like, Fedora CoreOS, two different layers of the container image. And, like, arbitrarily, you put both of these packages in the first layer, and you keep the second layer empty. Another part of this is that all of these layers are cached on the client side, right? But when you get an update, what happens is if glipc updates, the entire layer needs to be updated because the shaw of the entire layer changed, right? And openSSL will be needed to download again. Which is not efficient. Could we do this in a better way? Obviously we can. We can split this into two different layers, and now if glipc updates, only glipc gets re-downed, right? So, essentially, we have created a design requirement for ourselves, which is minimizing layer deltas across upgrades. The other design requirements exist also, which is, like, the function needs to be deterministic, right? The algorithm needs to be deterministic. The third one is that it needs to be a two-way function. That means you could reversibly go from an operating system to a container image and back to that exact same version. And this is the most important part. When I was talking about the overlay FS, how it works is using kernel mounts, right? And there is a hard limit, or you could almost say it's a bug from the kernel that there is a limit on the amount of kernel mounts that you can do, which means there's a limit on the number of containers layers that you can put, and which is right now 128. And for people who are interested in, like, academia, this could be boiled down to multi-objective bin packing problems, since there's a limited amount of bins and you've got to put a lot of these packages in it. So let's start with the naive approach in our solution quest. Let's put each RPM into one layer, and the next RPM to the next layer, and keep doing this. But obviously, this doesn't work, right? Because we have greater than 400 RPMs in the operating system, especially in Fedora Core OS, and there's only 128 layers. This doesn't work out. So let's try a better approach. Use some data. Let's use size, for example. You sort these RPM by size, so the biggest RPMs never get redownloaded again and again. So when you do that, you put each... Like, you sort them by size, and you put the biggest in each layer, and the last layer will contain all the little small packages. But when we did this, when I tried this approach, the last layer actually becomes really, really big. And if a single package, like, worth about one MB changes, the entire, like, 200 MB worth of layer needs to be redownloaded. Again, this is not the most efficient manner to do this. So why not let's go all the way in? Let's use all the data. Let's not even infer. Let's give all the specifications about what the RPM is made up of and give it deep learning algorithms, right? Why not? And it would really work well because we could define our last function as the layer delta, and this would work really well. But the problem with this one is it's not deterministic. It is slow and unreliable, and you don't want your, like, package manager every single time you do a build, right? That's not what you want from an operating system. So, hence, I came up with this approach where I made an observation that if you have a layer which has two packages and that one of those packages are operating at a higher frequency than the other, then these two packages should not be kept together because one of them would keep updating constantly, another one would just stay there and keep getting redownloaded every single time. That's not efficient, right? Like, just separate them out, right? So, I was talking about what is high frequency package, what is low frequency package, but how do you essentially classify them? The way we can classify them is using simple statistics, mean and standard deviation. If a package frequency falls below three standard deviations away from the mean, you can classify it as a low frequency and if it falls above three standard deviations, like, above from the mean, then it classifies as a high frequency. There are much more subtleties to this approach, but this is a more boiled down diagram of what I did. Now, what we can do, once we have developed those high frequency, high size, low frequency, low size, and all of those matrix, what we see when I do a scatter plot is these. And you can see they form these natural clusters, right? And these natural clusters can be seen at high frequency, low size, and all of them, right? And there's a lot of them pushed into this lower frequency, low size, scatter funds. So what we can do, since we have partitioned away high frequency from the low frequency, high size from the low size, what we can do is from each of these partitions take a few packages and put them into a layer. Now, what we have essentially done is that we have separated away high frequency from the low frequency. So from each, if you do this for each partition and sort them by frequency, then what we can assure is that these two frequencies never get really mixed, right? But if you keep doing that for each layer, what can happen is that it might go beyond the limit, right? It might go beyond the 128th actual limit. And then what we can do is just merge some of these layers if they are in the same partition. That way we still avoid mixing these partitions together. And the other problem that I came up with is if you keep doing this for every single build, it'll become highly sensitive to the changes of the RPM, right? So instead of computing this algorithm every single major build, what if we only did it in Y and Z streams, right? Because, sorry, if we only did this in the X stream, which means in the major build. And in Y and Z, just take the packet structure of the major build. And this way we ensure to, like, recompute this algorithm every single time and change the packing structure, which makes it, like, slow, right? So to summarize the approach, you first split the operating system files into different RPMs, like all of these files owned by a single RPM into one of these packages, right? And obviously there are files that belong to none and they go into one of the other packages. And you basically divide the operating system files like these. Then you use data to basically, you use data to basically segment these RPM packages into these partitions. And once you have segmented them, you can put them into layers, right? Simple approach. So let's talk about the results now. So the results were actually good because we found there was a 30% reduction in the redundant data being downloaded across upgrades, like, as compared to the previous data approach where we only use size. Here we use size and frequency. So we used more data and we helped optimize the way it was packaging. And it also fulfills other requirements. It's deterministic since we're not using any machine learning algorithm. It's a two-way function. We can reversely go up front and back. And we also adhere to the number of layers, the maximum number of layers, which is 128. And now I want to talk about what's next. So I started with the problem of bin packing, right? Because there was a limited amount of bins. But there's this new thing called Compose FS, which is like an extension of overlay FS, which prevents, like, more than... which prevents, like, a higher number of kernel amounts being actually being present. So instead of each layer having a single kernel amount, it, like, basically merges them together and which is a better approach. And you wouldn't need to do all of these fancy things just to get across the kernel bug, right? So it also has other, like, optimizations done to provide file system verification. And yeah, if you want to get involved, there are some of links that you guys can look at. And yes, thank you. Does anybody have any questions? Yeah, good question, because... Sorry? So the question was, how many layers are we actually shipping right now, right? So obviously, since this is a feature that allows the customer to efficiently, like, use their operating system as a container image and derive some layers from it, we don't want to occupy all the 128 different layers, right? Because you still want to keep the leeway for the customers to basically add their own packages, add their own customizations, right? So right now we are doing with 64 layers, like, basically half of the entire limit. So the customer still has the rest of the 50% of the, like, container layers left to basically put in their customizations. Yep. Yes, go ahead. Well, I tried this. Like, I tried different... So basically the question is, if you have lower layers in a container image, it performs better. So I saw some, like, Reddit articles mentioning that, yes, it does affect the performance. But when I actually tried doing this, I didn't see much difference honestly because these layers are cached on the client side, right? So once it's cached, you don't really need to, like, do anything on it. Any time it gets updated, it will just longer pull that delta from the container registry and do it. So as far as, to my knowledge, it did not affect. We are out of time, so I think we can talk about this after. Thank you. So hi, everybody. I'm Sahana Prasad. I work for the crypto team at Red Hat. I have helped co-maintain OpenSSL for about two years, both in Fedora and in Drell. My topic for today is migration of OpenSSL from disk kit to source kit in Fedora. With the idea that downstream package maintenance could be a bit more easier. So we'll talk about what is disk kit, what are the shortcomings of disk kit, how do we address the shortcomings of disk kit using source kit, a tool called packet that would help us create a source kit repository. We'll define a workflow for development in source kit and we'll do a short demo at the end. So what is downstream package maintenance? While upstream open source communities create original source code, downstream is an entity that consumes this code, packages it and distributes it into various Linux distributions. So what does a downstream maintainer do? A downstream maintainer packages and distributes it. This is the responsibility into Fedora, Drell and CentOS. Downstream maintainer also adds downstream patches that could be feature requests from customers, security bugs, critical vulnerabilities and so on as downstream patches on top of source tab balls. Where are all these packages stored? These packages to be maintained are stored in a distribution git repository called disk kit. Disk kit is designed originally to hold RPM sources. So for every package, the contents of disk kits are the following. There are downstream patches. There is a source file that points to the upstream tab ball and there's a spec file that acts as a rule book to govern how package maintaining should happen. It's important to note here that disk git does not track the upstream source git history. It only tracks the files that we spoke about now. We talk about open SSL in general. We have about 49 patches that we maintain downstream. So every time we did a new rebase to a newer release of upstream, we felt that a git rebase could have done a better job than manually changing multiple patches. And reviewing patches is also not a lot of fun, especially when you submit patches to a patch, you need to have the entire source code open to know the context and stuff like that. And most of our fixes in Fedora or in REL are direct cherry picks from the upstream source. But this git does not have room to accommodate for cherry picking. And in general, to create multiple patches for different releases across different distributions could really become cumbersome. Just the general idea is that code should not move around. There should be a tool to help us do this for us. So then we come to source git. I asked chat GPT, could we address these concerns? And can you define what a source git for me? And it said, sorry, unrecognized until 2021. I haven't been trained to answer this question. But really, source git is gaining a lot of importance over the few years. Packages like Kernel, Python, SystemD, and other packages have been using open source git for a while now. So what is source git? Source git, on the other hand, tracks upstream source history. You can consider it as equivalent to diskit, except that instead of source star balls, we directly work with upstream source files. And instead of downstream patches, you apply them as git commits on top of your upstream source code. So it maintains upstream git history. It could be treated as an add-on to diskit in day-to-day use for package maintenance. And to see how a source git repository works, each package can have its own rules. And here we're looking at a standard tool we could use to create one for us. So packet to our rescue, packet is an open source tool that helps us to easily configure a source git repository just with a few commands. So if you look at the source git init command, all you need to have prior to this is a fork or a clone of openSSL package from your Fedora diskit and directly have the source from openSSL upstream source repository. And it creates certain directories first called the .distro directory, which will have all the files that were already in your diskit except the patches because we don't work with patches in source git. Then you have a spec file that is tracked here and a source git yaml file which has all the files that are to be copied to diskit. So we can also sync between source git and diskit. If you run this command, then whatever change you make on your source git repository directly reflects on the diskit repository. So now with the previous command we created a source git repository. On top of that you can add code, you can add a commit or you can cherry pick a commit. And after that you run this sync command and directly you get patches in your corresponding diskit and it's updated in the spec file. So to generally define a workflow of how we could use this in downstream maintenance, first you need to check out, you need to find out what is your latest release of the software you want in your source git repository, and create a source git repo using packet. And check if all the downstream patches were correctly applied as commits and there were no merge conflicts. And since in Fedora we work with many releases like Rohide, F38, F37 and so on, you need similar branches also in your source git repository to track the same thing and to be in sync. So check out a branch in source git, make your changes, commit your changes and push this and create a pull request and configure packet to create one automatically. You could do this as well. And once you review a pull request in diskit, you can merge it and your done. The question for rebasing to newer upstream releases, there are slight modifications for the same. You'll have your Rohide branch, treat that as a, add a tag to this Rohide branch called 3.0.8 because now you have a new Rohide which will track your new upstream release. And then cherry pick all of the commits that existed on your previous Rohide 3.0.8 version. Now you will face with a lot of changes. You will have to manually fix all the merge conflicts because you're rebasing to a newer version. You would have done the same using patches too. So fix that here. And then if you run an update command, you'll see the patches on diskit but just be careful to use this upstream ref tag to get history is tracked from the latest version. In our case, the latest version we want to put in Fedora is 3.1.1. Now let's look at a demo. So on the right hand side, I have a clone from Fedora diskit. Right side acts as the diskit. Left is the source kit. Open SSL I have Fedora. It's 3.0.8 like I mentioned. I'm opening the spec file and I'm seeing what's the last patch added. The numbers are not contiguous here. Now I move to the source kit part. Here I've only checked out the upstream sources from OpenSSL. I'll create a new branch Rohide here with the tag 3.0.8. Now I want to create a source kit repo. So I run this init command. So to this init command, you need to provide the tag and two repositories. One is your source kit and one is your diskit. Bear with me. This download part takes a few seconds. So at this step, we'd be expecting that all the downstream patches we have, we saw there were about 40, but named as 100. All of them just being rebased as commits on my latest source. So if you see the logs, it's a bit fast, but all the patches being converted. You can see the last line here, the rebase patches from diskitmaster. So if I go back to source OpenSSL now, this is a source kit repository. So I should be seeing the .distro repo here. So look at the OpenSSL file now. And here I see that no patches were there at all. You don't see any patches anymore. They all applied nicely as commits. So now I'll try to do a sync between two, source kit and diskit. I was in the wrong directory. I'm going to rerun it here. So here it says OpenSSL is up to date with this. So basically my Fedora and source kit repo are in sync. That's expected because I was on 3.0.8 and it did not make any changes. On the right, I don't want this built. So I'm just going to make a clean repo of that. Now let's actually make some change. Just choosing a random file here and trying to make a change. I'm going to activate the legacy section and also make a change to the spec file. I'm going to add these changes and make a commit of this. So this is the test commit I made. And below you'll see all the other commits from RPN build, which were all patches to commits conversion. So now I'll come back and run the source kit sync update command. And our goal now is that this commit should get applied as a patch directly on diskit. So let's see if that happened. I'm going to come back to diskit here. Check the git status. You'll see that 0042 test.patch was created and this is the new patch file. I'll look at the spec file to see if the version was changed. We jumped it up to 3. So the patch is present. It got appended directly after 101 and the version got changed to 3 as well. So yeah, that's it. So we created a source kit repo and converted from source kit repo to diskit and having a patch. At this point, you'll only create a pull request in diskit and build your package. And that's it. So this was under four minutes we did this. So we could try it for different packages too in Fedora. We want to see how it works with OpenSSL for a few months and adopt the same workflow for rel and CentOS. Do we have any questions? So the question was diskit will remain as it is and source kit will be used for day-to-day maintenance by developers and eventually would you move from each other? Yes, that's right. Diskit will remain because there's a lot of tooling around diskit. Like if you see the Fedora update system or Koji builds, everything is defined around diskit. So we'll keep it. And for package maintenance for developers day-to-day activity we will use source kit because it's easier to work with this. And you just create a pull request when you need to and you can also have packet automate the process of creating this pull request for you. So when you do some change in source kit it's directly related. You can see it directly in diskit. So there's not a lot of effort to move between the two. So the question was if you have multiple changes will you apply them at once in source kit or would you do that periodically, right? So I will have, I will make all the changes whenever I have a newer release in Fedora. Yes, you're welcome. The question was what happens when you do a rebase to a newer release? How do you work with branches? Do you keep the name intact? So what we want to follow is you, whatever was existing as the version, I'll just take this example to make it clear, 3.0.8. So earlier it was just raw hide. When I want to rebase to another version I'll rename this raw hide to add this suffix with this tag 3.0.8 so it becomes a different version. And to this version I'll make that as a protected branch and the latest version I want to rebase to I'll create that as raw hide. So that will be 3.1.1. So that will be the head. Does that answer your question? Are there any other questions? You mean source kit? The question was if source kit unpacks the tar ball and updates commit. Yes, that's what it does. It applies all the patches as a simple git apply. But it preserves the upstream history, right? So it applies easily. Okay, we're out of time. Thank you very much for being here. Hi, everyone. Shwetha here. XSSME, X Red Hatta. Right now a student studying NLP, Artificial Intelligence from UK's University of Sheffield. And I was invited to give a short presentation. That's my area of specialization. I'm doing my dissertation on that. So let's start with NLP. NLP is all the hype these days with chat GPT and all. All of us must have used it at some point or the other. I use it often for my assignments. So let's move forward. This session we will be covering introduction to NLP, what NLP is all about, why NLP, what's the significance in like software and what's the significance in open source. Then we have the hyped about the market topic, chat GPT. Why exactly chat GPT? I'm not all for chat GPT, so I will be displaying the cons of chat GPT over here instead of the pros, because all of us know the pros we have been using it. And then I will be showcasing some users of NLP in the industry, but all use cases we can have. Since this is a very short session, I won't be able to showcase any demos, but I do have GitHub links for the code that I have already developed for a few projects of mine working on. And in your free time, please feel free to take a look at that code and check out what exactly is NLP all about. So before diving into NLP, let me give you the basics of machine learning, because NLP uses machine learning extensively. So machine learning is all about having your systems make decisions for you without explicitly programming it. That's basically a main definition for it. And we have two categories, supervised and unsupervised. So Supervise is like when we use it with label data, we have index data that we use it with in the model, and there is unsupervised where there is no label for the data. That's when we call it unsupervised learning. So when it comes to NLP, NLP is the field where we have systems, computer systems understand human language, understand speech, human speech, create human speech, create language, and then analyze a huge amount of given text and make some sense of it. Get the context of what exactly is being said there and then try to process it and give us outputs, whatever the context is. So NLP is a very, very, very vast field, and the only four things that we would be concentrating on in this session for which are the major areas where it has been focused upon, the research has been focused upon. So those four things are, the first one is language understanding. All of us must have used it, Siri, Alexa, voice assistants. Those are the devices that actually interpret your human language and answer you accordingly or provide your outputs accordingly. Then we have text analysis and information retrieval. So for this, this actually is part of sentiment analysis, and all of us use Netflix, right? Netflix, so the recommendations that we have on Netflix, that is based upon sentiment analysis algorithm, and that's how the more data you give it, the more recommendation, the more plus signs, the thumbs up signs you give it, for the content you are watching, the better it gets with the prediction. So that's how the sentiment analysis part works for Netflix. And then we have natural language generation. This is like chat GPT, all the chatbots, all the virtual assistants that we might have seen on any, even on bank websites when you go and ask them what is the amount that I spent this month and that chatbot will showcase to you that yeah this is the amount that this current month we have been, you know, expending or what exactly we have been doing with our account statements and stuff, it will showcase you all the details. So that is natural language generation because we call it natural language generation because it not only interprets what you are saying, but it also gives you an output in a human understandable way. So it's like a human language thing. That's why it's called natural language generation. Humans put the input in a human language form and then you can understand the human language in the same output. And future innovations, I would be talking about what all social implications like whatever social contributions NLP has had and how we are implementing it for social causes. So those are like the dissertation topics that I'm working on that will be covered in the last slide. So why is NLP automation significant? Because it can help you understand human language. It helps you bridge the gap between human language, human speech and our automation processes and our machines. So that way it actually helps you beautify, I would say, customer experiences. It helps you bridge the gap between customers and humans. And then it helps you make data-driven decisions like if you have a huge amount of data, you give it to an NLP model. It will make some sense of it and give you an output like this is the prediction for this given output that way. So industry, it actually helps you realize even from feedbacks, even from huge amount of texts that this is what the customer is actually trying to ask or this is what an open source developer is actually trying to achieve by doing this, by doing this documentation or writing this amount of data or like a text saying that this is what this code does. So it will be able to make sense of it. The examples now, so this comes from my experience of working as a subject matter expert and also open source developer. So please take whatever resonates with you over here. So the first one is machine translation. Machine translation is like, supposedly when we were working on cases and there was a case from some region, let's say China or Korea, and we don't understand the language, we would have to wait for the other region to come and then the engineers to take up the case because there's always sensitive data on the cases. We cannot just put it on Google Translator. That's not how it works. You can't do that. So that's why we would have to wait for the other region to come up. So in that way, we could have an API of our own. Red Hat could have an API of their own, an open source API maybe. That would help us analyze these things and we wouldn't have to wait for another human to come up and work on the cases. And there is also for open source, I would say localization of software. Let's say there is a user interface. Usually they do have it for some very good traffic websites when it comes to train bookings, flight bookings. They do have it, but we should have it for more websites because English is the commonly used language, but it should not be a barrier anyway. That's why if there is like a website that has, you know, a flight booking thing and then somebody is trying to work on it and they can't, you know, analyze the buttons or can't understand what exactly is happening there. So in those cases, there should be like an NLP API. We could develop one. It's easy. It takes effort, but then it would be like a long-term investment. I would say that. Yeah. That would help you like go through a lot of interfaces, converting the language in just a gif. Then we have knowledge-based automation. We do have like our KCS. All of us must have used it at some point of time. So for KCS, what we do is like we have a generalized search. We do a Google search as well for our KCS articles. Instead of that, we could have like for each product company could have their own KCS base where you make the search. It should not be a generalized thing. You just use a few words, key words, and then the NLP algorithm that we have developed, the NLP model that we have developed, that would give you the predictions of what exactly those articles should be that you are looking for. Instead of, you know, going to Google and doing the all generalized search, it would be faster. It would be more efficient. Then we have social media monitoring. This means trends like, let's say, there was a lot 4G trend that happened, a lot 4G vulnerability that happened a few years back, and we were flabbergasted with a lot of cases over there. And then each customer was asking the same question of how exactly can we resolve it? How exactly can we, you know, how exactly our product is being impacted by this? So for those things, if we, you know, have those social media trends with us, we would be able to allocate more resources accordingly and take steps whatever are like required at that point of time. Then we have virtual assistants. This could help us like for developers when we are doing open source contributions. If it's a new GitHub, you know, code, then it becomes really difficult for you to debug instantly and understand which classes are being used in this code. So for that, we could have virtual assistants guiding you to, you know, go through the module or find the module exactly where the package, the module, wherever the code could be. So it's not, it won't be a 100% accuracy thing because NLP doesn't provide 100% accuracy. It's around 80%, 70% depends on the model, but that way we would be able to analyze the model. Then we have descriptive analytics and automatic insights. I'll go through them really fast. So descriptive analytics we could have like, we have heard about Sonar, code quality tool. So those are like rule-based things, static rule-based things. So they do not have any dynamic things going on in there. It's just like a set of rules that have been written that analyzes your code. At times it's not, I would say not at times, I would say 50% of the time it does make a mistake in indicating that your code is correct or wrong. Sometimes those APIs are necessary and it indicates, no, this should not have been here. So that way we could have dynamic programming using NLP, developing a code-based, quality-based tool that will help us analyze our code better. And automatic insights, it's again like feedback analysis and rating analysis, whatever is given on cases or maybe on releases, what exactly the customer is expecting or maybe the open source people are talking about, what should be the newer trend or what should be a newer feature that should be added, those things we could take into account. Now moving on to GPT. So GPT is like generative pre-trained transformer. I know it's like, it's a huge topic and it's very difficult to explain it. But transformers are something that are, you know, better than neural network. If you have heard about neural network, transformers are stuck ahead and it is based on sequence-to-sequence modeling. It takes larger contexts into account. That's all I can explain right now about it because it's really, really huge. And the cons that I have found while working on GPT is there is no understanding whatsoever. The model never understands what I'm trying to say. It doesn't get the context most of the times. Second, if you put like a question, different phrase, it won't be able to make sense of it. If you like even use two or the inner different sequence, it won't be able to understand it or give you an answer accordingly. You have to be grammatically correct to get an answer out of it. Then you have bias. So if as a user, I am adding something to the system, the system learns, right? Every time you give an input to it, you type something inside it, it learns from that input. So if I have bias as a user, if I am biased to a certain political, let's say agenda and I'm adding that to the system, then it will give me output with bias. And every time you access the system again, you will keep on seeing bias because that's how the generative model works. So for each user, it's different. But if you as a user are trying it again and again, you will be able to see that bias. You could try it. You will be able to see it instantly. And then we have no real-time knowledge. Of course, it doesn't have any real-time knowledge. It's not a human being. And there is no reason or explanation. That's something that we have been working on in NLP research areas because reasoning and explanation are really, really important at times because if you are giving an answer to someone and you cannot justify why that answer is that way, it doesn't make sense. So that's a very vast area of research in NLP. And then misinformation and inaccurate responses. Any of you have ever encountered any inaccurate response? So for me, any mathematical question you input, any mathematical question, I am a student right now. I'm working on multiple assignments. It always gives me an incorrect answer. Always. It's not like even 80%, 70%, it's 100% of the time. So I would suggest never use it for mathematical equations. Don't do that because it's still not developed for that kind of inputs. Ethical considerations, whatever we are adding to it, it's getting uploaded to the cloud. It's getting uploaded to the open AI cloud over there and it has all the data that we are adding to it. So of course it's like an ethical consideration because we are adding sensitive information at time. And then it becomes very, very, very difficult to understand where that information came from and, yeah, hackers can use it if they have access to the cloud. Okay, now the last part of the presentation, this is like the dissertations that I am working on. The social cost things from NLP. So there are two things that I am working on. The first one is EDoS, EOSD, whatever you call it, explainable online sexism detection. Sexism has become very, very, very prominent on Twitter and Facebook and all those platforms. So we do work on, I have been working on that and we try to identify like, from a given text, we try to identify whether there is sexism or not. What kind of sexism is there? Who is accountable for that sexism? Those kinds of things we try to find using our research, using our model. And the second one is AI judge. This is a very, I would say, like, there's like a 50-50 class of it that people would accept it. There are a lot of people who are against it because they think having something like an AI judge is a social implication that people would start losing jobs because if you have an AI judge, what's the point of having a human judge? And why would there be lawyers at all? What would be the case? So AI judge also is like a very interesting research area that we are working on currently. So what we do in these things is like, we have something called trained validation and test. It's like for all ML algorithms. So you have, if you have like 100 test cases, 100 cases that are given to you, you use 80 as training, 10 as validation, 10 as test. And then when you have real-time situations, you give those situations to your model and then it will give you a prediction. That's how it works for AI judge or be it for adults, the sexism part. So that's the research area that we are working on currently. I will be adding those GitHub links on the slides if any of you want to take a look at the code. It has sentiment analysis. It has an LP used pretty extensively and bias and all those things. So yeah, you could take a look at it. We have worked on Bert, Roberta, and what's the other one? Yeah, the other forms of Bert itself because Bert is like the best one right now in an LP. So those are the algorithms that we are currently using. So that's it guys. Thank you. Sorry for the delay. Sorry. Any questions? Please feel free to reach out to me over my email. Thank you for your laptop. I am, but this describes my general job. I don't know dude. All right, thank you so much Martin. Thank you folks so much for coming to this session today. It really means a lot to me that you would give me some time and I'm really excited to talk to you. My name is Anna Marie Syed. I'm an engineering manager. I'll tell you a fact about my last name. It actually means leader in Arabic, but the two most common mispronunciations mean fisherman and happy. So it's cool. You can call me however you think that you should pronounce that set of letters. But officially it's Syed, which kind of rhymes with head, I guess. Yeah, and so we're going to do a presentation on something that I have a lot of experience failing at. And that's resolving conflicts. All right. So let me know. You know if you think, oh, she's going too fast. She's going too slow. This is supposed to be a workshop. And so I would love it if you feel safe enough to talk. But if you don't, that's fine. Not everyone. Ah, hi. All right. So in case you're not sure what this session is about, I used a bunch of pictures of people playing rugby because gosh, there's so much conflict in rugby. I played college rugby. And I think that I'm too old now. We're here to talk about how to navigate conflicts that we face on open source teams. And the way that we're going to do that is we're going to establish a taxonomy of different kinds of conflicts. And then we're going to look at different solutions or different strategies for solving them. Kind of trying to make a table for you. So anytime you face a conflict, I'm going to give them a minute because I get all distracted. My friend, Petter, is going to be the session chair here because we're missing someone. Petter is the kindest, best tour guide. If you don't know something about Bruno, this guy here knows all of it. So thank you, Petter, and thank you, Martin. And it's your new faces and familiar faces. I'm really so, so happy. All right. So we're going to try to establish a taxonomy of different conflict types. And you might as well submit a patch. Come up with your own taxonomy. I'm going to tell you the one that I think works best for me with my conflicts with open source communities and I hope some of it will be useful for you. So what we're going to likely do here, I'm kind of discombobulated trying to find something to time myself on. I'm going to try to do taxonomy for 20 minutes, strategies for 20 minutes, and then we can do a practicum where you try to sort through some conflicts on your own or with me. But really right now, live. I wanted to talk about psychological safety explicitly. And I just, I want you to know that we have different styles for how we feel comfortable participating. This is a group of, I don't know how many you are. Let's say there's maybe 25 or 30 folks here. Not everybody is going to want to talk. That's fine. I know your brains are still working. You don't have to prove it by talking. But if you do want to talk, I can make you some promises. And the first one is that I will listen to you. And I will do my best to make sure that everybody else listens to you. And if we have an unsafe environment where someone isn't listening or is being rude, then we'll address it before we move on, okay? Anyway, thanks for coming. All right. The reason that I think we should have a taxonomy or like a collection of types of conflicts is because I think that the strategy you decide to use to resolve them will change depending on what kind of conflict it is. So, you know, with an open source project where you're volunteering, you are deeply invested, your investment can lead you to have a strong emotional attachment. So some conflict comes up and it can feel terrible. It can feel overwhelming. The first conflict I'm going to tell you about, I cried my head off. And if I had kind of known, okay, it's this type. These are the ways I can probably solve it. It would have been healthier for me in the short term. So the main types that we're going to talk about today, the first is interpersonal. That's, you know, you and somebody else, you don't like each other. You bug each other. That's interpersonal conflict. Value-based conflict, that's where you have a set of values. Someone else has a set of values and you're trying to navigate a problem in common, but your values and their values are not compatible. It happens a lot in open source. Issue or data conflict, that's where you've got a task that you're trying to work on. Everybody understands the task, but you have different ideas, conflicting ideas about how you're going to resolve it. That's issue or data conflict. Organizational conflict. So this is you versus the man sometimes. This is where it's not between two people. It's you and an entity, or you and a rule, or you and an organizational standard. And then the last type that we're going to talk about today is I think maybe the most common where it's not just this is purely interpersonal conflict or purely value-based conflict. It's a conflict that has different components in it. And so addressing it completely, you'll need to know different strategies and put them together. So I'm going to go first. I think a good policy is don't ask your audience to do something that you're not willing to do yourself. So I'm going to do my exercise here, which says think of a conflict you are experiencing. What type is it? And I'm going to give you an example from my personal life. Most of the examples in here are from when I was a young woman working on open source about 25 years ago. I've tried to pick really old open source conflicts so that if we have investment in them, our feelings have quieted down a little bit and it's easy to talk. But a current one I'm having right now, I'm renting a house where I live in Detroit. The piping, that's the piping. The pipes are a disaster. From April 17th until June 7th, I had no hot water and I have five kids. So my house is a disaster and I'm trying to rent a new house. The tiny little school district I'm in has this crazy, frackle shape of a boundary and so I'm having a hard time finding a house I can rent from me and my five kids in that school district. I am saying, kiddos, I love you very much. I'm going to be your consistency. We're switching schools. They are saying, mama, from Dubai to America. You have moved. This is a conflict that I have in my life right now and we'll talk about it because some of the different strategies here, not all of them are. So what do you think? Am I having an interpersonal conflict with my kids? Were they bugging me? I love them. I mean, you can love people who bug you. That's true. But it's not an interpersonal conflict. Am I having a value-based conflict? Yeah, yeah. I value not spending my whole paycheck. They value staying with their friends. What will we do? Could also be an issue conflict to move houses and we don't understand how to cooperate. But it's not organizational. It's not like us versus the man here. The organizational part of this conflict, it's me versus the school district. I said, hey, Buds, how about if I move real close and I drive the kids? They said, no way. That's what's going on with my conflict. Does anybody have one that you want to tell us about? Stream versus product. Oh. Beautiful. That's a classic open source conflict. Yeah, yeah, yeah. Thank you, Tanya. Anybody else want to tell us about one? I would say anything you say will not leave the room. But I didn't know they were streaming this talk. So in reality, anything you say may go anywhere in the world or to Mars. Thanks, Tanya. Yes, yeah. Okay. So I didn't, did you say your name? Would you say your name? Nice to meet you, Stefano. So I remembered that Martin told me repeat questions, so I'm going to repeat your question. Stefano is asking about if you have a bias-based conflict. Where do you put that? Stefano, you're like teeing me up for my next slide, which is a bias-based conflict. I put it personally. I put it into interpersonal. So Stefano says, yeah, it depends. Maybe, maybe not. Can you explain it more? Maybe organizational, right? You know, when I went to, oh my God, you guys, all right. Or even, or value-based, it could be a lot of things, right? When I went to university, I went to MIT, which didn't have many women at the time. And the women's bathrooms were only on alternate floors. Like if we had to go to the bathroom, we had to like, where am I? Go up a floor, try to find the bathroom, come on down. This was a conflict that was organizational. Yeah. Do you want a bias-based one, Stefano? I'll get back to you. Thank you, thank you. Does anybody else want to say something about biases and conflict? Thank you, Stefano. All right. So let's move on. Interpersonal conflicts at work, where you can't get away from people because they're on your team. This is the most common kind that arises. They usually stem from a personality difference. And when you're resolving this, my big hint to you is that you're going to have to resolve this inside of yourself, right? Have you ever, if you've ever been married as a double divorcee, I can tell you for certain, that you can't change how someone else behaves. Not very much. You can maybe change them a little bit. But in order to make peace with a conflict like this, usually you have to change your personal investment in it. You can try checking your behavior. You can try changing your expectations. I will tell you 22 years ago. So picture it. Copenhagen. April 2001. It's Guatic. And I am talking about user interface design. And RMS, Richard Stallman, is in the audience. And I am going on, you know, we're designing this email client, Evolution, it was called at the time. And we're kind of emulating the look of outlook because we don't want people who are using outlook to be confused. So I'm talking about UI design and outlook. And Richard Stallman stands up and raised his voice and said, APIs are interfaces too. And it kind of disintegrated there. I went to store mode like this. And he eventually sat down. And I know to this day, I have like a hard feeling in my heart. I think I don't know what he thought. Maybe he thought I'm famous. I can stand up and talk. Or maybe he thought this person doesn't look like she knows open source. I can stand up and talk. I'm not sure what he thought. What I thought was I came to freaking Denmark to do this presentation and you're interrupting me. And so it caused like a hardness in my heart. So there's one from back in the day of open source for you. Do any of you want to talk about an interpersonal conflict that you've dealt with in your life or at your work or in open source? You can change the names. I think we understand this one, right? You've met people and you just don't get along sometimes. It happens. All right. Value conflicts. I have such a doozy for this one. Oh, shoot, patoot. What do we think happened here? Does anybody have a guess for me for how to solve this? Because I legit don't know. Okay. Was that you? Did you fix it? Thank you. Thank you, Magic Angel, whoever you are. So this happens when people are both invested in something but they have different values that they've brought with them. So the hints I have, by the way, I'm just trying to tell you the text on them now and give you a couple hints, but we'll do a whole part on the strategies next. So if you feel like, man, you didn't give us any strategies, just please hold your horses. Hints for this one. What could help is recognizing that values aren't universal. Clear and explicit about how you explain your values. We're trying to move down that quotient from misunderstanding. So that's what we're trying to do. Other thing you could do is learn about what other people value. Those are my hints for this one. So can you tell us about a values conflict that you navigated? Okay. I will tell you one. It's kind of dramatic. In exchange for me telling you one, I hope someone will also tell me one. Ooh. Okay. So I'm 46. When I was 31, I was still not married. And in my culture, I'm from a Muslim culture background, in my culture that was very old. And the people in my community started saying, you need to get married. No one's going to want to marry you. You're going to be an old maid. And I thought, oh, how are you getting married at what now looks to me like a young age? So I married to someone. I moved to the Middle East with them. It was a disaster. It didn't work out. But it was divorce number one. This was a hard time in not mixing personal values with the values of my culture or the values of my community. So now that I've told you about the failed marriage and trip to the Middle East, do you have any value conflict you want to share? Many of the first projects, and they're all very different. I mean, with some of them in the beginning, was how much planning was valued over time. So many of the first projects, including the ones that I started, so much of the conflict they wanted was that. That is very strong and very valuable. Then I showed up with some projects and I'm doing integrations in different projects and showing up with a patch before having conversation was one of the worst things you could do. And they're like, who do you think you are? I think you can write that down. Why didn't you talk to us to bring this up? And so it was fascinating how the different values because I mean, eventually everyone wants to make progress and it's a foundation, but the different values were absolutely different so it was a different project. That is a challenging one. Thank you for sharing that with us. Anybody else have a value-based one? I have one for you. I'm not, you know, I'm a little bit worried that I shouldn't share it. It's about X-Free86 versus the FSF. Okay, here's an old value conflict in open source. It's not a perfect match, but I'm trying to show you how it does happen in open source communities. So back in the day, I think 2007 or so, X-Free86 is going to release version 4.4 and they made a change to their license. They're adding a credit cause like a traditional VSD license. FSF says that is no longer compatible with the GL. If you go forward with this, be warned. Well, they went forward with it. They kept their change to their license. They lost the majority of their users. So here's a case where licensing is a value that we hold dear and can lead to pretty catastrophic consequences for that project. Because I noticed that I can learn and require direct and very open, whereas at one point I was interviewing someone in India and in one book we can understand their themes, which is very important to me. So by concluding at the end of the interview, I do know that based on the interview, the best people I would say I will never hire you but I know that in India, they're different. So what will you do with that? Oh, okay. I had that one as well. I worked for a company called On Ganon and in 2004 I went and I lived in Bangalore where I was teaching software design. At my first lecture, I put all kinds of colorful examples. I had John Denver crashing his helicopter and the ballot disaster in Florida. American examples. I hope I had some American-centric, probably culturally tone deaf, but I thought, oh, they'll be roaring with laughter. They'll be talking to me. And it was so quiet. And I went home and did my normal solution to the conflict, which is cry. And it took me a long time. It just took time for me to understand this wasn't disengagement. This was respect. And so with that one, what I ended up doing was noticing how the folks on my team in Bangalore responded to share food with me. I remember the last session that I gave there, I had a big, God, more American stuff. I had a big bag of American saltwater taffy and we played Jeopardy. And I found that if I bribed people with candy, they would stand up and shout. So take time. Be explicit. I'm expecting to hear you talk about X, Y, Z. Those are some hints that I have. Yeah. I will say I read the book, the books you have by Ben Meyer and they were very useful to understand. At least there was difference. Ah, beautiful. How do you spell the last name? Okay. So we're getting, for streaming people, we're getting a recommendation to read the cultural map by Aaron Meyer. Thank you for your recommendation. All right. Anybody else want to talk about a value conflict? Hi. Thank you so much for sharing that example. For sure. For sure. All right. Let's see what the next one is here. Oh. Issue and data conflicts. All right. This is where you have a common task that needs to be solved and people have perhaps strongly held different opinions about how to solve it. So the example I have from ancient Genome, Genome 2. We were trying to design the menuing system and we had these, what do you call them? Applications. Like Nautilus. I wonder, do you know what Nautilus is? You probably do know what Nautilus is because you came to an open source development conference but it's a file manager. So this name isn't descriptive. So we had a task, right, design the menus and we had some folks who said buy their proper names and other people who said, give them a descriptive name so no one has to know what Nautilus is just so they can go find their downloads folder. In this case, keeping your lines of communication open, trying to not shut those down. You cannot go sulk in the corner quietly and get this one resolved. There is an idiom, sunlight is the best disinfectant. It means, you know, putting something out there in the open where the sun can hit it or where our eyes can be on it. That's the best way, usually, to work on solving this one. Anybody have an issue-based conflict that you want to tell us about? What do I have here? Oh, I already told you. When I first started my job at Red Hat, one of my first responsibilities was to write the status report from my little group. And I love writing. I love creative writing. And so I would write these long status reports that were all about the ins and outs of our CI travails. And my boss would take them and cut them down, send them up, and I would be like, don't you appreciate my beautiful writing, dude? This was just a case we're talking to him. His name was Dominic. Hey, Dominic, what's going on and why are you so explicit with me? You know, you're teaching one of many. This is not the form for your beautiful writing. That was a misunderstood task on my part. All right. Oh-ho! I have an EMACS conflict in this one for you to hear about, an organizational EMACS conflict, if you'd believe it. So the point of this slide is to say that it's between people, that they're between a person and an organizational standard or rule or something. This can be really hard to resolve, because it's not about people, right? It's you and something often much bigger or much more powerful than you. How are you going to resolve that? So what has worked for me the best with this one is finding out where the support lies. Who around me can support me? Maybe we're not going to change the policy, but support me in how I'm feeling. So look for allies so you're not alone if you're feeling this way. Sometimes avoiding this is better. Sometimes saying, you know what? This process really triggers me and I don't want to be near it. I am going to go and I'm not going to engage with that. All right. I'll tell you an ancient one from back in the day. All right. This is from 1993. GNU Emax was the Emax standard and Lucid was also contributing patches to GNU Emax. And it was getting a little dire for them because there had not been an Emax release in years. And so they were creating a fork. We are going to make Lucid Emax now X Emax. We're going to make Lucid Emax and then in the future GNU Emax, when you accept our patches we will then merge back into head. We'll be one Emax once again. But the GNU Emax folks didn't have that same need. You know they didn't need to do a release right away so they didn't. There was this conflict that eventually led to completely different Emax streams going forward. It was a fork. All right. Organizational conflict examples from anybody? Serge? Thank you Serge. Thank you Serge. That's a really nice example. Anybody else have an organizational one before we talk about the mother of all types? The compound. Okay. Okay. Long story short, you know, we were in development, sometimes we started in our project, sometimes we started in someone's Earth project, someone some other time, we are just destroyed. So this is one of these kind of scenarios that I get about because in person on the other side so whether it's some other engineer whether it's just my component in the course I do my homework but at the end of this journey I realized that at this point I make a decision make your own decisions but I would keep having this, you know, instead of we know how I think it's not like you have nothing to do with my customer. Sure, if he has money to continue because he's fighting again but at the same time he goes from particular any type you know, kind of different you know, items in the backbone but if any we first of all are here it may be different. So this is, you know, please be here fighting throughout life. Right, depending on who you asked, if we interviewed him he'd say it was interpersonal, that guy. Yeah. I really appreciate your example. Thank you. Everything okay? You folks? So sorry. I think I'm going to come up and shake hands. Sometimes a conflict has more than one major conflict. Sometimes this happens because a simpler conflict has gone on a very long time. You should have had your wisdom teeth out when you were 12, Anna, but you had them at when you were 45. So I was having excessive headaches because I didn't take care of a small problem 30 before when I So this can give you an issue, right? This conflict has cards. I don't know which one to address first. Which one is important to address first? How do I deal with this conflict situation? I personally do best with this one when I think about a body metaphor, a human health metaphor, right? One of my kids, he just had strep throat and COVID at the same time. So I didn't have the option to say no worries, but I'll deal with the COVID first and we'll just let the strep throat go on. No, that one had to be dealt with. Both of them had to be dealt with at the same time. But you can imagine, you know, if you're a hospital technician or a hospital doctor, someone comes in and she has a gunshot wound to the shoulder and she also stubbed her toe. I mean, one of these problems has a dire immediate effect on her long-term survival. The other is merely inconvenient. So when you prioritize solving these, you can either start with, okay, what's simple natural for me, get that part solved, then work on what's not so simple for me. Or you can say, look, we've got multiple things at play here, but one is really critical and is going to cause us to really break down. Let's try to take care of that first. That's, that is up to you. We have a compound. Would anyone like to come up here, shake hands and tell about a compound conflict? You don't have to shake hands with me if you don't want to. Okay, okay, Pinocchio. We'll keep going for now. If you think of one, then just let me know. All right. All right. Resolving conflicts. I was trying to come up with an acronym for you folks. Is that the word? I think it is the word. Yeah. But the issue is that the five strategies we're going to use, two of them start with A and three of them start with C. So caca is the only acronym I could come up with and I felt like you might not take me seriously if I spent the next 40 minutes talking about that. So these different approaches are not exhaustive. Some negotiators will tell you there is more than five. Some people think there's only four. Some say seven. I find these five useful. Maybe you will too. I'll just tell you briefly what they are. What I would ask from you is to think is one of these natural to me? Do I have like a natural conflict resolution style? Because if you have a natural one, you can lean into that. That's you decide to let them win. You just decide to let it. It's more important to them. Not that important to you or maybe, you know, you want to show them that you value their opinion, you value openness. You let that one go. That's accommodation. Compromise. Both of you give up something. Both of you get something. Everyone is mildly unhappy. You can move on from there. That's compromise. Avoidance. Avoidance is we're going to turn away from this conflict. We're going to leave this one unresolved. It is sometimes appropriate to say we're going to leave this unresolved. Like if the people involved in the conflict, if they're not the best ones to try to solve it, then for them to leave it and let someone else resolve it, that's an example of when avoidance for them is more healthy. Competition. Competition is when the more powerful party sort of puts the smack down and says, you know what? The solution is this. Now we're done with this conflict. Move on. Sometimes appropriate. Collaboration is like the holy grail of conflict resolution. It's the only win-win in this whole set. And that's where you say, okay, we are going to work together to craft a mutually beneficial solution together. You know, sometimes it works. So my natural tendency is probably compromise and a little bit of accommodation and a little bit of competition. And if you folks want to say, what is the difference between compromise and real? Yeah, if you compromise like if you and I are making lunch and I say we're going to have tacos and Sergey says we're going to have pizza. And so Sergey and I compromise. We have taco pizza. Okay, so then we don't need someone like, I don't know, Karen to say, nope. You guys are done. You guys are done. So competition should have a different name. It should have something like other people deciding for you and you moving on. Do you guys have a natural one or one that you know you don't like? You don't like avoidance. Stefano is saying that he, I'm sorry, I'm supposed to be I'm so sorry, I keep forgetting that. Sorry streaming friends. Stefano is saying that he really doesn't like avoidance as a strategy because he believes it can make conflicts grow into compound conflicts. Thank you. Stef? Yeah. Yeah, Stef is noticing that many of these strategies don't don't effectively resolve the entire conflict. They may be resolved part of it. They postpone some of it. But you know Stef, there are times where an immediate resolution has to happen and so we end up saying alright we're going to have to go with something like the competition strategy which is definitive and final because we can't let this drag on anymore. Other times a little bit of space and time between people is healthy. That makes it good. Yeah. Thank you. Anything else? Yes, sir, in the back. Yes. Yeah. Wow. Did you say Roberto? What's your name? Alberto. Alberto asked if time is a consideration. Time is a big consideration. A collaboration as a strategy usually happens after a conflict has sat around for a long time. You found out there's no solution to it. Leaving it isn't making it better. That is when collaboration is more common because you've spent so much time trying to find other solutions that haven't worked. You know then alright we're both going to have to build something new. Time also comes into play a lot with avoidance. Maybe it's not appropriate to have it solved right in that instant. And so avoiding the issue is because it gives you time to cool down. Sometimes people have such hot temper that the healthiest thing is to say let's put this on ice for a while until we're able to talk about it without being rude or hurtful. So understand which ways it's been developed. Oh, Karen raises a brilliant question. Karen is asking if it's not aware of what strategy you're using. Karen, I don't know. I don't know. Do you try to resolve a conflict? Is it helpful for them to know which one you're doing? I would say Karen, with accommodation you know if you're going to let them have your take, sometimes I feel tempted to say like hey we're doing it your way this time but at that I don't think it's very helpful. You know? But Anna, really. Yeah. And sometimes you know you take and slow it down for a week and how you know whether you're taking so long that I take the authority to come to the future and you know my armor I'll tell you what I said. You're taking accountability. You're saying I'm accountable for this one. Yeah. Thank you for sharing. Okay, I have a question. I see folks making for the door. I bought this session until 150. Does it go to 120? No, 150. Okay, cool. So we still have some time. That's good. And this, I have got a couple of slides that just go a little bit more into these types. So accommodation is lose-win, right? One person loses because someone else wins. So you end up using this the most. You want to show that you're fair or you don't want to be a dictator and shut down someone else's opinion. So you're trying to get the most of their opinion. You might in that case say okay let's make this decision and make it. If it's more important to one of you than the other one, then you might want to go for accommodation. It matters so much to them. It doesn't matter that much to you. So you can accommodate or if the relationship is more important than whatever the issue is. So that's accommodation. Does that one make sense? Yeah. Compromise. All right. Win and lose. Win, lose, win, lose. Someone will give something up. Both of you will give something up. Both of you will get your point. Let's see. We've kind of discussed about this. So it's best used when everyone has equal power, right? So if it's me and the CEO of my company, does he want to compromise with me? No. Is that even helpful? My scope of control is rail upgrades and conversions. His scope of control is something much different than that. It's probably not healthy for us to compromise. Sometimes for a temporary resolution. Alberto, I think in the back was asking about timing. Compromise can work in the short term. We really solve this now but let's make something good enough so we're not stuck. So that's compromising. Anybody love compromising? Is it anybody's favorite strategy? Yeah, can you say why? Yeah. Ideally both heads get something. What about you? Someone gets what they want because in this case no one is truly happy. Ah, right. That makes sense. It's fine. It looks to me. I find that I've heard that so many times in other folks there are other Thanks for sharing both opinions. The two ladies here in the back the lady with the green glasses had her hand up first. Which is something we in the team have with the compromise but then it has come back after someone was not happy with the resolution and then that's turned into another conflict. So my question would be how do you handle this new conflict that comes from other old compromise solutions? So ultimately usually with something like that where it keeps coming up usually you have to collaborate if you actually want it to be solved. Yes? Any questions? Do you compromise when you lose or lose the situation? Can you compromise? If you both haven't put something down Oh! Petra is trying to tell me something. The question was does compromise have to be you both lose something and you both win something? Is it win-lose? I guess if you're incredibly fortunate and you find a solution that you didn't either you need to lose something that would be win-and-win. Yeah, now we're being so thank you. I was going to ask the part of the earlier comment about the conflict coming up again. Does more come with the previous one? The accommodation? Yeah, so the question here was does accommodation actually solve the conflict forever or does it make it come back again and again? Yeah, I mean you know maybe Sergei and I we make one decision about lunch and then next week we have lunch again and we have to revisit that it can. Or you know if it matters so much more to them than it does to you you can let it go in your heart, you can say. Yeah, but it's not a personal problem Yeah. Right. Accommodating can definitely lead to resentment and avoidance. I think we have to let it go and then they can see that it goes. But they don't do it properly. Yes. You can really forget all that. But the lunch was a great example of it. Because you're having a lot of space. If you take it forever then it goes up. Yes. So I was going to ask them about the discussion. At which moment and how do you feel that conflict resolution in terms of compromise or you know delay and accommodation and so on? Because we have this example where a conflict comes back and this was often happening. Let's say you have for example a team of seven people and they do something. And probably the most common conflict resolution in compromise is that you cannot make all seven people happy. It's very easy and you are lucky with human health. But then what happens in reality? You have a meeting with a couple of staff. You leave the meeting with the thought that I feel the deal. Everyone is agreed. I'm not saying happy but everyone is agreed. But then during the next you know I'm not really happy with what we discussed but like that and then it makes you realize that you didn't really solve any conflict necessarily. Because people where maybe they got me all over so they would ask whatever that compromise is and so on. But they immediately come back to you and tell you I'm not happy at all for me it's not compromise. And then because none of those seven people then from the feedback to others it's not even compromise. You lost the battle on all the problems. We're hearing about the painful and probably familiar situation where you thought you decided it was in the meeting and actually really agreed. My advice and I'd love to hear what other people's advice is my advice is at the beginning of the meeting be crisp about you're going to decide XYZ. Our mission is to decide XYZ. Take notes during the meeting. Record what the decision was. Make sure before you leave that people see what you have recorded. At least here in the situation there's less room for interpretation. Do you guys have more thoughts? What can do in that situation? Please make sure that those who know present and know on their life studies can make to open double interpretation. If you have everything you'd like to reason and know well and very transparent it's usually better to think about things. Right. Thank you. Thank you. What are we describing together in this meeting? We are. Yes. I wanted to talk about transparency and the idea that the decision was taken and also it would be clear on the whole right how the decision would be taken so time is very important but also we both need to be in are we contributing are we setting down all the contribution and today for the final decision that we can do is we want to stephano is talking about being crisp and clear up front about what the process will be. Some people they use a racy matrix where they say this matrix describes who's responsible, who's accountable what does he stand for? I don't remember. Consulted. Who will be consulted and who will be informed so having a really clear description of roles and rules that can help to make the compromise at work for some matters or we need a max you know this decision is going to need three acts three I guess it's time for acknowledgement probably so that's like a voting mechanism. Yes friend in the back. Versus if I'm not in the decision because I'm willing to say that it doesn't affect the process and there are a lot of different objectives but overall my happiness or unhappiness so in the loop it's not much better because I'm still not happy with the decision so it's like we are deciding whether we tackle or we stop and we keep the process of we stop okay let's go for tackle and we go into the future I feel that we stop whether I like it or not we stop taking over you yeah the closing pizza scenario has grown and become a question or the comment is about transparency not necessarily yielding happiness if I thought I had a stake in this decision and I don't win I don't get my way then does the transparency help me would I have been happier if someone said hey we're going for tacos and I didn't feel like I had a vote maybe maybe I think my advice here would be understand and sign off on the decision framework that you're participating in believe it's legitimate or participate in something else and then I'm aware that my process they make people unhappy but at the same time as I said you cannot make everyone happy so I'm trying to ask myself is it going to be helpful if I did all the all the details about how you made this decision about all the process like other person on the other side other person affected how much detail should I give you to help you because I think it's foregrounded but you will not be happy with this decision and now I'm trying to make those situations better so I'm trying to help you but many I can do some hard and weak to make you less unhappy this is what I'm trying to get to you the summary of this one would be I think the summary is thank you I think the summary is be mindful of how much detail is meaningful when you're communicating a decision not always complete detail of the entire decision my question for folks is we have about 15 minutes left and we've got a couple more strategies to talk about including this one which I think you're not going to like this one is avoidance would it be okay to learn to avoidance now should we avoid the avoidance slide I think it's okay alright so since nobody takes action to resolve the conflict and so we think of this as lose lose I didn't get my way you didn't get your way either so the conflict has been resolved but kind of the question is why the heck would you ever want that when that be better and it actually is better sometimes so timing is a constraint right if all of us know keep wasting time on it we're never going to move to the bigger more important avoid that one you don't need the fuss of not being able to solve it focus on what's more important avoidance is okay that conflict didn't help us if sorry it's just being divorced twice I've had some experience with this one when the people who are involved need a chance to cool down and spend time apart you know it's not actually true that you should resolve everything in that minute sometimes your feelings are hurt they are hurt you can't hear each other anyway if you need time it can be okay to say let's table this for now you have the right scope of ability to resolve this one maybe someone else is better able to resolve it kids are playing with a doll someone rips its head off now they can't fix it anymore and they're really mad they probably can't resolve that probably someone else more empowered with an engineering background like me should resolve it sometimes this is a hard one to explain sometimes the impact of dealing conflict is going to damage everyone involved you can solve it but it's going to hurt everyone and you see we're all going to get hurt if we do this then it might be better to avoid it so those are some cases where we'd like to avoid a conflict I had this once in a document I was writing it was a document for a promotion so people were going to vote on it and reviewer said something they did not agree with them and they did not agree with me and it became a painful situation in the end what we decided to do was the person who is the decision maker can see the conflict decide but for that reviewer and I to keep going back and forth so we avoided it anything else on avoidance yes in my hand do you explain what actually happens this way in my in my opinion one person seems to be minor but others have been being filled with it and that's why conflict has continued even then one person finds people are conflicted that was a beautiful comment about we don't always know how much a conflict matters to someone else we can ignore it but to them it wasn't thank you I also when I feel like I'm not in the first discussion so like earlier you mentioned the having a discussion then I start to point out it's not so useful so why are you talking about the question here we're talking about kind of depression you participated in the discussion it didn't go well you want to protect yourself from that feeling so you decide I'm going to let it go and save time and save time competition where one person says I'm going to use dominance and power and I'm going to make this decision for you this conflict will hereby be ended by the sledgehammer approach this works sometimes if you've tried and they failed you might need a decision like this if it's emergency you have to have a quick resolution and there is no time for debate and sometimes this is appropriate or and I have one I knew I was going to go home versus KDE I knew it in situations where an unpopular decision has to be made so back in the day in 2003 I think my startup was acquired by Novel so my startup Zimian we were oh Pino knows Pino is my best KDE friend we were founded by the founder of the Ganome project so we were a Ganome shop Novel acquired us the Linux desktop in the future yes we know then and we said the Linux desktop was the future and we were going to go with Ganome and they said yes we have and you know you do know right they didn't make a decision a bunch of us quit within three years scattered applause you know how you know what they like what I'm doing every now and then and probably I shouldn't be saying this we may comment on this I know from the very beginning of companies that I'm going to make a decision at the end doing whatever I want but I will take the opportunity to make a decision but I let people discuss because I know that there are companies who like the decision I make so I give them to me that they are discussing therefore even though I made my own even before they were home in New York of course as they don't know but people are smart people better to do this rather than to make a decision behind closed doors so I'm a bit puzzled because I treat them like smart people but at the same time knowing myself I would have already called the bluff a long time you know well if you work on this guy's project you gotta watch then at least it will hurt and less over so I'm not sure because that means you know saying I'll hear you back this is something that I in my catalogue I don't do the moment I write somewhere in the comments I hear you back I say it about the other person so I don't want to do this but at the same time the way I treat them is not good either so one thing maybe another problem is why in the United States I think people clearly understand I don't know maybe this one they program others and that's why I'm making this decision then maybe they say oh I'm discussing a lot of this you know I think so because I think there's a lot of content to go on and people think oh maybe this is a discussion about the need of the project and maybe you know people have value comments have value comments have value this was a discussion for our streaming friends about the role of a decision maker they've made a decision but they still want to encourage communication because they're hoping to generate buy-in so the last strategy for us to talk about can you believe we have 5 minutes and 28 seconds left so much for breaking you into groups and making you resolve conflicts together you guys dodged the bullet there alright collaboration this is a win-win we both worked together we found a beautiful solution there's a lot of time it's not always appropriate it's appropriate when you're trying to get at the root of a problem it's gone on for a long time you've tried all these other strategies they haven't resolved the ultimate problem that continues to occur the tacos versus the problem has never gone away and Sergei and I decided we're gonna make lunch from now on right but you need everyone involved to be willing to investigate alternative solutions that they haven't necessarily thought of so they have to be willing to say I'm not looking for fame and glory for my decision here and these are kind of some of the reasons that doing collaboration can be difficult when our ego comes and says I hope they pick mine because I am the best they should know makes it hard to collaborate so we're running out of time I will send my strategies to I'll send my slides to the DevComp organizers so if you ever want to look up anything you'll have them here I thought it would be helpful for you if I gave you a summary of four different conflict types what works well and what doesn't work well but I suspect you can all read since we have only three minutes left I'm not going to read this to you for our last three minutes what would you like to share have you thought of a conflict you wanted to talk about have you got any feedback never do this again on a anything on your minds yes Alexander most of the conflict is that three problems were like movement and transition and let me wonder what kind of conflict ever and I think there are just problems really this reasoning doesn't you see the overarching conflict you take three minutes to come down your name will take three minutes to go and now you're in entirely different conflicts are I think we should so next time around we'll work on what happens when we are really moving our conflict down the road change our personal investment maybe over time something looks healthier maybe we do build something together where we agree maybe external circumstances change the shape of our conflict it won't always continue on and on accommodation doesn't work well so accommodation is where one party lets the other party win if I am having a conflict with the state of Michigan where I live so if the state of Michigan we're going to decide okay Anna Syed you win in this case this just rarely rarely happens it's not a precedent of unfairness it weakens the complete organizational system accommodation allowing one-offs is not usually the best way to resolve this yeah alright oh our last comment with 39 seconds left what do you have I would model so the question here was about my poor friend Peder has to keep showing me this thank you so much the question was how to get a team or group to learn conflict resolution strategies over time one of them is verbosly model these strategies say out loud what you're doing you can be the one showing fairness you can say what you're doing that's one training yeah a bunch of trainings exist if you're a red hotter there's crucial conversations right you can take a red hat course called crucial conversations linked in has courses about this there are a bunch of books you said Aaron Meyer something culture culture map our friend here gave I would say provide learning resources recognizing that different people appreciate different strategies and come from different backgrounds oh for 48 seconds over all right it was really beautiful to see you today if I made some mistakes please forgive me it was just a pleasure to have your company so thanks for coming applause