Application for internship



Do you confirm that you are eligible for this internship as stated in
our eligibility rules at
https://wiki.gnome.org/Internships#Eligibility?.
YES

Do you confirm that you have read and agree with the internship
contract linked at https://wiki.gnome.org/Internships#Eligibility?.
YES

== Personal Information ==

If you are accepted, fields in this section that are marked "(public)"
will be displayed on a public acceptances page. If you prefer
different information to be displayed publicly than you want to
provide in this form, please provide both a private version visible
only to the coordinators and mentors of the internship, and a public
version to be displayed publicly.

Name (public): Mohammed Sadiq
Name (Legal, private): Mohammed Sadik P K

Preferred pronoun (e.g. she, he, they): he

E-mail address: sadiqpkp gmail com

Blog URL (public, required): https://www.sadiqpk.org/blog/

IRC nick (public, optional): sadiq, sadiq[m]

Website or Portfolio URL (optional): https://www.sadiqpk.org
https://www.openhub.net/accounts/pksadiq/languages

GitHub, GitLab, or any other code repository URL (optional):
https://gitlab.com/sadiq https://github.com/pksadiq
https://gitlab.gnome.org/pksadiq

Location (city, state/province, and country) (public): Malappuram, Kerala, India

Education completed or in progress (include university,
major/concentration, degree level, and graduation year): Some degree,
Bachelor of Technology in Applied Electronics and Instrumentation

How did you hear about this internship?
From GNOME wiki (I do keep an eye on Recent Changes)

== Project Information ==

What project are you interested in?
Credentials Management

Who is a possible mentor for the project you are interested in?
Tobias Mueller


Please describe your experience with the GNOME community and GNOME
projects as a user and as a contributor. Some experience with GNOME
stack and some contributions to GNOME are required for considering the
application. Include information and links to the contributions you
made:
As a user I have been a GNOME user since Ubuntu 8.04. And since 2011 I
began contributing translations to GNOME. From 2014 onwards I have
been testing GNOME modules. I have been also contributing code to many
GNOME projects since 2016. I'm currently co-maintaining GNOME notes.

Bugzilla link: https://bugzilla.gnome.org/page.cgi?id=describeuser.html&login=sadiq%40sadiqpk.org
GitLab: https://gitlab.gnome.org/pksadiq/
Openhub: https://www.openhub.net/accounts/pksadiq

Contributions (see openhub for more):
Gtk+: https://github.com/GNOME/gtk/commits?author=pksadiq
gnome-control-center:
https://github.com/GNOME/gnome-control-center/commits?author=pksadiq
gnome-todo: https://github.com/GNOME/gnome-todo/commits?author=pksadiq
seahorse: https://github.com/GNOME/seahorse/commits?author=pksadiq
gnome-notes GTK4 rewrite: https://github.com/pksadiq/gnome-notes-next/


Please describe your experience with the project you are interested to
participate as a user and as a contributor and relevant areas. Include
information and links to the contributions you made:
To get know the code, I contributed a few patches to seahorse. The
code is really old, and showing its age (use of many deprecated
methods, old style GObject declarations, etc.)
Please see https://github.com/GNOME/seahorse/commits?author=pksadiq

Please describe your experience with any other FOSS projects as a user
and as a contributor:
As a user, my first OS was Puppy GNU/Linux. That was my only choice
because I had a low end system (64MiB memory, 5GB HDD), which happened
around 2007. Then I switched to GNU/Linux only since 2010 (Ubuntu
10.04). And since Debian wheezy, Debian is my primary OS (I do also
use Fedora for testing latest GNOME packages).

I have been contributing to several free software projects (mostly
GNOME) since around 2010. I'm involved in various free software groups
in Kerala. I got interest in GTK+ mainly because it's truly a free
software (ie, the copyright is distributed) and I love C programming.


Please describe any relevant projects that you have worked on
previously and what knowledge you gained from working on them (include
links):
PMU: https://github.com/pksadiq/pmu (language: C)
PMU is a software that implements IEEE Std C37.118.2-2011 (a standard
to read electrical signal parameters).
I did this as a help for my friend's PhD. The UI was created in GTK3+.
Basically what I did was to read the standard and implement it in C. I
learned implementing SPI communcation in C on Raspberry Pi. I did also
implement
parts of SPI block in VHDL for FPGA.

My GTemplate: https://www.sadiqpk.org/projects/my-gtemplate.html (language: C)
My GTemplate is simple feature rich GUI Application template written
in C using GTK3/GTK4.
This is a very small project, but took really long time to learn the
best design practices. I learned compiling for MinGW, and learned
writing WiX installers for MS windows (using msitools). I didn't know
that it was so easy to do so before I wrote this (Well, not too easy).

GNOME Notes rewrite: https://github.com/pksadiq/gnome-notes-next (language: C)
This is complete rewrite of gnome-notes (aka bijiben) from scratch
using GTK4. The plan was to complete it by September 2018. But as GTK4
got delayed, this too got delayed.


Please describe the details and the timeline of the work you plan to
accomplish on the project you are most interested in (discuss these
first with the mentor of the project):

My Plan is to write GNOME passwords from scratch (of course, reusing
as much from seahorse).
A drastic change in seahorse may take too much time and it could break
the workflow of
its current users.

I have built a template to begin with:
https://www.sadiqpk.org/projects/my-gtemplate.html
My plan is to use GTK4 and C programming language for the project.


* November
** Look at the currently available UI designs
(https://wiki.gnome.org/Design/Apps/PasswordsAndKeys)
** Learn about the features needed (keyring, GPG, ssh)
   - Design the base classes, methods
     - Mostly just in paper
   - Research about requirements
     - Widgets that have to be written in GTK4
       Eg: gcr-ui is GTK3. We will have to write
       those for GTK4, and eventually upstream it to gcr-ui

** Implement keyring class (or which ever is easier)
   - Read the current list of keys, and just display it
     - For now, keys will be added just with seahorse
   - lock/unlock keyring
   - Add enough tests for the APIs, as much possible

** Implement Basic UI
   - Just enough to let the backend work
     That is, a list-view, list-view-item and supporting classes
     - GtkListView has not yet landed in GTK4, so GtkListBox can be
       used for now.
   - Implement empty states
   - Some basic widgets required
     Eg: Password entry: an entry that has a Generate/copy button and
         probably a progress bar (as per the PasswordsAndKeys design)


* December
** Implement keyring, SSH and GPG
   - Add backends
   - Add UI to create new passwords


* January
** Implement SSH and GPG key (more)
   - Keys import and export

** Implement search
   - Design search class and related UI
   - Implement gnome-shell search


* February:
** Implement SSH and GPG key (more)
   - Sync with remote servers

** Make Complete use of GTK4
   - GTK4 shall be feature complete by the time. Make use of
     new widgets and features if possible

** Testing and QA
   - Add more tests (if required)
   - check for leaks and things with libasan, ubsan, etc.
   - Test with flatpak.
   - And various black box tests.

** Write about the project
   - Write a blog article detailing the work
   - Write reports (if required for submission).


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]