I was there at GNOME.Asia Summit 2019

I was there at Gnome Asia Summit 2019 in Gresik, Indonesia as a speaker. Since I am very new to open source community this was a great experience. I conducted the New comers workshop with my pal Gaurav Agarwal from India. We had our parallel class on day 0 (which is actually day 1) on the premises of University of Muhammadhiya. The expenses of me to attend the event was sponsored by Gnome Foundation. I'm so thankful for this great opportunity.

Let me run through my experience in Gresik and in the conference. I and Guarav landed on 10th of October 2019 in Surabaya. Mr. Firdhous from local community came to pick us up and we had the hotel already booked in Gresik. They dropped us in Hotel Santika Gresik which was fabulous. On the next day I went to the conference and met with people from local community and open source community. I had my talk after lunch and It went very well. We used our personal experience and getting started with Gnome guide to steer the participants towards op…

Review | GSoC 2019

I've been working on GStreamer based project of Gnome Foundation. GStreamer is a pipeline-based multimedia framework that links together a wide variety of media processing systems to complete complex workflows. The framework is based on plugins that will provide various codec and other functionality. The plugins can be linked and arranged in a pipeline. And most of the plugins are written in C. Now the developers are in an attempt to convert them to Rust which is more robust and easily maintainable. My task is to be a part of this conversion and to help fix issues related to this.

Planned TasksImplement Hyper-based HTTP source around async IO and make it feature-complete. (Explained in below section)
GitLab issue: for gst-plugin-tutorial crate. (Explained in below section)
GitLab issue: FLV demuxer. Conversion of FLV demuxer to Rust is not…

Making Rust HTTP source Feature equivalent - Part 1 | GSoC 2019

souphttpsrc is the C version of HTTP source plugin of GStreamer. Making reqwesthttpsrc feature equivalent to that of souphttpsrc is a very important part of the conversion. Although Rust HTTP source is functioning well, it is not fully in to use because it is not equivalent to C HTTP source.

For now there is only one property implemented from C HTTP source apart from the ones which come from base class. That is 'location'. We can set a URL to read using this property. For example

gst-launch-1.0 reqwesthttpsrc location= ! fakesink dump=true

I introduced two more properties to Rust HTTP source. Let's all give a warm welcome to 'is-live' and 'user-agent'. I had to go through the C code of the plugin to understand about the those properties and see where they've been used in the plugin. 
'is-live' was a easy point to start with because the implementation was straight forward. This is a property which can have Boolean value. I…

Writing tests for Rust HTTP source | GSoC 2019

Writing test is an important part of Plugin development in GStreamer or rather for all most all software development. There are several reasons which clearly tells us as why writing test cases are important.

To point out the defects and errors that were made during the development phasesTo check whether all features are working at every changeTo figure out unhandled scenarios in our software My GSoC mentor, Sebastian Dröge coded the skeleton of the test with a basic unit test case for HTTP source plugin (aka reqwesthttpsrc). Here is the link to the merge request. The test was to check whether we receive the data correctly which is sent by the server. Here we make a hyper HTTP server which respond with "Hello World". Then we use our plugin to receive the data and we compare both. Also the interesting thing here is the Custom test harness which can be used to initialize a HTTP server with required behavior and our HTTP element with required properties set. We can use this to c…

Making the 'httpsrc' plugin asynchronous | GSoC 2019

GStreamer plugins are the building units of any GStreamer application. The plugins can be linked and arranged in a pipeline. This pipeline defines the flow of the data. 'souphttpsrc', aka HTTP source is a plugin which reads data from a remote location specified by a URI and the supported protocols are 'http', 'https'. This plugin is written in C. 'rshttpsrc' is the Rust version of the above said plugin. 

Although the Rust version of the plugin is working, it is not feature complete. So my task here is to finish 'rshttpsrc' plugin completely. Let me break the task into smaller branches.
Switching to async IO (Currently it is making request synchronously). Support for cookie/HTTP connection sharing between multiple instances. Making 'rshttpsrc' feature equivalent to 'souphttpsrc' (the C version of the same plugin). There are properties missing in 'rshttpsrc' which are implemented in C version of the plugin. Here is the list o…

The Journey Begins | Google Summer of Code

Google Summer of Code (GSoC) is a global program focused on bringing more student developers into open source software development. Students work with an open source organization on a 3 month programming project during their break from school.

It has always been a wish of mine to contribute to open source community. I was ecstatic would be an understatement when I got the opportunity to contribute Gnome foundation through GSoC 2019. We go through an organized and friendly environment during this period which makes GSoC a great way to enter the open source community. More importantly each student gets a mentor to guide him/her through out the GSoC period. And I am the luckiest to have gotten Sebastian Dröge as my mentor.

I'm working on GStreamer based project of Gnome Foundation. GStreamer is a pipeline-based multimedia framework that links together a wide variety of media processing systems to complete complex workflows. The framework is based on plugins that will provide the variou…

Agile Development With Scrum

Scrum is an agile way to manage a project, usually software development. We had a lecture on Agile with scrum Seminar by Pronto Software Ltd. Agile software development with Scrum is often perceived as a methodology; but rather than viewing Scrum as methodology, they wanted us to think of it as a framework for managing a process.
The process is fixed but room for flexibility is provided. It's all depended in scrum masters hand. The main point is that the employees should feel like they are working on their own decision and feel that it's their own responsibility to finish a set of given task. Even the task they are setting for a week is chosen by them self and time margin is also set by them. The system is very inclined to the employees side. For example, If two person says two different time margin for a same work, they are allowed to come to a common decision. If they fail to do so, Scrum master chooses the highest time. 
  It's all about keeping the employee at highest…