Final Week of Hacktoberfest

For the final week of Hacktober, I contributed to Quaco, a Content Management System, and continued my contribution to Pokemon Showdown from last week.

Quaco

As I would be working on 2 issues this week, I chose a simple task for my new pull request: editing a readme. 

The Issue

Section of the original readme
Quaco is a Content Management System for building webpages, similar to Wordpress. The issue involved fixing spelling and grammatical errors in the readme, but I also tried to make the overall structure of their readme more consistent.

The Fix

Edited version of the readme

I looked over the readme and fixed any spelling or grammatical errors I could find. In addition to this, I changed the format of the first 5 points to all be questions and changed the points under "10 reasons why Quaco might interest you" to be more about Quacos features rather than their ideals.

Pokemon Showdown Client

The larger portion of my contributions this week was towards working on my last pull request to the Pokemon Showdown Client.

The Issue

Popup window after clicking username
On the 3rd week of Hacktoberfest, I filed an issue about making it easier to challenge other user's through the Pokemon Showdown Client. I then added a feature where a Challenge/Chat/Options window would pop up after clicking the username in the header of the chat. However, Zarel, the owner of the project, requested that I make the Challenge and Options buttons part of the chat window itself.

The Fix

Challenge and Options buttons in header
At first, I placed the Challenge and Options buttons in the header of the chat window, and hid them when the window was minimized. This made it so that the user can access the buttons no matter how many chat messages there were. However, Zarel suggested that the buttons be in the chat log itself, where scrolling down a chat would hide the buttons, in order to leave more room for chat messages without enlarging the window.

Buttons placed at top of chat log
I thought it was an odd design choice to have the buttons at the top of a chat log, where the user would have to scroll all the way up to find them after receiving too many messages, and suggested having a minimize button specific to the Challenge/Options buttons to hide the buttons when not needed. However, as Zarel was the owner of the project, I decided to go along with his suggestion.

Zarel's comments on my suggestions
After figuring out where to place the buttons to have them behave like a chat message, I had to figure how to call the same functions as the popup window without creating one. This was difficult, as the popup functions were defined in a different class, which had values that the main menu class didn't have access to. Eventually I figured out I how to export the classes in order to access it elsewhere.. From there, I could follow the same structure as the functions in the popup class, using values accessible from the main menu class in order to pass the values for which player was being challenged or having options edited.

Exporting UserOptionsPopup and UserOptions classes
Classes for challenge and User Options buttons
I also realized that the functions for sending challenges and creating a popup for user options were available globally, which made the task a little easier.

After making sure everything was working, I created a branch containing the version with the buttons in the header in case Zarel changes his mind, then I pushed my changes to another branch before creating a pull request.

Issues and Lessons

During my time working on the Pokemon Showdown Client, I experienced how project owners have the last say on how an issue is solved, and it is up to them whether or not your idea gets taken. Also, after having to read over Zarel's code, I have more experience with figuring out how other people's code works.

Conclusion of Hacktoberfest


This Hacktoberfest, I set out with the goals of getting involved in project I'm interested or invested in, and learning more about how to use git.

Over the course of my 4 pull requests, I learned a lot about using git and how to resolve issues such as conflict purely through git commands. I also learned how to save versions of my code in separate branches and how to revert to the original version without having to clone again.

As for my second goal, I only managed to achieve it while working on my third pull request with the Pokemon Showdown Client, as its a program I use somewhat often, and it was a good experience fixing an issue I found myself while using it. After looking through the repos for software I use, I realized its difficult to find issues within the scope of my skills in popular projects, but its rewarding when you finally find something you can contribute to.

However, even though I may not have been as invested with the other project I contributed to, I found the overall experience very interesting. Working with people on their other projects was a good experience, and it was fun finding projects that seemed interesting that I had never heard of or learning that something I use was open source while browsing for issues.


Comments

Popular posts from this blog

Adding 'Favorite' System to Pokemon Showdown: External Pull Request and Final Week of OSD600

External Pull Request and Creating a Spam Checker for Telescope

Reading Level in Telescope: Internal Contribution