GSoC: encrypt_content_client - Community Bonding

About the project

This summer I will be working on a client-side, asymmetric encryption module for Drupal 8. The module will use the OpenPGPjs library and implement encryption design similar to one used by nextcloud. The main goal is to achieve a zero knowledge system, where server is not aware of the content it is hosting. It will use PGP cryptography and multiple storage options for users’ keys. It is a continuation on last year GSoC project of a public-key, server side, content encryption module.

Environment setup

C9 Logo

As I mentioned in my proposal I set up an online IDE for development for the module. The latest version of the demo can be seen here: https://drupal-sandbox-marncz.c9users.io. Having an online IDE helps my mentor to see the progress live and collaborate the same way as on Google Drive’s documents. It is also a neat way of having everything in one place, it is a convenient environment for my work, and it can be run in a web browser!  

 

The server which I will be using for my development is running on Linux and uses PHP 7 and MySQL as a database. I downloaded Drupal 8.3.0-dev and created my module folder there. I will be also using drush and drupal-console for automating tasks.

 

Meetings and tools

I contacted my mentor - Colan Schwartz and we agreed to meet every Tuesday at 9:00pm UK time. I decided to start doing meeting minutes to keep track of topics covered and where I can list any questions or issues I may have as well as actions for the following week. We decided to have meeting using an open source, encrypted IM app - Riot. We had two meeting already and used voice chat function of the app.  

 

Gitlab issues

  

Research

I am continuing to work on my research about the technologies that will I will be using. I will continue to contribute to various Drupal modules to get more familiar. I also worked on a small project not related to Drupal to get more familiar with GIT. Another activity has been going through Drupal documentation on modules, API and libraries as well as free videos on Drupalize.me and making notes that will be useful in the development process.

Detailed weekly objectives of the project

Another task of the community bonding was to go through the weekly objectives breakdown I submitted with my proposal and expand it. I planned everything out in more details, added more comments and then shifted some of the objectives. The next step was to move those objectives to the Gitlab repository. I also added weekly milestones so I can track progress throughout my project. I have also started adding references to white papers and tutorials to support my objectives and how I will go around achieving them. I also made sure that work is divided equally over the 12 weeks of programming, testing and documenting and that it has logical workflow to it.   

 

Weekly objectives

Architecture document

My mentor also suggested that I work more on the architecture document. This helped me a lot with understanding lower level architecture as well as the overview of the module. I will include this document in my repository and on the module’s page on Drupal.org. This document will guide me through the development process as well as explain the high level architecture to people that would like to contribute to it in the future.  

Architecture

High level architecture document available here. I will post weekly updates on this blog:

  • objectives completed that week
  • describe interesting issues I encountered along with solution
  • plans for the next week