Google Summer of Code 2021 -Final Work Summary

This is a blog summarizing the work done by me as a part of Google summer of code 2022 under Plone foundation.

Bhuvanrj
6 min readSep 12, 2022

Project Description:

Title: Recycle Bin

Size: Large

Organization: Plone Foundation

Mentor: Mike Metcalfe

My Github Profile: BHUVAN-RJ

What is Plone?

Plone is a free and open source content management system (CMS) built on top of the Zope application server. Plone is positioned as an enterprise CMS and is commonly used for intranets and as part of the web presence of large organizations

My Journey:

Community bonding period: The first couple of weeks were community bonding period, I was very excited that my proposal was selected. GSoC was a dream come true for me. The first week I introduced myself to the community and my mentor. I still remember the first meet I had with my mentor Mike, Being an Indian I used to call him sir, he told me not to call him sir but call him Mike. He introduced me to plone and gave the gist of the project. He emphasised to build a backend completely first and then move on to the frontend. It was a large project and there was a lot to do so we had to utilize time properly.

Week 1: I spent the first week doing some research on already available add-ons for plone that worked like recycle bin. Using the information collected we created a survey to get feedback from the community. We wanted to know whether the community wanted a new integrated recycle bin or an add-on that can be installed whenever needed. We wanted to find the best was of building a Recycle bin.

Week 2: As we were waiting for the community to fill in their responses, me and my mentor Mike were discussing about potential add-on that we might refer to build our recycle bin. Mike also suggested that we update an existing add-on to support plone 6.

Week 3: We didn’t get as many responses as expected, so Mike reached out and told the community to respond. Then the responses started flooding. We got some great insights to the process of developing add-ons from some of the best plone developers.

Week 4: This week we were waiting for some more responses, we reached out to the actual developers of the add-ons. I asked them about the process of development , the difficulties they faced while developing their product and the challenges. Some of the developers took time to respond to my queries but one of them didn’t respond. The problem was, we were planning to update the product build by the guy who didn’t respond. We needed his insights. The developers who did respond had a lot to tell about development process. This really helped, not at the time but later in the development process.

Week 5: We had sufficient responses and judging by the responses we thought of updating an existing product(add-on) called ftw.trash. It was backed by an organization called 4teamwork, and the codebase was pretty up to date. We decided that this add-on was the best on to work on and make it plone 6 compatible. I spent the whole week trying to setup my work environment as I couldn’t get plone to run on my M1 mac.

Week 6: Switched to ubuntu on a windows machine. Again there were a lot of issues that didn’t allow me to run plone even on ubuntu. So my mentor Mike went through each error one by one and the community managed to get my plone up and running by the end of the week. That was the first time I ran plone. I created a simple website and actually got to see how powerful plone was for the first time. I explored plone further and got to know how add-ons work on plone, so installed ftw.trash on my plone 5 instance and saw how it works. I also went through the codebase and tried to understand how the code actually worked. I actually understood some of it. ftw.trash actually doesn’t delete the deleted items but it just changes the workflow of the deleted item and makes it visible only in the trash folder and invisible to the rest.

Week 7: This was the week I actually started to work on the code of ftw.trash. I forked the repo from 4teamwork, created a new branch called python3 and updated the code from python2 to python3 as python2 is deprecated. The porting caused some errors so solved those errors as well. When we tried to run the new python3 ftw.trash, we found out that it has some dependencies on collective.deletepermission and ftw.profilehook. Forked copies of these two repos as well and created a new branch called python3. Updated these to python3 as well and pushed the changes to my forked repo.

Mid-Term Evaluation: This was quite fun. I wasn’t sure whether I would pass mid-term evaluations, but my mentor passed me and as not much progress was actually made so commented me to pick up the pace.

Week 8, Week 9, Week 10: Had my college final exams so had to take time off.

Week 11: Tried the new ftw.trash on plone 6. There still were some porting errors, fixed them and got it to work correctly. Mike taught me what tests were and how to write them. He clearly showed me how tests were written on ftw.trash, then I started working on writing and updating functional and integration tests. This was the most challenging part of the whole project. Once tests were written we moved onto the last week of GSoC.

Week 12: The last week was stressful and hectic. There were still a lot of to do’s on the list and very little time. In the last week we added i18n support, that is the multilingual add-on of plone. Updated readme.rst file, MANIFEST.in file, HISTORY.txt file. Removed many of the dependencies. Removed ftw.testing dependency to plone.app.testing. Completely removed dependency to ftw.lawgiver, ftw.profilehook and ftw.upgrade. As the were no necessary for proper function of the trash can. We changed reference of GetToolByName to plone.api.portal.get_tool. Replaced extensions with setuphandlers.py. Also wrote this blog(LOL).

Summary

Getting into GSoC program was a dream come true for me, I’ve been trying to get in since my first year of college. Working under Plone foundation was a great experience, the community is very friendly, experienced and accepting. I felt like a part of a big welcoming family the very first day. My mentor Mike, what a guy!. The only reason I was able to complete this project was because of Mike. For starters he’s incredibly skilled, not only in terms of coding but overall. He pushed me to learn rather than working on the project, which I liked the most about him. He was always friendly, in every meet he would have the same energy. He never missed a meet, I myself missed a couple of meets. He was the best Mentor and I could not have asked for more.

The experience of working on a real life project was thrilling. Although I didn’t understand much at the beginning, I was able to learn a lot by the end. “It’s the journey that matters, not the destination” Quote by Gabrielle Bernstein, I enjoyed and learnt a lot in my journey that’s what matters.

List of commits made during GSoC:

Python2-Python3 port

Resolved porting errors

Removed dependency to ftw.builder and ftw.testing

updated tests

Updated trash.pt

Updated readme and history

Added missing Deutsch translations in i18n

Updated version and manifest

Removed dependency to ftw.lawgiver

changed getToolByName to api.portal.get_tool

removed dependency to ftw.upgrade

Entire commit history

Pull Requests created during GSoC :

pull request on ftw.trash :#25(not yet merged)

pull request on collective.deletepermission: #21(not yet merged)

Deliverables:

Recycle bin add-on

Future Aspects:

  1. Develop a frontend using react

Conclusion:

The GSoC journey was a blast. I enjoyed every moment of it, and will definitely apply next year as well. Although the project was big, with the help of my mentor was able to complete it on time. I am thankful to my mentor Mike, Plone foundation and GSoC for giving me such a memorable opportunity. Will always cherish this memory.

--

--