The Coding phase of Google Summer of Code 2019 kicked off the previous week on May 27th. I was very excited to work on my project Collaborative Editors. This module provides the features to edit and update a node in Real Time similar to Google Docs. It comes with several plugins and add-on which allow users to directly publish the content from Etherpad, Google Docs and Microsoft Office 365 live editor.
Project is divided into three phases, Deliverables of these phases are given below -
1st phase deliverables -
Fully functional collaborative_editors module with all required tests and API documentation for developers.
2nd phase deliverables -
3 custom modules ce_etherpad, ce_google_docs and ce_microsoft_word to integrate with Etherpad, Google Docs and Microsoft Office 365 live editor respectively.
3rd phase deliverables -
- Addon of Google Docs.
- Add-in of Office 365 Word
- Plugin of Etherpad
- Add feature to extract images from the content and upload it in Drupal's storage.
- Documentation and screencast explaining how to use this module.
For the initial phase of development, I have setup GitHub repository. A dedicated slack channel is created with integrated Trello & GitHub app for ease of communication. Once the module reaches to its working dev state then we will shift the codebase to Drupal.org
First of all my mentors instructed me to do a quick task of reading about all the APIs provided by Drupal to shortlist the APIs we will need in the development of this project. I followed their instructions and after reading them wrote a brief blog post on it Introduction to Drupal 8 API.
In this week, I am working on creating a module skeleton with user's configuration for various modules/plugins. Pull request can be found here.
Directory Structire -
Menu Link at /admin/config
Etherpad Configuration form at /admin/config/collaborative-editors/etherpad
After finishing the module skeleton I started working on establishing a connection with Etherpad through Etherpad HTTP API client library. Commits can be found here.
- Integrating TugBoat was a challenge since we need to automatically run build on one repository when a commit or PR invokes on another repository.