Last month, I realized late that October was hacktoberfest month!
This online event is a month-long celebration (October 1-31) of open source software run in partnership with different software companies, with a focus on encouraging contributions to open source projects.
While I participated in the 2019 edition as a contributor, with @kleph & @minitux, this year I wanted to involve myself as a maintainer around the fpdf2 Python project, a minimalist PDF creation library.
In this blog post I simply want to share my personal experience with this event.
The first tier of October had already passed when I realized hacktoberfest had started,
so I quickly took a few actions to ensure the
fpdf2 project was ready to receive contributions from newcomers:
- I skimmed through the event rules, and ensured the repo had the
- I enabled discussions on the GitHub project, in hope it would allow for more casual chats with contributors (not a massive success)
- I tagged some
fpdf2GitHub issues with the
hacktoberfestlabel, to make it easy for curious developers to spot issues they could contribute to. I also tried to redact those issues in a way that would make them accessible and interesting to work on.
- I created 3 extra
good first issues, aimed at new contributors: #256, #257 & #258. In the end I implemented one myself because it was fun 😁
- post-hacktoberfest, I also took sometime to write some issue / PR templates, so that when newcomers attempt to submit a bug report, a feature request, a PR or just ask a question, they are welcome with some nice explanatory text
A tutorial available in 8 languages!
What happened is that, mid-October, a contributor suggested to translate the tutorial in Portugese. I though the idea was great and totally fitted with the context of the hacktoberfest, so I opened issue #267 to encourage other translations.
This was well received as this idea motivated 6 people to contribute a translation, making the tutorial available in 8 languages total! Link to Tutorial.
Results & personal feedback
- more than 50 issues & PRs have been created since October 1st, on the
- v2.4.6 of
fpdf2has been released, and it is the biggest release since I joined the project: v2.4.6 ChangeLog
fpdf2reached 300 stars ⭐ on GitHub! ✨ 🥳 🎉 🎈 🥂
- it seems like the peak downloads per day almost doubled since September: Pepy stats, PypiStats
A huge THANKS! to all the people who made contributions to
fpdf2 since October 1st:
- Georg Mischler who made several major refactoring, like introducing a FlexTemplate class, and FPDF.local_context()
- @portfedh who added section 5 & 6 to the tutorial, just in time before the big wave of hacktoberfest translations!
- @tabarnhack who implemented the new arc() and solid_arc() methods
- Mridul Birla who contributed the Hindi translation of the tutorial
- @digidigital who contributed the German translation of the tutorial
- @Xit who contributed the Italian translation of the tutorial
- Alexander Burchenko who contributed the Russian translation of the tutorial
- André Assunção who contributed the Portuguese translation of the tutorial
- Quentin Brault who contributed the French translation of the tutorial
- @bettman-latin who implemented the new regular_polygon() method
- Paula Campigotto who reported a tricky bug with automated page breaks for two-columns documents, and also submitted a PR to fix it
It was really an amazing experience for me, and I had this great feeling of being part of some wave of positive human energy!
Notable new features in fpdf2 v2.4.6
Temporary changes to graphics state variables are now possible using
with pdf.local_context(): ... Docstring.
New drawing methods have also been introduced:
FPDF.solid_arcto draw arcs. A solid arc combines an arc and a triangle to form a pie slice: ...
- new documentation on how to display equations, using Google Charts or
new sections have been added to the tutorial:
the whole documentation can now be downloaded as a PDF: fpdf2-manual.pdf
While I had a great time during this Hacktoberfest, I think that for the next open source / libre software contribution event, I'll try to pick one where I can be physically present.
I simply would have loved chat with the contributors at the end of the event! To get to know a little who they are and what are their reasons for contributing.
Happy coding to you all!