Skip to main content

DPS 909 - Release 0.4 - More Setup Troubles!

External Contribution

This week we begin release 0.4 in our Fall 2019 DPS 909 course. I am growing a bit more confident in contributing to shippable OSS now, so for my external contribution I continued by Python work from last week by submitting a PR to another Python-based web application. This time, the project was LibreOffice Crash Reporter, which aggregates crash reports from the well-known, open source office software suite, LibreOffice. I found this tool to be useful because I have used LibreOffice for quite some time on my laptop, which unfortunately did not come bundled with the full Microsoft Office package (student offers are only good for one key, and I used it on my desktop workstation already!). While LibreOffice is a reliable alternative, I can personally vouch that it is a bit more crash-prone than Microsoft Office, which made contributing to the LibreOffice Crash Reporter project all that more interesting for me.

The issue itself is simple: there is a dropdown list on the app that allows you to select which LibreOffice version you want to view crash reports for. In the current version, the options in the dropdown are unsorted, making it difficult to find a specific version. Someone requested that a change be made so that the dropdown list is sorted by version number, so I decided to tackle that feature. To do so, I had to battle through yet another gauntlet of dev environment setups, this time it was in Django and PostgreSQL. Once again, developing on a native Windows machine proved to be troublesome, as many shortcuts in setting up the dev env did not exist as they would on Unix-based systems. And also once again, Anaconda came to my rescue, providing me with the tools to create a virtual environment and to find and install the correct dependencies for this project. One particular thing I had trouble with was a mysterious executable called minidump-stackwalker. I still don't know exactly what it does, but from the research I've done, it seems it's responsible for producing compressed dump files of OS-relevant crash records. A unique binary executable of the minidump-stackwalker was required for the LibreOffice Crash Reporter project, as well as some very specific dependencies in the form of DLLs to get it to run on Windows. It was quite a detour to find these, but I did manage to stumble across this thread in the Electron repo that pointed me to everything I needed. Having done all of that, I still needed to install and set up PostgreSQL. Good thing I did have some experience in doing that from a previous project!

After getting past the hurdle of setting up the dev environment, I had to dig into the project to understand the codebase and know where to write my actual feature code. This was also quite a challenge, as I had no previous knowledge of Django, which is a full-stack framework for creating web apps in Python - much more complex than Flask, which I studied for my previous contribution! Even though the feature was as simple as producing a sorted dropdown list, just tracing the codebase to pinpoint the source of the dropdown's data tested my ability to read and follow code. It was obvious this project was still in its shallow stages, as there were no helpful contribution notes, nor was the code properly documented at all - a lot of research went into pushing such a small feature! After digging through template after template and data model after data model, I finally found the most logical place to write my data-sorting script. I then rebased my code and submitted a formal PR, which you can find here.

Before - unsorted dropdown.

After - sorted dropdown.

 Internal Contribution

I'm not quite read to describe my internal contribution to our Telescope project just yet - that will be covered next week!

Comments

Popular posts from this blog

DPS 909 - Lab 3 - Hacktoberfest, and the Very Scary Repository

It's that time of year; the mornings are getting chilly, the leaves are turning, the pumpkin spice is flowing, and open source developers are getting all worked up over something called Hacktoberfest. Not to be confused with the other, similar-sounding (though arguably no less beer-filled) celebration, Hacktoberfest is a chance for open source enthusiast to truly flex their projects and contributions. Hosted by DigitalOcean, Hacktoberfest 2019 is an event running throughout the month of October that encourages activity in the open source community. It is completely free to sign up, and participants can even link their Github accounts to use as their Hacktoberfest profiles. As you may have already guessed, I will be participating in this event as my next major milestone on my journey into the world of open source.

While the prospect of diving headfirst into such a large, open source event as a beginner may sound daunting, don't be afraid! There are no ghosts or ghouls lurking i…

DPS909 - Lab 2 - Git Practice: Simple Noter App

Once again, I am continuing my journey to become a full-fledged member of the open source community. For this small milestone, I am practicing the creation and management of a Github repo using git bash on my local machine. For test material, I have created an incredibly simple, browser-based sticky note app, appropriately called Simple Noter. For those interested, the final product is hosted on Github Pages, and can be found here: https://jerryshueh.github.io/simple-noter/

The app itself is very basic - simply type a note into the text space and hit CTRL + X to save. Your note will be saved between sessions until you clear your browser's local data. It uses a number of open source and free-to-use resources, such as Kenny Wong's Hotkeys.js, and Google Fonts. By the way, something I've learned is that all Google Fonts are distributed under the SIL Open Font License, which allows anyone to use and modify them for personal or commercial purposes.

As for the learning process, …

DPS909 - Lab 1 - Github Trending Research: WebGL Fluid Simulator

The WebGL Fluid Simulator is a small application that allows the user to play with simulated fluids right in their browser, and works on both PCs and mobile devices. The visual effects follow proper fluid dynamics, and can be manipulated in real time by pointing and click, as well as several available options such as quality, density, and velocity.  The app is written in JavaScript, and as the name suggests, visually renders its effects using WebGL. It was created by Github user PavelDoGreat based off another Github project: Fluids-2D, and is distributed under the MIT license. As of September 8th, 2019, WebGL Fluid Simulator is trending with 2,307 stars during the month, and 6,070 stars in total.


I was interested in investigating this project as it demonstrates the breadth of open source resources on Github. Users can find projects that range from complex systems and APIs, to small plug-ins and simple applications. Since the creator distributed the project under the MIT License, the F…