It’s been around 20 days that I have been working on an Outreachy internship project with The Fedora Project. I have been working on some of the pending issues, miscellaneous bugs and cleaning up code in Fedora Happiness Packets. This month has been quite fun, which includes great learning through the entire process

Phase 1 at a Glance

We have completed phase 1, and here is the list of things that I have worked on in this month:

  1. Disable sending emails to Sender themselves. There is no validation in the front-end/back-end that stops a user to send a Happiness Packet to themselves. To block happiness packet to be sent to themselves, a filter was added to check if the recipient email is the same as that of the sender. The included normalization of emails using email_normalize.
  2. Delete social media buttons in Confirmation Page. Redundant social media buttons appeared whenever a happiness packet is sent to a user, at the bottom. Buttons were removed, ensuring they only appear in the footer.
  3. Incorporate Fedmenu overlay on all pages for Local Development. Fedmenu integration unified the applications in Fedora infrastructure. Adding the menu overlay to fedora-happiness-packets helped integrate our app into the Fedora ecosystem and created a sense of connectedness to other Fedora applications. How it was implemented in Bodhi helped a lot while integrating into Fedora Happiness Packet.
  4. Increase font-size of Error Message. The error message size was not in sync with the font-size of the rest of the content. So, it was adjusted to an optimum size, making prior style changes in the error message.
  5. Improve side navigation design. The elements in the navigation bar of Fedora Happiness Packet was very cluttering, making it look bulgy and not representable. So, static items in the nav bar were removed, and elements were renamed to make them no longer than 15 characters. It also includes merging of archive and search page.

Learning through the Process

During phase 1, I discovered many things — most important was normalization of email addresses, the idea behind it, how it is accomplished, and where to implement it. Normalization aims to prevent multiple sign-ups using the same email address but using different variation. This StackOverflow question helped me to have an insight and directed the way of implementation in Django application.

Navigation also plays a crucial role in website design. There are certain mistakes which are not marked during design, that can be avoided. This article discusses some common five navigation mistakes that need attention.

Merging two functional pages can sometimes be difficult and might require significant changes to be done at both back-end and front-end. A good solution is to incorporate elements which allow redirection instead of making substantial changes. This will lead to less coupling and lessen the chances of code failure.


I was stuck while implementing search function in archive page without breaking the rest of the code. It was more of confusion since I did not know the proper methods to implement in Django, and also it required in-depth analysis of the flow of control and more debugging. I tried several ways, alongside testing their implementation, among which one got successful. During the whole process, my mentor also helped me in debugging. I tried surfing internet regarding this issue, though could not find solution that can directly be implemented.

End note

I feel when someone is stuck, before seeking out for help directly, one should try possible solutions, that he/she thinks of. This gives a chance for self-growth while learning through the process. But there should be a balance between stretching it for long and seeking help. It’s always good to keep your mentor in the loop and let them know about your current scenarios

Feel free to send feedback at