This is part of a recurring series between May – August 2019 on the Community Blog about Fedora Happiness Packets. These posts are published as part of a series of prompts from the Outreachy program.

From The theme for this week is “Modifying Expectations”. Outreachy mentors and interns start the internship with a specific set of project goals. However, usually those goals need to be modified, and that’s perfectly fine! Delays to projects happen. Maybe your project turned out to be more complicated than you or your mentor anticipated. Maybe you needed to learn some concepts before you could tackle project tasks. Maybe the community documention wasn’t up-to-date or was wrong. These are all perfectly valid reasons for projects to be a bit behind schedule, as long as you’ve been working full-time on the project. In fact, free and open source contributors have to deal with these kinds of issues all the time. Projects often seem simple until you start working on them. Project timelines are ususally a very optimistic view of what could happen if everything goes exactly as planned. It often doesn’t, but people still make optimistic plans. Modifying your project timeline to set more realistic goals is a skill all contributors need to learn.

Your goal for this week’s blog post is to write a report about your progress on your project. Talk about what you accomplished so far. Talk about what goals too more time than expected. The blog post should also detail what your modified goals for the second half of the internship is.

Accomplishments so far

My tasks focused on three focus areas primarily: adding back-end features, integrating Fedora Badges, and deploying the project on OpenShift. Below I list the tasks I completed in each of these areas.

Back-end Features

  1. Accessible web interface for sent and received messages: I added a user facing interface to list sent and received packets and toggle privacy options.
  2. Migrated from Python 2 to Python 3 and Django 1.11 and Django 2.0: Upgraded FHP code base from Python 2 to Python 3 and Django 1.11 to Django 2.0.
  3. WYSIWYG Editor Integration: Prior to this change, Happiness Packets could not be formatted or embed pictures. CKEditor integration enabled users to send messages with rich text embedded. It also supports embedding images via links.
  4. Auto Reload code changes: Prior to this change, for any modifications made to the code base, we have to rebuild the container for them take effect. Now any changes made to the back-end or front-end are reflected without rebuilding the containers which speeds up the development workflow by a great measure.
  5. Customize Admin Interface and give admin privileges: Added functionality to give admin access to users from the configuration file and customized the interface to make it more accessible.

Fedora Badges Integration

  1. Migrated from Fedmsg to Fedora-Messaging: Initially Fedmsg was set up to send messages to the Bus so that Fedora Badges are awarded. I migrated the entire application to Fedora-Messaging. I previously wrote a detailed blog post about this.
  2. PyPI package for message schema: Created a python package for the message schema for the outgoing messages on the Bus.
  3. RPM package for the message schema: The RPM packaging was definitely a task that I did not see extending this long yet it took quite a handful of iterations to get just right and finally passed the review.
  4. YAML rules for badges: Wrote the YAML rules for badges to award to senders and recipients when a Happiness Packet is sent.
  5. Improvements to Fedora Messaging: I made sure to contribute to Fedora Messaging whenever I came across a documentation addition that might be helpful or a bug.

OpenShift Deployment

Deployed a sample Django app to OpenShift to understand the workings of Minishift and OpenShift. Currently working on deploying the application to OpenShift locally.

What I learned so far

This phase was more of a learning phase for me. It saw me learning technologies that were brand new to me. I learned a lot about how RPM packaging works. I learned how the YAML rules are used to award badges. The biggest of all was learning about OpenShift and its workings.

Challenges from timeline

The phase two of the internship turned out to be a challenging one for me as I was working with technology entirely new to me and hence was taking time for me to figure it out. The OpenShift cluster configuration took a long time which I hadn’t anticipated. The bug turned out to be a nasty one that was even proving to be challenging to find help for. Another challenge was figuring out the real error behind the RPM package. Despite these two taking some amount of time to figure out, it was a truly empowering moment when I actually figured out the two issues.

What’s next for the internship

The main goal for the next half of the internship is deploying the project locally to Minishift and then in production on OpenShift. This will help see in effect the badges for Fedora Happiness Packet in action! I will also be preparing for the project showcase at the annual contributor summit, Flock to Fedora. As a stretch goal I hope to integrate the filter methods for the search option in archive.

Tips for future interns

In my case, had I taken in account the time it takes to familiarize one with new technology and keeping enough breathing space for unseen bugs in that process, it would have helped me frame my timeline in a more accurate manner. It also happens that some tasks have more working steps than you imagine. Leaving out room for the same helps keep up with the timeline.

That sums up my experience for the second phase of the internship. Hopefully the next phase turns out to be a new challenging and exciting one!