Utkarsh Gupta: GSoC Phase 2
Hello,
In early May, I got selected as a Google Summer of Code
student for Debian to work on a project which is to write a linter
(an extension to RuboCop).
This tool is mostly to help the Debian Ruby team. And that is the best part, I love working in/for/with the Ruby team!
(I ve been an active part of the team for 19 months now :))
More details about the project can be found here, on the wiki.
And also, I have got the best mentors I could ve possibly asked for: Antonio Terceiro and David Rodr guez So, the program began on 1st June and I ve been working since then. I log my daily updates at gsocwithutkarsh2102.tk.
The blog for the first part of phase 1 can be found here and that of second part of phase 1 can be found here. Whilst the daily updates are available at the above site^, I ll breakdown the important parts here:
From my major project, college *stuff to my GSoC project, Debian (E)LTS, and a lot *more. Thanks to Antonio for helping me out with *other things (which maps back to his sayings in Paris \o/).
Until next time.
This tool is mostly to help the Debian Ruby team. And that is the best part, I love working in/for/with the Ruby team!
(I ve been an active part of the team for 19 months now :))
More details about the project can be found here, on the wiki.And also, I have got the best mentors I could ve possibly asked for: Antonio Terceiro and David Rodr guez So, the program began on 1st June and I ve been working since then. I log my daily updates at gsocwithutkarsh2102.tk.
The blog for the first part of phase 1 can be found here and that of second part of phase 1 can be found here. Whilst the daily updates are available at the above site^, I ll breakdown the important parts here:
-
After the, what I d like to call, successful Phase 1, whilst using this extension on
GitLab s omnibus-gitlab repository,
I discovered a bug (as reported via issue #5),
which basically threw the following error:
An error occurred while Packaging/GemspecGit cop was inspecting /home/utkarsh/github/omnibus-gitlab/files/gitlab-cookbooks/gitlab/recipes/bootstrap_disable.rb.
which was not good.
To see the complete backtrace run rubocop -d. -
This bug was a false-negative and the fix turned out to be simple, which was raised via
PR #6.
Since the extension was now working fine against omnibus-gitlab (which is quite huge!), I rolled out a v0.1.1 release! -
Next, I implemented the 2nd cop, fixing
requireandrequire_relativecalls which map fromspec(s)/test(s)to thelibdirectory.
This was raised via a WIP PR #4. -
We had our meeting where we discussed that it would rather make sense to split these cops into
two parts and also, thanks to David s elaborative comment
on the situation.
With this, we decided to split the cops into two. - Then I worked on:
-
At this point, we hit yet another obstacle. Correctly determining the root directory of a project
at runtime. This is tricky. Not impossible (of course) but tricky.
So my homework was to find such a thing that does that by default. -
For the next 4 days, I tried to find something that could do this bit. But unfortunately, I
couldn t.
So I wrote one myself. I wrote get_root, which solves this problem.
The only thing that one needs to take care while usingget_rootis that it has to be agitrepository. That s a trade-off. -
In the next meeting, we discussed that this is a bit of an overkill.
get_rootshould ve been written as a helper function and not as another library, which David and Antonio pointed out correctly. But it was already too late :P
I had already made a v 0.1.0 release.
(So in case you re a Rubyist and want to find the root directory of a git repository, consider using this :P)
Besides, Antonio also pointed out that it should take another arguement as to from point from where the file is being inspected. Hm, unsure how to do that.. -
Meanwhile, I exported
get_rootas a helper function, David solved all the problem altogether at once via rubocop s PR #8314.
This introduced a new (public) method#project_rootwhich superseededget_rootand one could now get the root directory viaRuboCop::ConfigLoader.project_root. Ain t he amazing!? \o/ -
This also means, I reverted those changes altogether and tweaked my WIP PR to inculcate these
changes via commit @b06a8f86.
However, the specs fail. But that doesn t mean that the changes aren t correct :P
They are pretty much right and working fine. To make that sure, I locally installed this library and used on other projects to make sure that it indeed is working alright, as it should! \o/ - And here I am on the 15th day :)
rubocop-packaging is being used by batalert, arbre,
rspec-stubbed_env, rspec-pending_for,
ISO8601, get_root ( ),
gir_ffi, linter, and
cucumber-rails.
Whilst it has been a lot of fun so far, my plate has started to almost overflow. It seems that I ve
got a lot of things to work on (and already things that are due!).From my major project, college *stuff to my GSoC project, Debian (E)LTS, and a lot *more. Thanks to Antonio for helping me out with *other things (which maps back to his sayings in Paris \o/).
Until next time.
:wq for today.
My laptop battery started to explode in slow motion. HP requires 10 business
days to repair my laptop under warranty, and I cannot afford that length of
downtime.
Alternatively, HP quoted me 375 + VAT for on-site repairs, which I tought was
very funny.
For 376.55 + VAT, which is pretty much exactly the same amount, I bought
instead a refurbished ThinkPad X240 with a dual-core I5, 8G of RAM, 250G SSD,
and a 1920x1080 IPS display, to use as a spare while my laptop is being
repaired. I'd like to thank HP for giving me the opportunity to own a ThinkPad.
Since I'm migrating all my system to the spare and then (hopefully) back, I'm
documenting what I need to be fully productive on new hardware.
Install Debian
A basic Debian netinst with no tasks selected is good enough to get going.
Note that if wifi worked in Debian Installer, it doesn't mean that it will work
in the minimal system it installed.
Right on the heels of the news of 









As of yesterday,
2000 user packages is pretty mind-boggling. We can use the progression of 
Also this was the last month before shifting suites: goodbye to Jessie LTS and Wheezy ELTS, welcome Stretch LTS and Jessie ELTS.
ELTS - Wheezy



Here is my monthly update covering what I have been doing in the free software world during June 2020 (
I recently moved house, and the new building has a
Limesurvey is an online survey tool. It is very powerful and commonly used in academic environments because it is Free Software (GPLv2+), allows for local installations protecting the data of participants and allowing to comply with data protection regulations. This also means there are typically no load-balanced multi-server szenarios with HA databases. But simple VMs where Limesurvey runs and needs upgrading in place.
There's an LTS branch (currently 3.x) and a stable branch (currently 4.x). There's also a 2.06 LTS branch that is restricted to paying customers. The main developers behind Limesurvey offer many services from template design to custom development to support to hosting ("Cloud", "Limesurvey Pro"). Unfortunately they also charge for easy updates called "ComfortUpdate" (currently 39 for three months) and the manual process is made a bit cumbersome to make the "ComfortUpdate" offer more attractive.
Due to Limesurvey being an old code base and UI elements not being clearly separated, most serious use cases will end up patching files and symlinking logos around template directories. That conflicts a bit with the opaque "ComfortUpdate" process where you push a button and then magic happens. Or you have downtime and a recovery case while surveys are running.
If you do not intend to use the "ComfortUpdate" offering, you can prevent Limesurvey from connecting to