We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Many ways to be a Python contributor

00:00

Formal Metadata

Title
Many ways to be a Python contributor
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
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
**Python** is an increasingly used language and the number of potential contributors is growing increasingly. **Newcomers** to the community have a lot of documentation to guide them to transform from mere users to contributors. There are many ways to **contribute** to Python or one of its packages or frameworks, and we will try to see some of them together. In this talk, new Python developers will discover new ways to get involved in the community, and **community members** will get ideas for getting new people involved.
State diagramSine2 (number)SoftwareComputer animationLecture/ConferenceMeeting/Interview
Local ringSelf-organizationAssociative propertyProjective planeSoftwareComputer animation
Multiplication signCodePoint (geometry)Universe (mathematics)Computer animationLecture/Conference
Design of experimentsMereologyUniform resource locatorComputer animation
Hand fanRouter (computing)Computer animationLecture/Conference
Time zoneCore dumpProcess (computing)CodeMereologyType theoryDifferent (Kate Ryan album)Software developerSoftware bugComputer animationMeeting/Interview
CodeExtension (kinesiology)Function (mathematics)Computer fileCryptographyInformation securityGroup actionCodeCryptographyMoment (mathematics)Process (computing)Projective planeConfidence intervalSoftware developerGoodness of fitWorkstation <Musikinstrument>Computer animation
Projective planeSoftware developerProcess (computing)Revision controlComputer animation
State transition systemEstimationMoment (mathematics)Slide ruleProjective planeProcess (computing)MereologyMeeting/Interview
Correlation and dependenceComputer programmingMultiplication signProcess (computing)View (database)Point (geometry)Forcing (mathematics)Computer animation
WebsiteSpacetimeWhiteboardWebsiteFunctional (mathematics)MereologySoftware developerMultiplication signIntegrated development environmentComputer animation
WebsiteFunctional (mathematics)Multiplication signElectronic mailing listSoftware developerEmailProof theoryComputer animation
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
Software developerOpen sourceCodeBlogBlogMoment (mathematics)Web serviceDebuggerWeb 2.0Time zoneExpert systemMereologySoftware developerFront and back endsComputer animation
Systems engineeringLoginThread (computing)E-textQuery languageElasticity (physics)Hacker (term)Point (geometry)CodeFeedbackHypermediaHydraulic jumpError messageComputer animation
Buffer overflowWebsiteStack (abstract data type)Moment (mathematics)Online chatComputer animation
Object (grammar)RotationDigital filterProduct (business)Finitary relationInterior (topology)Endliche ModelltheorieStack (abstract data type)Multiplication signBuffer overflowComputer animation
Computer fileTranslation (relic)MereologyMultiplication signGroup actionAssociative propertyLocal ringMoment (mathematics)WebsiteVapor barrierWordFormal languageComputer animation
Formal languageMereologyDifferent (Kate Ryan album)Type theoryComputer animation
Point (geometry)MereologyProjective planeComputer animationMeeting/Interview
System of linear equationsConnected spaceMoment (mathematics)CodeReliefMultiplication signFrequencyMereologyComputer animationMeeting/Interview
MereologyComputer animationMeeting/Interview
Network switching subsystemTrigonometric functionsSelf-organizationMereologyComputer animation
Hand fanMereologyGroup actionMultiplication signPoint (geometry)Computer animation
Successive over-relaxationUniform boundedness principleComputer animation
Point (geometry)Connected spaceMoment (mathematics)SoftwareComputer animationLecture/ConferenceMeeting/Interview
UsabilityDifferent (Kate Ryan album)CASE <Informatik>Local ringComputer animation
Local ringUniverse (mathematics)Connected spaceMeeting/InterviewComputer animation
Addressing modeCase moddingLocal ringInformationPoint (geometry)Link (knot theory)Computer animation
Slide ruleLink (knot theory)Sensitivity analysisSoftwareCodeOpen sourceCodeComputer animation
Conservation of energyData Encryption StandardDesign of experimentsBit rateInformationSlide ruleQR codeBlogCodeComputer animationMeeting/InterviewLecture/Conference
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)
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
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.
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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.
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
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,
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,
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
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
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.
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.
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,
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,
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
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,
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,
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.
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,
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
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.
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,
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,
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,
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.
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.
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.
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.
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,
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,
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
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,
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,
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,
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,
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.
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,
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,
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
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,
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.
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,
and we organized dinner with other community to create connection, and we continued to organizing beer and talk
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
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,
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.
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.
Thank you. Last thing before question. A picture.
You can say bye. Thank you so much, Paolo, for your talk. Are there any questions in the room?
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
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,
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
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
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.
There is a very simple one for people that want to start, and it's an effective way to start.
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?
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.
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,
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.
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,
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.
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?
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
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.
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.
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
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.
I think this is time. So thank you again for your talk. Thank you. Thank you.