Community Bonding Period




Week 1

The community bonding period for GSoC 2016 is from 23rd April - 23rd May. It runs throughout one month period. So I am now in the community bonding period. This is a good time to get prepared for the coding and to get deeper involved in the community. This also is a good time to start to contribute. 

During the first week of the community bonding period, I followed the instructions given by google and did the non technical tasks including submission of tax forms and registration for a payoneer account.

I also created a developer account in KDE, added Cornelius Schumacher as the mentor and uploaded the requested ssh keys. 

In the meantime, I cloned the Inqlude repositories and installed Ruby, Rubygems and Inqlude executable. Since I formatted my machine, I had to do all these things again to get ready with the project. I also ran the process to generate html views locally in my machine. In these ways, I set up the development environment for the project.

I also started creating my upcoming To-do list in todoist.com as this would be useful for me to keep track of things to do and remind me of their dead lines. I also asked my mentor if I need to use any special IDE for coding. I prefer using Sublime Text. He asked me to use whatever works best for me. Since he uses Kate or Atom for most of the coding, I installed them as well.

Week 2

I came up with an issue while modifying and viewing the modified html views of the web pages. While executing the project locally, I could generate the html views locally using 'inqlude view'. But I could not see the modified pages after doing the modifications. For instance, I changed a sentence in about.html.haml file and then used the 'inqlude view' command to generate the html views again. But that gave me the same page as before. So I assumed that I have gone wrong somewhere. I felt doubtful of the process that I carried out to modify the pages locally. 

After doing some research, I found the cause for this issue. What I did previously was modifying the html.haml pages in view directory of the inqlude project and then tried to view changes in html files. But I noticed that 'inqlude view --output-dir=OUTPUT_DIR' command uses html.haml files in view directory at '/var/lib/gems/1.9.1/gems/inqlude-0.7.4/view' location. When I did local changes to the files in that location and executed the 'inqlude view' command, I got the html views of modified page successfully. Then I wanted to know how I should commit and push any local change to the main repository. Should I copy those files in '/var/lib/gems/1.9.1/gems/inqlude-0.7.4/view' location to the view directory of the inqlude repo that I cloned and commit changes from my project location? So I sent a mail to the mentor to clarify my doubts. He explained me the underlying process and advised me to look into the code. 

The inqlude command takes the templates from a directory relative to where the `inqlude` executable is located. So if I call the local executable from my checkout it will use the local templates. So I changed the view.rb file inside inqlude executable to take the html.haml files from the view directory of my project location to generate html views. In this way, I resolved the first issue that I came across in the project.

I also played a little with the Inqlude codebase. I manipulated the html files to see how the basic html changes reflect on the final preview. 

Week 3

Community bonding period is also a good time to start to contribute. An easy way to contribute Inqlude is looking at existing libraries and checking if there are new versions, and if there are submit pull requests for updated manifests. So I started preparing my first pull request.  My mentor asked me to create pull requests for updating the libraries. He suggested me to start with one, so I can get used to the work flow and the tools.

I went through the project sources and home pages of most of the Qt libraries at Inqlude to check for their new releases and updates on meta data about those libraries. I found updates in meta data of lots of existing libraries at Inqlude. 

I searched all the unreleased libraries through their respective homepages and sources to find if they have latest versions. While doing that, I found the following new versions.

adctl0.1.1
kdreports1.7.0
mimetypes-qt41.0.1
qdatacube3.1.2
qjsonrpc1.1.0
qserialdevice0.4.0
qtav1.8.0
qtftp5.0.0
qthttp5.0.0
qtrest0.1.0
qtrpt1.5.5
qtWebSockets5.6.0

Actually some of them are latest releases. One library adds new platform support with its new release as well. I started creating my first pull request for Qtav qt library. I sent a pull request for updating the manifest of 'qtav' library in inqlude-data repository. Inqlude only had the generic manifest file for this library and I added three release manifest files for 1.8.0, 1.9.0 and 1.10.0 releases. Shown below is the manifest file that I created for 1.8.0 release.

{
  "$schema": "http://inqlude.org/schema/release-manifest-v1#",
  "name": "qtav",
  "release_date": "2015-09-01",
  "version": "1.8.0",
  "summary": "A cross-platform multimedia playback framework based on Qt and FFmpeg.",
  "urls": {
    "homepage": "http://www.qtav.org",
    "vcs": "https://github.com/wang-bin/QtAV",
    "download": "http://www.qtav.org/install.html",
    "announcement": "http://www.qtav.org/blog/1.8.0.html",
    "custom": {
        "Wiki": "https://github.com/wang-bin/QtAV/wiki/_pages"
    }
  },
  "licenses": [
    "LGPLV2.1+"
  ],
  "description": "QtAV is a multimedia playback library based on Qt and FFmpeg. It can help you to write a player with less effort than ever before.",
  "authors": [
    "Bin Wang <wbsecg1@gmail.com>"
  ],
  "maturity": "stable",
  "platforms": [
    "Windows","Linux","OS X","Android","iOS"
  ],
  "packages": {
    "source": "https://github.com/wang-bin/QtAV/archive/v1.8.0.tar.gz"
  }
}

While doing this task, my pull request failed due to a syntax error. Actually I had missed a comma in
the list of urls. So I learnt about Travis CI tesing as well. I corrected the syntax error and committed the changes along with manifest files for 1.9.0 and 1.10.0 releases. 

I had no idea on how Travis CI does building and testing software projects hosted at GitHub. So I studied about it and did some exercises to experience that workflow. You can find it at https://github.com/nanduni-nin/travis-broken-example. This made me understand how Travis CI works in inqlude-data project.
Meanwhile, I started writing a wiki about 'Finding new releases'. This was an interesting task. In this wiki page, I could describe the process I followed to find new releases of Qt libraries. I believe that this would be a motivation for all Qt application developers and Qt library developers to contribute Inqlude.

My mentor pointed out me a nice article on 'How to Write a Git Commit Message'' . That was very interesting. I learnt lots of things from that. 

Also, I did know only same basics of using git commands. So, I learnt to use 'git rebase' and I went through several docs to learn what that really does. So I merged all my previous commits into one and added a combined commit with title 'Add 1.8.0, 1.9.0 and 1.10.0 releases of qtav' along with a small description. 

I also did some layout and template edits to this blog to make it more simple and easy to navigate.

Week 4

During this week, I spent most of the time familiarizing myself with inqlude website and inqlude repository. I tried to understand how different pages are managed using inqlude command line client for Qt library archive.

I went through the inqlude code base and figured out how inqlude commands work. For eg: I tried to understand how 'inqlude view' and 'inqlude verify' works. 'inqlude view' command is useful to create a website in a specified directory from manifest files. 'inqlude verify' command is useful to verify a manifest file to look for proper syntax and other specific rules in manifest specification.

Meanwhile I tried to create and test a new page within the inqlude website. To get some idea, I created a web page for latest releases and tried to practice ruby syntax and haml templates.

I also tried to solve issue #19 on 'Align summaries on development page vertically'. For this, I had to do some minor changes in development.html.haml and few modifications on inqlude.css.

After all, I did not forget to update some new releases for qt libraries in inqlude-data archive. I added a new manifest file for qscintilla, which is a Qt port of Scintilla C++ editor control. I added its latest release 2.9.2. Shoen below is the corresponding commit message. I got this commit successfully merged into the inqlude-data repo. 

Add 2.9.2 release of qscintilla

Add version and release date.
Add link to the release announcement page.
Improve description.
Add platform support for 'OS X', 'Android' and 'iOS'.
Add source package for 2.9.2 release.


After having the wiki I wrote on 'Finding new releases' reviewed by the mentor, I added that to the inqlude-data repo after doing the proposed changes. For each way of finding a new release, I added an example library for the reader to get that idea properly.


0 comments:

Post a Comment