 So, hi everybody, I'm Victor Stiner, I'm working for Red Hat, and I'm here to talk about how to engage, but I don't want to keep doing this for a long time, or say differently, take this easy, deeper complex. As an introduction, I've had many people saying that Python is the world of code, and I would be right to hire. Python is the first policy of people. I'm going to start my talk with the government. So, the government, I want to name for this whole depression, usually it's related to war, and the revolution. Last year in February, I subscribed from all requests, asked me to get away, and I made no comment for three months and a half, and for me it's something really significant, because I was one of the most active in Python for the last five years. So, no comment for me, it's really something new, and I wasn't prepared for that. So, it was really something important. In box, it was a journal, so I got it out for Red Hat, which is the least specific to Python for developers. The core mentor is for mentorship. Python that is a general release for discussion about Python developments. Python is all integrations related to full requests. Python remains, it's a Python maintenance team, but that's my team at Red Hat. PySecurity, our email is related to security, and the last one is a general mailing list about user to user, asking questions about Python. And my web work is that each morning I open Gmail to check my email, and I'm trying to read all of them, and I try to at least read them, but not always take an action like I fix those a bit. And at the beginning, it was just fine to have zero inbox policy, because I didn't get much email, but over the years, I got more and more emails because I subscribed to more and more mailing lists, and at the end, it was just too much. So what does download mean for me, is that I realize that it's time to step back from the Python project, and think about how I'm involved in Python, and maybe there are some issues, because I wasn't feeling bad, and I realized that I just have too many responsibilities, not even on Python, but also in my job. I didn't realize that I was working 13 hours per day, which is too much, and this is another range, which means that some days I may work even longer. But at the moment, it's something complex, and I cannot say the rate or the reason, because it's something also very personal, but it's just you and I here. Okay, so let's come back to the open source. The problem of open source is that I don't scale up. Even if I would like to spend more time on Python, I cannot, because I have to eat, I have to sleep, and it's just not possible. So the problem doesn't make me realize that I don't scale up. I need to change the way that I'm involved in Python. And from my point of view, there is an increase of the workload in Python in general. There are more and more things to do, but there is a decrease of the number of new code developers by year. On the top, you have a graphic on open bugs on Python. Over the last seven years, the line on the top is the number of bugs, and the line below is bad with patches, which is no way less prevalent, because we have four requests. But previously, it was the bug which had a solution. We have a lot of patches waiting for review, but nobody doing the review. And you can see that it's still increased, so it's only going up, and it's going to increase. And above, you have the number of new code developers by year. So you can see it's 10 years. And you can see that slowly, there is less and less new code developers in Python. And in theory, it's not an issue, because we expect people to work to dedicate their whole life to Python, but now it will not move to some other projects. Some people decide to have children, some people decide to travel. So you cannot expect people to be involved over the last four or ten years in your project. You have to get fresh blood frequently. And in total, in the Python project, we have almost 100 code developers in the Python code developers team. But this number includes inactive code developers, which means developers maybe didn't push any change for one year. And you have to compare this number to the number of bugs, which are almost 700, and the number of full requests, which is not very close to 1000s. So you have 1000 requests for a few active code developers. I found this comic on the comicstreet.com website, which is a good way to explain the issue. So this is how you think that open source apps are going to be. You can see that happy faces. You can see that maybe they are at a party or something. There is someone bringing coffee. There are many people in the same room, so you can expect that they are working in a team. More likely it's an Instagram company. Some people are writing on their wakeboards. They are discussing an issue together. And in the rooms, there is someone who looks like a manager who says, oh, I assign a team to blah, blah, blah. And being able to assign a team to someone means that there are already a lot of people, but there is even more people, resources are available to fix more issues. This is how open source apps are really working. You can see that the two pixels are different. So what can we see here is that it's all in the middle of the night according to the clock. It's a single guy working alone with his cats. He's working from home. And he says, oh, just one more ticket before going to bed. So what does it mean? When you submit a book to Python, when you submit a call request, you have to know that one guy is alone at home with his cats and has to review your... has to trade his time and his sleep to review your contribution. And I've often heard people saying that, oh, in Python, we are all volunteers. That will elaborate this sentence. All volunteers means that the contributor gives them free time to Python. Free time can be evening, weekends, maybe you're also about to termines for a few people. And we have all an limited amount of free time. So it means that if you take free time to work on Python, you have to take it from someone else. So it means that you have to trade in your time between your family and friends on Python. And you have to find the right balance between the two, not lose family and not lose friends. And sadly, only a few employers allow the employee to contribute to Python on the web stream. But there are a few companies who allow that. I'm feeling very, very lucky because I'm paid by Redats who contribute to Python on the web stream on the web stream. And I play in Python. And I play it full-time. That's sadly, and I am the only one. I have my preserves. They are forward for developers. They come in buying what's so ASMR on a single launch of one day per week dedicated to open source. And at Dropbox, there is a video game console, the author of the Python language, who also have one day per week. And if you put all these people together, you get only two full-time developers who work on Python. And you have to convert this number to the popularity of the Python language because there is a website called Tire, which is a popularity contest of the programming language using different ways to module the popularity. According to them, Python is the first most popular programming language in the world. So it's a further one, and you only have two developers working on it. It's very common that people ask me why nobody review a specific request or why nobody have a look at some bad reports. So you have to know that reviewing a patch or matching a patch as a most, which is not very obvious as a contributor. Reconant from the nice analogies to explain that is that you have to think of a contribution like a puppy. You might view it as this all, this cute, wonderful thing you are giving for free. When I'm looking at seats as over a decade I have a feeling of working on webpages. So what does it mean for Python? Is that when you click, when a code will click on the match button, the one who click on the button becomes the responsibility of your code. And it's not only for today, it's for the next five years or maybe up to the next 10 years. Because each time that there is a regression in the part of the code that you modified, the one who click on the match button has to undergo regression and try to understand the code, try to understand why there is a new plan. So there is a cost in the long term. And that's not very obvious in your protocol. We made actions in the past to try to engage contributors in the long term. And one of the big actions was that the Python support foundation paid Red Cannon to write a guide. Of course, we did not have a guide to explain how to create a protocol, how to write a protocol, everything that you have to know to contribute to Python. And we immigrated from a mercurial to Git on Python.org to Git on GitHub. And the reason was not to move to Git. The reason was mostly to move to GitHub because previously we had a very workflow very specific to Python. We are only using our own web tracker and we have to attach a patch file to the web tracker. And not all projects use these methods for contribution. But Git on today is very popular. People know how to use it. They all have accounts. They are used to push up requests, to push new changes. It is something very popular and we just decided to move to GitHub to reduce the burden to push the first polygist. I think that this is a great success because from my point of view we got more and more contribution over the last two years. It seems to be great. Another important change is that previously the core developer who picked your patch on the web tracker had to run the test manually and also after pushing the change he did something great on the viewbox. He asked to understand the failure and tried to fix it. So he thinks that previously fixing the web was the job of the one measure change and today we changed that to give the responsibility to the author to change because we ran the CI as a play commit on the polyquest directly or Linux or Windows. So it doesn't mean that you are alone to fix your issue because anyone can help you to understand why is it a failure or to fix it, but it means that we better scale because we put less tasks on the one who are limited or the core developers. But sadly, even if we made all these actions I think that we still are still an issue and core developers remain the bottleneck of the velocity of the Python developments I like this quote that you can't solve people's problems with software because we try to put more and more toolings on Python but it's not enough to get new people involved. I would like to talk about the diversity of problems. So first of all I found that there is no public complaints or there is no diversity problem. That's all. It's not that easy. So we are going to use the topic. This is a treat for my Marietta DiGiorno who is a Python core developer. She wrote, when women speak out about diversity of the community they get penalized and branded as non-technical. Some women should not speak out because of this. We will not be silenced. I still think that Python is a toxic community in some ways and toxicity can mean different things. For example when someone proposed an idea on the Python ID, there are still attacks directly on the author of the ID and affect to the person instead of staying as an argumenter and this is not a good way to discuss, to make a better approach to be able to stay as an argumenter and not to attack people. Attack cannot occur on the public space but they may continue in the private space at some days. Sometimes it only happens in the private space so it means that people get harassed in their private emails or private Twitter accounts for example but nobody is aware of that and if nobody is aware of that we cannot work on this issue and I will explain why later when people are harassed they don't speak up because it's really difficult to talk about that and so nobody is aware of the issue and it's not going better. And toxicity can mean burning, relying, misogyny and to give you another very concrete example is that the last year there was a very different discussion about databases because to get high availability usually you need different databases like the one who gets the right operation another one which is a copy just in case of the first one fails and with the past the master of the database on the statement database some people started to say that Facebook must be a reward for that better to say the primary and secondary database so some databases started to move to the new terms, primary and secondary and when I looked at Python I realized that sometimes the master and slave terms are not used properly for example I modified the code for the process and when you have a process usually the relationship is called parent and child and not master's slave or for network connection usually I'm using the terms client and server not client or master or for buildbots as I changed the name from buildslave a few years ago the current correct time was walkers and I also modified the terms because a slave means a slavery to some people so it's not a good idea to use such terms in a primary language because it's not related to slavery so I just modified 7 lines the documentation and comments it's just 7 lines and according to people who can change it's a change because the new time is better but a journalist wrote an article in the news website called the register very quickly after this article more and more articles have been written about this topic in Russia today, Breitbart, tiktokway.com Icon news was about this substantial portion and articles have been written in English Russian, Japanese German, French Czech and all these articles mention my full name and my own career and to give you an idea of the volume of messages just on slush dots on 2 dates people succeeded to send 1,200 comments I don't know how they are doing that but they are very efficient to send comments and I would say that the reaction online was not really positive it's negative or very negative and the worst comment can be found in the portion this is an example of a comment that's one of the most important portion unfortunately the audience this comment is Khokyubik Tostyan who has an enemy of slash D now we have always been like a video about these things and someone is not even more violent and more direct I would like him to do that can I have such a comment like I want someone something in the code or some music but this comment is part of the code I let you read the the article if you want to know more about this so I would like to take a short break because to be honest I never expected such bad reaction more violent change in the documentation but it seems that many people have a strong opinion about this topic I did not expect news article to mention my name is such news article because Python is a programming language and it is very poetic but it seems that people find it like this we solved all these problems so let me introduce you to the diverse situations to understand the diversity issue we have to understand that we are not talking about programming anymore we are not talking about tech we are talking about people we are talking about psychology and there is something which becomes more and more famous called unconscious biases so they are social stereotypes about certain group of people that individuals from outside their own are less written like that but the important part is that you see something inside outside your own awareness so you are not aware of that so even if you try to fight against that it is part of you and you just have to accept it and it is not easy to understand that because something is not obvious but with the machine learning the way it becomes more and more popular and there was a study in the US made by some policemen who analyzed profiles of people so they did machine learning with a lot of different files when the software was ready they tried the software they realized that the software was racist it means that if you take two files of different people you can find that profile so we said that the black people is more likely a criminal than the white people and machine learning for me is something very stupid because you put many inputs you get outputs so if the output is not expected maybe it comes from your inputs so what I like to say is that this machine learning is like a mirror that you put in front of you and you look at yourself it is as if this machine becomes racist it may be because you are racist so here is about psychology it is about the imposter so imposter syndrome is a psychological pattern in which the individual helps the accomplishments and the persistent internalized fear of being exposed as a quote and again there is something inside you it is a passive persistence so it is very difficult to get away from that again it is not easy to get the right link so what I like to I like to explain it with social networks because today we are all using social networks Facebook, Instagram, Pinterest and others and more and more psychologists say that in search of social networks we are trying to show the best of ourselves we are trying to hide our weakness and because of that psychologists say that more and more people get depressed because of social networks so when you compare your own life to the profile of your friends or you feel lower because your friends are traveling all around the world amazing weekends they are doing a lot of different activities and your life looks boring but it is not used because of the way that the social network is managed and I think that this thing is not something new because even at work when you compare to your colleagues sometimes you can feel the same feeling because at work we try to show the best of ourselves we try to hide our weakness and when you compare your own work to the work of your peers you can also feel that you are working less or your work is worse something else to work against the toxicity something called the product products but to understand what is the product products you have to rewind from the early age of open source software at the beginning it was a small group of people who know each other and it was just fine but slowly open source becomes more and more popular and you get more and more people on board but we realize that even if we say that in practice it is not the case it is more and more an incident for example it is very difficult for a woman to open an open source project so we realize that maybe we have to write down some rules and this is how we came up with the idea for a product product the vital software connection created a product product and it has been applied by a tracker and by a lot more when you have a look at the product product there is something simple like you have to be respectful you have to be kind with your business it is something crazy and it is a product product that has been applied during events because during events you have physical meetings and product product incidents and the good company is that and the work that you can do is not to write any answer or to make a situation worse and nobody wants to make a situation worse usually when you talk it is just enough to handle the issue in private so you don't need to it is a PSF to require a product product if you would like to organize events called Python as a current state a product product incidents and bugs because sometimes there are bugs there are bugs which are removed but when everybody has learned that or they don't understand why because you may not be aware of all the discussion made in private so we are trying to discuss how to provide a fair election for each incident to come back to diversity and explain why I consider that diversity is something important in Python and why you need a diversity in a project that diversity for example means the diversity of point of view because Python is a very large project there are many different things to do and there is the recommendation that some people can see language or reference counting or some other people hear about the backwards compatibility of the API the language consistency some people are very good to go directly to the solution to try to find a simple solution and not to deliberate something very complex some people are really good to support current cases which is important to design accounts in the design of a new feature some other people who care about experiments security, API and there are very different interviews it's also the diversity of these cases because there are very different ways to use Python for example online interface learning for less than one second and for such kind of application what is important is the start of time of Python so we have to reduce the start of time to make the application more efficient some other people are using servers running for multiple days or even multiple weeks and for such server what is important is more of his memory usage to make sure that the memory footprint makes it stable or not to big there are also graphical interfaces machine learning rest server games and again there are many different use cases but to give you a more concrete example Noghi Nader has been promoted as a cosplayer player in 2016 he is coming from Japan and he has been chosen for the BDF delegates which means that he is the one who take a decision on a path of Python change and he has been chosen for the delegate of path 508 which is a C localization but also make that 508 which is a new utility 8 and what you can see here is that English speakers are satisfied with ASCII ASCII is a boring language there are a few letters and ASCII is just fine for them but maybe Japanese people are more used to encoding issues there are many more characters they are using teaching and coding and computers and getting encoding an issue is something very common for them so they have a very good reason to want to work on that topic and I think that it is very important to avoid languages because if you miss for example Japanese people maybe you will miss some users and your software will miss many users so it is an efficient way to get more people on board it is called mentoring and I would like to start with positive action so during bacon US 2016 we have also encouraged women to contact him for mentoring and he mentored Marietta Dijaya who became the first woman of the album in January 2017 and you can see that first of all the code was implemented in only 6 months which is quite quick compared to most of the people so it was efficient and we can also see that before this positive action we had no women so maybe something was wrong and maybe you have to open the window to women because if you don't do that women will not come to your projects so I think it was a very efficient way to get more diversity in the project and hopefully after Marietta we got more women on board in May of 2017 we got Caroline who has been promoted last September during the bacon prince theater there is a lot of women on board and you can see that in 2016 we got a woman on board in 2017 we got two women for developers and the year after we doubled the number of women so it was really efficient to have specific actions to be more welcoming to women and to have dedicated my mentoring for them because if you don't do that you might just miss a woman and I like this quote to understand the mentoring is if you give a man a fish and you feed him if you give a man a fish and you feed him for one day but if you teach a man to fish and you feed him for lifetime what does it mean in the case of Marietta as I explained in the beginning of my tour I don't care I don't care because I cannot look more I have to adapt a new approach and instead of trying to fix all issues in Python because there is just too many things to do maybe I have to train people to explain them how to use the word sensor because if I am able to train people and they become able to fix the bag we will scale our reason which is what I would like to do today I went out to Pablo Sargado between January and June 2018 and he became a co-developer in June so again it's only six months and I got to know that for some people it took one year, two years or at least five years to become a co-developer so what I just want to say is that mentoring is something really effective and to understand why it is effective you also have to understand that the development of an open source project is a matter of trust because for example when you create a new project that you spend a lot of time on it maybe you don't want others to touch your project because you don't want other people to destroy your projects so you have to be in a trust relationship with others to make sure that they are on the same page and they are going to be to be aware and to not break your toy and building a trust relationship is something that takes a lot of time you cannot build a trust in a few hours it takes a lot of exchange of thoughts of review for example and in my experience mentoring is a really efficient to build a trust relationship in a short time to get more people on board is the Biden Communities there are some dedicated communities of all diversity for example there will be spy ladies and their pet fridge is a woman who love coding Biden they organize events in Australia, Brazil, France, India, Netherlands, Algeria, Taiwan or the website is spy ladies.com this is an example of an audience and you can see that it's not limited to women because there are also men in the audience and visually the idea is to learn programming with a teacher and the idea is also to meet other people to to share your experience and get high and other communities for the France cause to help draw attention to transgender issues through a typical use of day so again the idea is just to meet and to work together for example for one day one of the latest event was during a pilot volume in last year in London and on one side is trans.cov trans.cov it's a little bit higher this is an example of the creation of the trans.cov website which is a famous website I think that's one of the most successful communities called general girls and like I said the inspired women far enough to program they organize more than 700 events all around the world like Cameroon, Finland, France Vietnam, India, Japan Spain, Switzerland those countries my website is general girls.cov so the general the name is usually it's more related to the general web framework and it's an efficient way to run programming because more people are using web and general is very easy to use so it's a great success and you can see all general programming many happy faces and to conclude so we saw that we identified that core developers are the bottleneck for the velocity of the Python development we are aware that Python has some people issues but we are working on these issues because first we are aware of that and we are trying different solutions to make the situation better mentoring is efficient to train contributors as future core developers but mentoring is also very efficient to produce a relationship which is a key to trust someone to promote someone as a core developer as a core, this core product reduces the toxicity of the community because we had no core product previously and we saw that we need one we need people to handle co-computing incidents to make sure that the community is fine present toxic and we have also wrote that increasing the cost of diversity is a very important role to ensure the future path of Python and there is a new sports from West Canon also used by now Mr. Shouen I have had many women saying that they tried different communities on softwares and they really like Python which is because it is not perfect but there are still issues there is really a great community and many people are nice so next for the contributor I am working on a process to promote the contributor as a co-developer because previously the rule to become a co-developer wasn't obvious and it took a lot of time and we have to write down what are the conditions to become a co-developer, what are the good steps and what can you do to become a co-developer. So you already have a draft, but I have to write it as a product of that. And we're also working on our mentoring guide, which is a guide to explain what is mentoring, how to mentor, how much time it takes, how to find mentoring, things like that. We also wrote a contributor tutorial, which is a tutorial to explain how to contribute to vital. This one is different from the developer guide because the developer guide is very, very long, it's very complex, but it's difficult to start from the beginning. So the idea of the tutorial is to take a contributor by hand and explain to them one step after the other how to contribute and not ask them to do all steps at once. And you can see the URL to the tutorial is in the description of the tutorial. And that's all for my talk, but today I'm going to take questions after my talk.