DEV Community

Cover image for Planning for an Open Source Contribution
Amnish Singh Arora
Amnish Singh Arora

Posted on

Planning for an Open Source Contribution

As I approach the end of the semester, where I started out on my open source journey, I started looking for an interesting issue for one last contribution before the term concludes.

In this blog, I'll be discussing what issue I chose, why I chose it, and how I plan to start working on it.

Table of Contents

Β 1. The Notification πŸ””
Β Β Β Β Β Β  1.1. The Project
Β Β Β Β Β Β  1.2. The Issue πŸ—Ž
Β 2. Motivation πŸ’ͺ
Β 3. The Plan πŸ—ΊοΈ
Β 4. Conclusion πŸ“

The Notification πŸ””

As I was starting to look for something to work on, I got a notification from one of the projects I worked on a few weeks ago called Chatroom.

I opened the notification and it was the project maintainer asking my help for another issue that was open on his repository for a long time. Now even though the project is fairly young, and isn't something I am actually looking for my last contribution, I find the issue really interesting and don't want to deny the request of maintainer.

The Project

But before I talk about what the issue actually is, I would like to give a brief overview of what the project is about.
Chatroom is an open-source social media application with a React frontend and an Express backend.

Chatroom Home Page

It looks and feels like many of any other social media application out there, but when you start using it you realize there's a lot of functionalities that have not been implemented and have placeholder UI controls. This makes it a great project for making contributions that have a huge impact on the project, but at the same time your learning is limited compared to working on a large project with a thriving community.

The Issue πŸ—Ž

Now that we know what the project is about, I'll explain what the issue is.

Currently, the application stores all its data in MongoDB, which is a good choice for an application like this that demands flexibility.
However the problem is there is no proper storage set up to store and manage image data. Any images that are uploaded, from user registration to posts with media are stored in the server's filesystem.

Sample Images

This is fine when you're testing your project in a very early stage, but saving images which are basically blobs is not a good idea due to performance and security reasons.

Which is why the maintainer proposed using Cloudinary, a cloud based image management platform for optimizing, editing, and managing media for applications.

Cloudinary Home Page

Used by major tech companies and trusted by more than 1 million developers, Cloudinary stands out as a really tempting option to use.

Cloudinary Details

Motivation πŸ’ͺ

You might be wondering why I am so interested in working on this issue when there are thousands of more available to work on.
My motivation to work on this stems from the fact that I am currently taking a Cloud class as well, and we recently integrated a very popular cloud storage called Amazon S3 with our microservice for blob (Binary Large Objects) data storage.

Currently we only support storing text based data, but in the next couple of weeks, we are expected to support storage of image data as well. Since this issue is pretty similar to what I have to do anyway, I would love to explore this area before I have to do something similar for my assignment πŸ˜‰.

The Plan πŸ—ΊοΈ

Instead of jumping straight into the issue, I have come up with a plan to tackle this one as this one doesn't seem as straight-forward as the other ones.

1. I'll start by researching more about how to use Cloudinary by exploring some examples.
2. Next, I'll have to examine the existing code in the project to get an idea of how the image uploads are being handled in the client application, and what middlewares are being used in the server to store the uploads.
3. Lastly, I'll come up with the easiest way to Integrate Cloudinary with the application based on the observations I make in step 2.

Conclusion πŸ“

And that is the plan I have come up with for my final open source contribution this term.
I'll be following up with another post to share my progress and everything goes smoothly as planned.

In the meantime, I'd love to hear about your experiences with open source contributions or any suggestions you might have! Feel free to drop your thoughts in the comments below.

Stay Tuned πŸ‘€.

Top comments (0)