Adding 'Favorite' System to Pokemon Showdown: External Pull Request and Final Week of OSD600
Despite saying I wanted to work on a new repo for my final external pull request, after not being able to find a suitable issue, I ended up contributing to the Pokemon Showdown Client again. This time, I added an even larger feature than my last one: a 'favoriting' system that lets users quickly access users they play with frequently.
|Opened chat even though user doesn't exist|
|Code to toggle button value on the fly|
|Function to save names to local storage|
|Functions to remove and get items from the list|
With the data handling logic complete, the last step was to allow users to access the data. Initially, I couldn't decide how I wanted to display the data, but eventually I decided to add a button on the main screen under the 'Find a user' button that would bring up a window similar to the chat and news windows, which would display all the clickable usernames.
|'Favorited users' button brings up list of favorited users|
|List of favorited users; clicking brings up the user popup|
|Displaying the window|
|The refresh function clears the displayed data and inserts the modified data|
Community InteractionAs I created the pull request very last minute, it hasn't been seen by the owners of the repo yet. However, in the process of trying to find a good issue to work on, I found and filed a bug involving the desktop client crashing when a panel was hidden.
Final ThoughtsWhile the last few weeks of this course were stressful, with the open ended nature making it difficult to decide what to work on, I found this course very interesting. It was a lot easier to get involved in projects that interested me than I thought, even if some of the owners were more difficult to work with than others. It also made me realize that open source software is a much bigger industry than I had initially thought, with me finding a lot of software I never thought was open source on GitHub. As an extension to this, coming up with an idea for an improvement to a piece of software you use, then creating it and having it get implemented feels great.
On a more technical level, I learned a lot about using Git for source control and versioning: something I think will come in handy in the future, whether for work or personal projects. Finally, and I feel most importantly, it exposed me to many different programming styles and showed me solutions to problems that I've carried over to my own projects. A lot of the time, its difficult to envision the possibilities without being exposed to some of it, and I after having worked on projects with much better programmer than myself I feel like I've gotten new ideas and a new perspective on how and what I can code.