Many ways to be a Python contributor
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 131 | |
Author | ||
Contributors | ||
License | CC Attribution - NonCommercial - ShareAlike 3.0 Unported: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this | |
Identifiers | 10.5446/69474 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
EuroPython 202460 / 131
1
10
12
13
16
19
22
33
48
51
54
56
70
71
84
92
93
95
99
107
111
117
123
00:00
State diagramSine2 (number)SoftwareComputer animationLecture/ConferenceMeeting/Interview
00:25
Local ringSelf-organizationAssociative propertyProjective planeSoftwareComputer animation
00:54
Multiplication signCodePoint (geometry)Universe (mathematics)Computer animationLecture/Conference
01:45
Design of experimentsMereologyUniform resource locatorComputer animation
02:30
Hand fanRouter (computing)Computer animationLecture/Conference
03:15
Time zoneCore dumpProcess (computing)CodeMereologyType theoryDifferent (Kate Ryan album)Software developerSoftware bugComputer animationMeeting/Interview
04:34
CodeExtension (kinesiology)Function (mathematics)Computer fileCryptographyInformation securityGroup actionCodeCryptographyMoment (mathematics)Process (computing)Projective planeConfidence intervalSoftware developerGoodness of fitWorkstation <Musikinstrument>Computer animation
05:34
Projective planeSoftware developerProcess (computing)Revision controlComputer animation
05:59
State transition systemEstimationMoment (mathematics)Slide ruleProjective planeProcess (computing)MereologyMeeting/Interview
06:52
Correlation and dependenceComputer programmingMultiplication signProcess (computing)View (database)Point (geometry)Forcing (mathematics)Computer animation
08:03
WebsiteSpacetimeWhiteboardWebsiteFunctional (mathematics)MereologySoftware developerMultiplication signIntegrated development environmentComputer animation
09:24
WebsiteFunctional (mathematics)Multiplication signElectronic mailing listSoftware developerEmailProof theoryComputer animation
09:55
View (database)Template (C++)Software testingMereologyGeneric programmingFluid staticsWebsiteComputer filePatch (Unix)Mobile appFormal languageContent (media)Table (information)Price indexRevision controlOnline helpComputer programmingRegulärer Ausdruck <Textverarbeitung>ResultantFunctional (mathematics)Formal languageType theoryWeb 2.0Computer animation
10:24
Software developerOpen sourceCodeBlogBlogMoment (mathematics)Web serviceDebuggerWeb 2.0Time zoneExpert systemMereologySoftware developerFront and back endsComputer animation
11:29
Systems engineeringLoginThread (computing)E-textQuery languageElasticity (physics)Hacker (term)Point (geometry)CodeFeedbackHypermediaHydraulic jumpError messageComputer animation
12:22
Buffer overflowWebsiteStack (abstract data type)Moment (mathematics)Online chatComputer animation
12:51
Object (grammar)RotationDigital filterProduct (business)Finitary relationInterior (topology)Endliche ModelltheorieStack (abstract data type)Multiplication signBuffer overflowComputer animation
13:46
Computer fileTranslation (relic)MereologyMultiplication signGroup actionAssociative propertyLocal ringMoment (mathematics)WebsiteVapor barrierWordFormal languageComputer animation
15:00
Formal languageMereologyDifferent (Kate Ryan album)Type theoryComputer animation
15:54
Point (geometry)MereologyProjective planeComputer animationMeeting/Interview
16:37
System of linear equationsConnected spaceMoment (mathematics)CodeReliefMultiplication signFrequencyMereologyComputer animationMeeting/Interview
17:34
MereologyComputer animationMeeting/Interview
18:02
Network switching subsystemTrigonometric functionsSelf-organizationMereologyComputer animation
18:25
Hand fanMereologyGroup actionMultiplication signPoint (geometry)Computer animation
19:04
Successive over-relaxationUniform boundedness principleComputer animation
19:27
Point (geometry)Connected spaceMoment (mathematics)SoftwareComputer animationLecture/ConferenceMeeting/Interview
19:52
UsabilityDifferent (Kate Ryan album)CASE <Informatik>Local ringComputer animation
20:17
Local ringUniverse (mathematics)Connected spaceMeeting/InterviewComputer animation
20:45
Addressing modeCase moddingLocal ringInformationPoint (geometry)Link (knot theory)Computer animation
21:19
Slide ruleLink (knot theory)Sensitivity analysisSoftwareCodeOpen sourceCodeComputer animation
21:48
Conservation of energyData Encryption StandardDesign of experimentsBit rateInformationSlide ruleQR codeBlogCodeComputer animationMeeting/InterviewLecture/Conference
22:36
Ordinary differential equationObject-oriented analysis and designStatisticsLength of stayArtificial neural networkRouter (computing)Hand fanPeg solitaireBitRootProcess (computing)MathematicsCodeMereologyLevel (video gaming)CodeSoftware developerExpert systemCore dumpPoint (geometry)Software frameworkSpring (hydrology)Multiplication signSource codeService (economics)Software repositorySoftware maintenanceSoftware testingPhase transitionCASE <Informatik>Confidence intervalObject-relational mappingOpen sourceComputer virusLecture/ConferenceComputer animationMeeting/Interview
Transcript: English(auto-generated)
00:06
Today I try to talk to you about many ways to be a Python contributor or the way I found it to be a better Python contributor. So it's related to my experience. So before going ahead, I present with myself, and I'm Paolo Micciore, I'm a member of
00:26
the Python Software Foundation, the Django Software Foundation, and the Python Italia Association. I co-organize Python Italia, the conference in Italy, next year will be in Bologna, and I founded the last year a local meetup, Python Piscara.
00:42
I'm more in the Python ecosystem, a contributor to the Django project, and I'm a co-organizer of Django Girls, and I'm also a CTO for 20TAP. The first thing I found in my career about being a Python contributor was thinking about
01:01
writing code. It's the most obvious one, but for what I discovered after that is not the only one. In this picture, I'm in my first ever Python-related conference was the Plone Conference in Naples in 2007, and the time after the university, the only things I thought about contributing
01:25
back was writing code, but I was a newcomer, and I was afraid to don't be able to contribute in the code base. But it was a starting point to see that a lot of people did so different things.
01:41
So the second things I did to be a Python contributor was joining the community, and being part of what was going on in the community. And in this picture, I was with some of the Zoop and Plone people in Florence in
02:04
EuroPython 2011, my first ever EuroPython, and dedication was a great way for me to be connected also with the Python community in general. For example, I attended my first Django-related talks, and it was a very good way to start
02:26
with this technology, and I'm still using it. Another step I did in my career to be a better Python contributor was starting getting involved. And it's not often at the beginning, because I was afraid, I was not able to give something
02:45
back. But in this occasion, I was in my first DjangoCon Europe in 2017, and I found out that a lot of people younger than me or newcomers were volunteering in that conference, tried
03:02
to give a talk there, and some things switched off for me, and I decided to be more involved in the community. And so I started directly that year. The first thing I did was joining a sprint. In this picture, I'm in the sprints, the Django sprints in 2017 with two core contributors
03:25
of the Django, Marcus and Mark, and it was a very good way to go far from my comfort zone and start talking with very experienced core developers. It's very great how you can find a core developer of your technology you use every day in conferences
03:46
like that. It's impossible to do the same in your company. Also, if you are working in, I don't know, very big corporates, in that type of conference, you find many core contributors of the technology you use, and if you talk with them, they
04:03
are very open to give suggestions to you or criticize your work, which is the best way to improve. So in that day, I proposed a new feature to Django, and they helped me to understand how I was working the triage part of the issues, how to create a pull request, and
04:23
I discovered that the code I was able to contribute in Django was a lot, but a bit different for what I did every day in my daily job. So the next things I did after the sprinting, after learning about how to contribute back
04:41
was actually contributing in the Django and Django code, and I discovered that something I used in my daily job was a crypto station with Django Postgres was something useful for all the other people in the Django ecosystem, and so I created a pull request, I followed all the steps, and after weeks of reviews and corrections, I was able to
05:10
join my first big feature in Django 2.0, and that was a very good moment for me, like a developer, I understood that I was able to contribute something to others, and
05:24
this step gave me the confidence to continue to contribute to the project and also other projects, so it was a very good way to be a contributor. But another thing I found very useful to improve as a developer and also a contributor
05:41
was speaking at a conference, and in the same version of Django I said before, 2.0, I found a new feature that was the full text search, and I used it in a project at the job, and I decided to speak about the technology, not the project itself, but the technology, and this is the first selfie when I started taking selfies in conferences
06:07
in 2017, it's in the PyCon Italia conference, my preferred conference, now I'm part of it, and this is the T-shirt of this year, and from that moment I found that working
06:24
on your slide for your talks forced yourself to clarify some tools about technology you want to speak about, and after giving the talk I was way more prepared on the topic than only solving a problem in my daily job.
06:43
After that I used a lot of what I discovered studying for the slides in the next project, so it was very, very useful. Another thing I found attending the conferences in the DjangoCon and EuroPython was a new
07:00
thing, I never heard about it, it was the Django Girls program, so I decided to coach in that workshop, and this is a picture of me coaching for the first time in Django Girls in 2017 in Rimini, and there was the EuroPython in Rimini and it was full of girls
07:22
and other people from all over Europe, and coaching other people was very interesting, forced myself to try to explain in a simple way very complex thoughts, and I was forced to clarify in my mind these tools before telling to other, especially newcomers, and I improved
07:46
a lot from the point of view of coaching other people, and I used some things I learned that day also in my daily job with colleagues, with newcomers and other people that arrived, and then I continued coaching in other workshops.
08:09
After joining a sprint, I decided in EuroPython to organize in one. There was an open space to propose a sprint topic and decided to propose to work on the
08:20
Django website, and this is a picture of the day, I proposed in the whiteboard the topic of working on the website of Django and a lot of people, with my surprise, showing up, and was a lot of very great developers from a lot of parts in Europe,
08:41
and we worked together to replace the search function in the Django website, removing an external engine and using only Django itself. It was a very great way to coordinate the work, we had to do some experiments to set up the environment and to see what was happening under the hood,
09:05
and it was very, very good to cooperate with people that was more skilled than me, but I learned a lot from them, so sprints every time is a very good way to improve
09:20
and at the same time contributing back to Python. So after that experience, we was able to only create a proof of concept of the technology, but in the next months, I worked to actually propose to the Django developer
09:41
mailing list a pull request to remove the time we were using Elastic, but we already had in Django itself a search function, so we was able to simplify our stack in our website. And this is the search in Django today.
10:02
After a lot of new pull requests I did from that day, we added multiple languages, we added a lot of functionalities. For example, here we have the same page in French with highlighting and with some web type searching with soap removal and so on.
10:26
Doing all these things, I decided to create a blog because I was following a lot of people, reading their article to learn, and so I decided that I was in the moment to write about what I was doing,
10:42
and I created my blog. It's not the best blog you can find, I'm not an expert, but these things forced myself to also go far from my comfort zone of backend developer and be connected with the frontend part, for example,
11:02
and also to writing how to and article about technical stuff was a way to improve a lot as a technical writer, and then was able also to contribute back in the Django documentation and in the documentation in the web services we developed at work, so it was a very good opportunity to write more and crystallize ideas
11:26
and to share then also these ideas. And that is what I did after writing code. I tried to sharing in social media and to receive feedback and also news aggregator, like Hacker News,
11:45
was a jump into the empty, and I received a lot of comments. For some hour, my article went trending, and I received more criticism than appreciation,
12:02
but it was a very good way to understand what I was doing bad and improving. If you're brave enough, I suggest you to receive criticism from people because it's a very good and effective way to find your error or your issue, and you can improve a lot.
12:24
And during all this, here I used a lot some websites. Before chatgpt, I used Stack Overflow a lot, but at the moment I decided to don't use Stack Overflow for finding answers,
12:41
but I started using Stack Overflow to search for questions. It was a very good way to deep down in a subject, in a topic. For example, I wanted to learn more about subquery with Django, and I used the tags to find the question
13:01
without reading the answer from other people, because usually it was very old answer or not so correct answer. I forced myself to write down some solution, and every time I did that, I learned a lot of things because it's something you can find very easily, questions.
13:22
You can find today in chatgpt, you can find easily a lot of solution, but it's more difficult to find interesting question about the topic. I used, after that, I used a lot my answerware. I already gave on Stack Overflow, on my daily job, or in the Django contribution back, so it's a very,
13:44
I think I suggest you improve. Another thing I did was caring about also my local community. I'm part of the Python Italian Association, and we have also a group of Django Italian contributors, but at the time we don't have translation for the documentation,
14:04
like for Python documentation. So we decided to stay together and translate a certain amount of words you need to be published on the Django website. It was a very funny moment when we reached the amount,
14:25
and Claude was responsible for the translation in Django, and we also, Carton and Mariusz at the end merged the translation. And the experience teach me how to clarify some concept.
14:41
I read every time in English, but I misunderstood. So translating my original languages clarified me a lot of concept, and was a very great experience. I also wait to lower the barrier for newcomers in Italian that don't talk English.
15:03
Related to languages is something I tried to increase was the diversity of the community. I tried to participate in international conferences, and my first one was abroad was in Copenhagen, Django Europe.
15:21
And being part of this type of conference, far from your original country, it was a very effective way to appreciate diversity, appreciate what people can bring to the community, and the different way they contribute to the community.
15:41
I learned a lot new things, and different way to see how the community is used and appreciated. Another thing I did at a certain point was getting inspired by the people that before me created this community,
16:05
starting with Guido, and I came back to the origin to see what was their goal in creating Python and creating some project, and it clarified me a lot how the community works,
16:21
and what was worth, and why it was worth to being part of it. I read a lot of articles and books about founders in the community, and it inspired me to be more and more involved. So I decided to do the same. There was a moment during the pandemic
16:44
with no conference in person, with no connection with other people in person, and this is my first conference after the pandemic. I was in Berlin, in Python DE, and I met, after two years, friends from the Django community, Marcus and Mark,
17:02
and we talked about ideas we had during this period of isolation, and they suggested to me to share these ideas with other people, because I had so few times to contribute in the code, and a lot of ideas, things to do, and I did it, and with their suggestion,
17:22
other people in the community contributed to the code, based on my idea, and it was a way to inspire them to do something they haven't thought about it. As I said, I've been part of a Paco Italia conference,
17:41
and in 2019, I decided to join the team as an organizer, and with others, we traveled to another conference to promote our conference. Here I'm in Berlin with Ernesto Valeria and Alessia, trying to promote the conference,
18:02
and this is from the last conference, one hour before all the conference started, trying to organize with other volunteers. It's a very great thing to do, being part of a conference, the organization, you can be connected with so many people.
18:23
It is an incredible experience. And then I came back closer to home. I live in a small city, Pescara in Italy. There is no conferences and no meetup at all, and so I decided to bring there something I liked a lot,
18:41
like the Jungle Girls workshop, so we organized for the first time a workshop, and it was a very effective way to show young people, and especially girls, that they can be part of the tech community, but also was a way to create a small group of Python developers,
19:01
and from that point, we started a new local community. We created the PyCon Pescara meetup. This is a picture from one year ago in a pub in Pescara. We started with the PyBeer, only chatting about Python and our passion, and we discovered that there was other people close to you
19:22
that was using Python, but you didn't know them, so we created a connection, and starting from that point, I started to iterate all over the things I already showed you because I started to organize talks,
19:42
organize moments to networking. I gave a talk in my local community, too, and we organized some outdoor moments to be connected, and we reached some goal together because talking about Python all day here is not the best, so especially in the summer, you want to do something different.
20:02
We cooked together, and we also joined other community. We discovered there was other community. In this case, it was the DevFest from GDG local meetup, and we organized a workshop inside about Python and one inside DevFest. We also gave a talk in the local university about Python, of course,
20:25
and we organized dinner with other community to create connection, and we continued to organizing beer and talk
20:41
only to be one month together with other people. If you are interested in this community, maybe you are not living in Pescado, but you can find a lot of information what we do, and maybe you can try to reply to your local town or you can join a local community if you live in a big city
21:02
that already have a local community like that, and other than that, I hope that you can be inspired from what I show you. It's only my experience, but maybe it can be a starting point for you. There are many other things you can do to be a Python contributor,
21:20
and I share the link of this slide at the end, and you can use it and you can share it because it's sensitive with credit comments, and I want to thank my company, 20DAB. We do a lot of Python code. We do a lot of contribution to this conference.
21:41
We are sponsoring this conference and other conference, and we share a lot of open source software, and to find out about my slides and my article and other things I said to you, you can also use my QR code. You already find my blog, the slides and other information.
22:03
Thank you. Last thing before question. A picture.
22:22
You can say bye. Thank you so much, Paolo, for your talk. Are there any questions in the room?
22:47
Hello. So a question about being a code contributor. How were you initially inspired to do it, and did you just went to the Django main repo and just said, oh, I can solve this problem and just solve it, or did you have someone taught you mentoring
23:02
on how you could contribute? You met someone from the main maintainers of Django. Thank you. Yeah, as I said before, I was afraid at the beginning that I was not able to contribute back, so I waited a lot of time before doing that. But then I found out during the sprints and with other tools,
23:24
so reading other articles from other developers, that there was an issue tracker with some tags on it, and the starting point today, I can suggest to you, is going there, finding the tag for an issue for newcomers
23:41
if you don't think you are able to solve more complex things, or if you already have more expert in some part of the code, like ORM or templating other pieces of the code base, you can filter this issue and find that if there is someone
24:02
working on that, it's interesting for you to work on that issue, and if there is no issue, interesting for you, you can open new one and propose to work on that. And this is the starting point, but I will suggest you to try testing yourself in already opening the issue.
24:22
There is a very simple one for people that want to start, and it's an effective way to start.
24:51
Thank you for the talk. I wanted to ask, how do you manage your open source experience with your daily work during your past years?
25:05
Yeah, it helped me a lot during the daily job, being an open source contributor, because I already know a lot of people from the framework and the packages I use every day.
25:21
So sometimes I was able to tag people on social, I'd be connected with, to ask them for a solution, or to talk about something I was experiencing during a daily job. And more than that, contributing to the code base of the framework I use to build projects gave me a confidence,
25:45
far from the confidence you can find only using the tools, because contributing back, you are forced to go down, and see what the code are doing at the lower level.
26:02
And now I can say that I'm less afraid to use the tool, because I know how many great engineers worked on that in the last 15 years, and they did a very great job. I learned also from the solution they did in the code,
26:24
the best practice they used, and how they tested the code, and why they choose a partner instead of another. So it helped me in many ways.
26:42
Any more questions? Thank you for the talk. My question is, what advice would you give to someone who is looking to contribute into the core of Python, like Python core development?
27:00
Sorry, can you repeat lower? Like, what advice would you give to someone who is looking to contribute into core Python development? Okay, in the Python core. It's something I tried, I failed, but only because I opened up the issue, trying to solve something I found in the Django codes
27:21
was not a very interesting issue, and they examined my proposal, and they voted against it. A lot of people was pro this change, other were against, but also in that case, I learned how the triaging phase work in the Python core.
27:44
I started cloning the C Python repo, and I learned how to contribute in the future. So that was not a failure, and the global sense was an improvement for me to understand how things work, and now I have more ideas.
28:02
I understood that they replied to you, they give you suggestions, and there is also a good explanation why they didn't want to match that proposal. So I think it's the same as I said before for Django. You go in the issue tracker and find something interesting for you
28:20
and try to contribute back. You can start also with documentation. It's a way to learn how the GitHub request work or other services they use to contribute in the code.
28:43
I think this is time. So thank you again for your talk. Thank you. Thank you.