Skip to content

Final Work Submission for GSoC'21 under CERN-HSF

Notifications You must be signed in to change notification settings

jimil749/GSoC-Report

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

GSoC Logo

Runtime Plugin Ecosystem Support for oCIS

By: Jimil Desai

About Me

Hey there! I am Jimil Desai, B.Tech Information and Communication Technology student at School of Engineering and Applied Science, Ahmedabad University. This repository contains a summary of work done by me during Google Summer of Code 2021 under CERN-HSF.

Special thanks to my Mentors and the REVA Community

First off, I would like to thank my mentors and the entire CS3 community for helping me throughout the journey and making me a better software developer in the process

Aim

The project aims to add Runtime pluggability to the Reva framework in order to improve overall developer experience. This enhancement would allow plugins to be loaded at runtime in Reva.

Work Summary

Link to Project: https://github.com/cs3org/reva/projects/2

Issues and Discussion

  1. Design and Integration

    • Detailed discussions on design and integration of runtime plugins into Reva.
    • Plugin package: Finalized plugin architecture.
  2. Fetching Plugins from github repo

    • Detailed discussion on "how to enable Reva to fetch plugins from github repostiry".

Pull Requests

  1. Go-Plugin Benchmarking

  2. Plugin Package

    • Finalized the plugin framework after discussion with the mentors. Selected Framework: Hashicorp's go-plugin over RPC.
    • Introduced Plugin package in the Reva codebase, which supports loading plugins at runtime.
    • Ensured minimal changes in the configuration for backwards compatibility.
    • Migrated the existing in-memory JSON driver from the userprovider service to runtime paradigm.
    • Supported 3 ways of loading plugins:
      • Load already compiled binary
      • Compile the source code and load the binary
      • Load plugins from in-memory registry
  3. Enable fetching plugins from github

    • Added a new feature to download, compile and load plugins hosted on Github.
    • User can specify multiple protocols to download the source code.
  4. Methods to get and set context

    • Created methods, GetContextKV to extract context values from context and PutContextKV to put context values into context type.
  5. Migrated User/Token context methods into Separate package

    • Refractored the code base by separating the user and token context methods into a separate package.
    • Used to "Get" and "Set" user and token context.
    • Used by RPC packages to send context data over RPC to plugins.
  6. Documentation

    • Added basic developer manual/documention describing the Reva plugin architecture.
    • Documentation serves as guide for the reva plugin developers.
  7. Blog

    • Maintained a blog describing my weekly work and my entire journey, check it out if you are more interested in my work! :)

Pre-GSoC

  1. Make commands to run litmus-tests

    • My first contribution to Reva project.
    • Added Make command to run litmus tests which provided an easy way to run litmus tests.
  2. OCM Invitation Workflow Commands

    • Added CLI commands:
      • ocm-invite-generate: to generate an invitation token
      • ocm-invite-forward: to forward the invitation token to the mesh provider
  3. Modularized API Token Management

    • Refractored the GRAPPA Driver code to remove code duplication.

Note: All of these PRs are not merged yet.

Contact

About

Final Work Submission for GSoC'21 under CERN-HSF

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published