Finding new releases


Finding new releases of Qt libraries can be quite challenging. Some libraries have no releases, whereas other libraries are updated and new versions are released often. Later type of libraries have stable releases which come with some release process, testing, release notes and announcement.

The libraries which have not released anything yet are marked as unstable in Inqlude and they only use the generic manifest. The libraries which have specific releases consist of a release manifest for each release.

In most cases, home page of the project announces the releases. Some projects have releases indicated in their version controlling system too. All of this would depend on the project.

Listed below are some ways to find new releases of Qt libraries.

1. Project home page

There are some projects that announce releases on their home page. For eg: Qtav library announces all the releases under 'News' section at its home page.

2. API documentations

Some projects have API documentations where you can find the new releases. For eg: Qoauth library has api docs for each release.

3. GitHub

Projects which use GitHub display their releases in the releases page of GitHub project. For eg: Injeqt library has all the releases shown at its releases page.

4. GitLab

There are projects which use GitLab. For eg: You can find the latest version of Qdatacube library on its GitLab Project page. Other than that, GitLab 8.2 now supports releases as in GitHub.

5. SourceForge

There are some projects on SourceForge that have a releases page. Some have patches. You could easily find the latest stable release there. For eg: QScintilla library has its latest release indicated in the title of its documentation page at SourceForge.

6. Bitbucket

There are several projects on Bitbucket as well. You could find the latest stable release in Tagssection at Overview page. For eg: qjsonrpc library has its releases defined under different tags at its Overview page.

7. Forums

There are some projects that announce their releases on different types of forums like Google group, Qt forum or any kind of project specific forums. For eg: ff7tk announces its releases onQhimm.com Forums.

Links to the above sources of a specific Qt library can be found at the relevant web page of the library in Inqlude. Otherwise you can find a JSON file available at http://inqlude.org/inqlude-all.json, where you can find all the links to above sources of Qt libraries.

Once you find a new release of a Qt library, you are always welcome to contribute a new patch of the manifest file for inqlude-data library archive.

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.


Got selected to GSoC 2016 with KDE-Inqlude


I am very excited and happy to get to know that I have been selected for GSoC 2016 with Inqlude - KDE. First of all, let me offer loads of thanks to KDE for selecting me as a GSoC student of their organization. I am extremely happy to go ahead with Inqlude for GSoC 2016. It is indeed a lifetime achievement for me.

I would also like to thank Mr. Cornelius Schumacher for the massive support that he gave me to drive towards this achievement. Thank you for all your advises and keeping me on right track since day one. I am indeed privileged to have had you as my mentor and I always find you as an exemplary character in my life.

I will do my best to make this project a successful and useful one for the KDE organization and all its users. I plan to maintain this blog through out the project period to update my progress on the project.

So, I would like to welcome all of you to the blog I created to reflect my contributions towards the project on improving Inqlude Website. This blog will be updated each week with a moderate description about the progress done during the past week. The updates could also include the challenges faced, solutions tried and the solutions found for the challenges during the respective week.

Other than the progress reports, I would publish posts about other interesting stuff related to the project. For example, I might write a wiki on guiding users to contribute Inqlude which is a potential option for the proposed project.

All of you are welcome to read and share your thoughts with me regarding anything related.

Note: Here is the link to my project proposal that brought be this wonderful opportunity.

Cheers!!!