Google Summer of Code 2017 Wrap up

This summer, in the year 2017, I got an opportunity to work on Plone, a large-scale open source project through Google Summer of Code 2017
Google Summer of Code 2017 Wrap up

This summer, in the year 2017, I got an opportunity to work on a large-scale open source project through Google Summer of Code (GSoC). It is the first time I’ve worked on an open source project at this magnitude and contributed to the core of the project. This is the first time I’ve entered Google Summer of Code and I’ve of met a number of brilliant individuals in the field. I can say without a doubt that it was a fun and worthwhile experience. However, this blog is not about my personal experience during GSoC but a summary of my project, tasks accomplished and outstanding tasks.

Firstly, Google Summer of Code is a global internship program that focuses on introducing students to open source software development. Students work on a three months programming project with an open source organization during their break from university. For me, I am working with the Plone Foundation.

The Organisation

Plone is a free and open source content management system built on top of the Zope application server. It is written mostly in Python. Plone is positioned as an “Enterprise CMS” and is most commonly used for intranets and as part of the web presence of large organizations.

My Project – Improving the Plone Theme Editor

Plone by default comes with a theme editor, whereby designers and editors of themes can customize the look and feel of Plone directly through the web (TTW) without having to reload or restart the application server. My project for GSoC aims to improve the user experience of the Plone Theme Editor by making it easier for designers and theme editors to work with. This involves making the experience more like an online IDE, similar to Cloud 9 IDE (C9).

Objectives and Accomplishments

In my proposal for GSoC, I stated the timeline and the list of tasks to be completed, as seen in the table below.

Timeline Task Status
June 1st to June 18th Implement the searching for files and text within files Completed
June  18th to June 26th Implement the drag and drop feature for uploading and moving files and folders Completed
June 27th to July 8th Implement the new look of the theme editor Completed for features implemented thus far. 
July 9th to July  20th Implement the importing and exporting of rapido apps. Partially Completed – Rapido apps can be imported and exported from other themes on the site but not from or to an external rapido store.
July 21st to August 15th Build automated tests and documentation Completed for the code that has been committed thus far.

In addition to the tasks mentioned above, I’ve also added a couple of other enhancements such as:

  • Shortcut keys for creating files and folders, searching for files and text within files, and refreshing the file tree
  • Context menu to delete, rename, upload and create new files and folders.

 

Challenges and Unaccomplished Objectives

When I started this project, I thought I had to do mostly JavaScript coding to little to no python coding, as it turned out, that assumption was almost on point. However, the majority of my time was not spent on coding but managing dependencies and integrating the various packages that are associated with the plone.app.theming package during testing and development.  There was a constant back and forth updating the following four packages to ensure that the changes are ported to both Plone 5.0 and 5.1:

Even though, I updated the rapido.plone to support the migration of rapido apps between local themes, I did not complete the rapido external store feature to import and export rapido apps from and to an external repository similar to bower. Furthermore, I did not add all the changes I wanted to the look and feel of the Theme Editor.

Screenshots

The screenshot below is how the Theme Editor looked before any of the changes during GSoC.

Plone Theme Editor before 2017

Contribution Activity

Currently, on 24th of August, there are 6 pull requests open and 7 closed. The list below contains the link for each pull request per package.

PULL REQUESTS FOR PLONE.MOCKUP

PULL REQUESTS FOR PRODUCTS.CMFPLONE

PULL REQUESTS FOR PLONE.APP.UPGRADE

PULL REQUESTS FOR PLONE.RESOURCEEDITOR

PULL REQUESTS FOR RAPIDO.PLONE

I have not yet created a pull request for plone.app.theming due to the fact that the open pull requests above need to be merged before I can release the new version of the Theme Editor.

Evaluation of GSoC and Mentors

My mentors for GSoC are quite knowledgeable and very supportive. I’m glad that I was given Asko Soukka and David Bain to guide me. David is in close proximity; therefore, I can call him during the day. Asko is great. Even though Asko lives in Finland and there’s a great time zone difference, he’s quite responsive. He tends to know all the directions I should go to. It almost seems like my project is something he already conceived to do but didn’t get around to do it. The only issue I have with the development cycle is how components are tightly integrated. It feels like someone might get lost without prior knowledge. Luckily for me, Asko and David are geniuses, and they’ve told me on few occasions that I must update package B, C, and D before I can update A. This saved me few hours of work since I would have to debug and trace co-dependencies from both frontend and backend. The Plone community is quite supportive as well. Someone is almost always on standby to answer someone’s question. I truly like the atmosphere.

I have learned a lot during Google Summer of Code 2017  season and hoping I will continue to strive and learn more as I continue to work on improving Plone’s Theme Editor outside of GSoC. Sadly, I will not be able to do GSoC 2018 since this is my final year at the University of the West Indies, Mona campus. However, I will definitely encourage others to participate in the upcoming GSoC to gain some insight on developing open source projects. Lastly, I thank my mentors, Asko and David, the Plone Foundation and Google for all the support they’ve given me.

Go Back
Menu
×