Open Source Work Is An Adventure
Back in September 2018 when I first started doing open source work as I took the open source class DPS909, I only had the bare idea of what open source work is: software that can be worked on by anyone and anywhere in the world, people have to follow certain guidelines, and open source software is a great alternative to proprietary software (i.e. LibreOffice vs Microsoft Office). I started off small – contributing to a really small project and my post detailing my work can be found here. Then Hacktoberfest came in and I dove in to some open source projects to learn more about them. Since I wanted my career to focus on Android mobile development, I decided to look for open source Android apps on GitHub. I found one successfully and to this day I still contribute to it (albeit on an infrequent basis) – and its name is TravelMate. Although at first I found the project daunting, over time I grew comfortable with it as my knowledge of its codebase expanded and my knowledge of Android development also expanded – particularly in terms of debugging, app widgets, UI layouts, documentation, and Error Messages.
Over the course of many projects, I’ve encountered various types of projects – projects which have a huge codebase and multiple maintainers (i.e. WordPress for Android, K9-Mail) and projects with medium size codebase and only one maintainer (i.e. TravelMate and SimpleCalendar). From my comfort level of knowledge and skill, I feel more comfortable approaching medium-size codebases because I feel like I can easily make changes to them and not set off a domino effect on the whole project.
Since them from September 2018, I’ve had 18 PRs created in different projects. I didn’t really have any number of PRs in mind to achieve – I just simply wanted to learn what I could to improve my coding skills while at the same time gaining other skills that I could use. In particular, I wanted to improve my knowledge of Android development.
As seen here, only 4 out of my 18 PRs have been successfully merged into projects. Most of these PRs are something on that involved Android development. I would say that out of these changes, the PR that involved adding a Clock Widget to TravelMate has been my favourite one so far. It’s one of my most memorable experiences as I’ve learned something new and actually implemented it successfully in TravelMate. I remember working from 9PM to almost 3AM in the morning just to finish that PR and I felt a huge sense of achievement when I finished it.
Of course there’s also some downsides to open source work, particularly on Android open source apps. First off, there’s only a really small amount of open source Android apps that are available in GitHub – from my experience alone when searching for open source Android apps to contribute to, the active projects that I saw are somewhere between 10 – 15. Maybe I’m more biased in this perspective because I only picked open source apps with which I feel more comfortable contributing to but still, something can be said about the low amount of open source Android apps.
Another problem of contributing to open source apps is the problem of communication between the contributor and the maintainer. A great example of this is TravelMate – the maintainer of TravelMate has a full time job and lives in India so when I submit a PR, I need to wait a couple of days before it gets reviewed and when I make changes it can take another couple of days. In other words, the progression can be slow.
Future Open Source Work
Would I continue to contribute to the open source Android apps that I’ve contributed to so far? Yes. Should I tackle larger projects more? Yes. Would I prefer working on open source Android apps instead of working on my personal app projects? Preferably no. Open source work is a great adventure but for now I have my goal in one thing only – to create my own app and publish it on Google Play Store and get some revenue from it. I want that goal in mind so that I can become more experienced in all facets of Android development, no matter how many steps it would take.