GSoC 2018: Updating the chromium source

For the last 2 weeks, I have been working on updating the Chromium source of Scurl project. Since the Chromium source that Scurl uses was originally from the project gurl-cython, which has been abandoned for more than 3 years. Therefore, updating the source is much harder than ever.

I had replaced the vendor folder in the project with ‘third_party’ since ‘vendoring’ is a pretty bad habit as it’s much harder to update the source code if there’s no upstream branch. In addition, Chromium author’s work is not that noticeable since not everybody would pay attention to the license file in a sub-directory of the project.

Updating the source at the beginning was a hard job since the amount of code in the ‘base’ component of the Chromium project is huge. Cython would compile SCURL code successfully, but there was some errors popped up when users try to import Scurl in Python code. Since Scurl uses the functions defined in the header files of both ‘base’ and ‘url’ components of Chromium. However, the function implementation, which is defined in each of the .cc files in Chromium sources, was not mentioned in the Scurl’s setup.py file. Therefore, it would print out that the implementation is missing when people try to import Scurl.

At first, I did not notice anything special about the traceback that Python gave when I tried to import Scurl. As a result, I had no idea which function implementation that I was missing and I just had to find the .cc files that are missing in ‘setup.py’ cluelessly. After more than a week getting lost in the Chromium source, I realized that the Python traceback contained the function name of its missing implementation. That was actually a relief that I found it after being stuck for nearly 2 weeks.

After that, I was able to update the Chromium source successfully and now the project is at a good state again. The most important thing about this task is that now I can control the whole project since I know how to update the Chromium source 🙂