DEV Community

Chris Pinkney
Chris Pinkney

Posted on

Release 0.2.1 or, How Hacktoberfest Ruins Everything. Me too. Probably.

It’s October 1st 2020 at 11:45PM and I’m exhausted. It’s not that late but it’s been a long day and week so far. Perfect time to talk about my OSD600 release 0.2 assignment: Hacktoberfest 🎃

Hacktoberfest is an annual month-long celebration of all things open-source, lovingly (melodramatically?) described as “Open source is changing the world – one pull request at a time.” It’s also quite controversial in the eyes of many people. In fact one of the first hits when searching for Hacktoberfest on google is a blog article LINK where the author goes on to call the festival a month long DDOS attack on repo maintainers. It’s actually an interesting read, and I understand and empathize with those who concur.


Anyway, my job for OSD600’s month long 0.2 assignment is to create four pull requests. I’ve made it my goal this month to contribute only bug fixes and feature requests to projects and to avoid what others might describe as part of the problem unless otherwise specified by the repository. I’m doing my part. Well, trying to at least. We’ll see how it goes.

I surprisingly had some extra time today and instead of scouting out repos for Hacktoberfest as planned, I decided to jump right in and try to tackle an issue in a messaging app called Rambox. Rambox is a messaging and email app that allows you to have several “tabs” of messaging apps open to avoid having several messaging apps running in the background. It does this by running instances of the chat application’s web app, so you don’t actually run the main app, just a localized web version of it. I use it at least hourly and actually mentioned it in my first blog post. I poked around their repo and noticed an issue asking the developers to add support for two web apps that he uses. I figured I might be able to handle, and sent my comment to the developers asking to be assigned to the issue. The hunt was on.

The first steps was to fork, clone, branch, and build. But in actuality the real first step was figuring out how the hell his app works. It’s built with Electron, JS, and something called Sencha JS Ext. Sencha is a JS application framework that allows for the creation of JS based web applications. Next to that you have Electron, which is a framework (developed by GitHub actually) that allows developers to create desktop applications using Chromium and Node.JS. There’s actually a lot of interesting criticism regarding Electron’s bulky overhead since it’s inherently bundled with Chromium.

After doing a bit of research and digging, I tried to figure out how to add new services to Rambox. I searched through the repo trying to find a file that specified the actual services it currently uses, if I could find this I could use it to model a new service. I couldn’t for the life of me find any reference to any service. What the hell?! Did they obfuscate their (surprisingly GPLv3) code for some reason?

R T F M. rtfm. RTFM! Their CONTRIBUTING.md specifies how to add a new service… So much time wasted. It’s not very well documented and I still couldn’t figure out how to access this service JSON file to add new services. I combed through old master branch commits and finally found a PR that added a feature. Interesting they store a JSON file with a list of services they support (and their respective websites) in a branch called gh-pages which acts as an API.

Once I figured out how to git checkout to this branch (which wasn’t as simply as it usually is) I added my new two services, pushed to origin, and changed the main app’s API location (to point to my own fork’s services.json) so I could test my changes. I then used sencha app watch to build the app and npm start to start it surprisingly it worked! I tested the two services and both worked as expected. Hurray! I then submitted my PR and started to play the waiting game.


It was thrilling to actually see the app work out of the box, and though my changes were small I learned a lot about how the app works and also more about how Git works. If I’m being honest I spent more time fighting with Git and doing research than I did actually programming. I’m starting to come to the conclusion that programming is only 10% part of the job.

Sorry for the tl;dr. Here’s a picture of my cat.

enter image description here

Top comments (1)

Collapse
 
manchicken profile image
Mike Stemle

Man, I wish I could say that wasn’t how it goes most of the time when you start tinkering with a new codebase, but that’d be a lie. I used to contribute to the KDE project here and there, and you’d easily spend 4:1 hours fixing build system issues on your local and writing code.

Docker helps some of this, because you can fully automate build processes now, but it still kinda sucks a lot.

It’s kinda the nature of the beast.