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.
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
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.
Link to Project: https://github.com/cs3org/reva/projects/2
-
- Detailed discussions on design and integration of runtime plugins into Reva.
- Plugin package: Finalized plugin architecture.
-
Fetching Plugins from github repo
- Detailed discussion on "how to enable Reva to fetch plugins from github repostiry".
-
- Performed Benchmarking for various go-plugin framework to analyse, compare and select the best plugin framework for our case.
- Packages Benchmarked:
- Used the existing
JSON
plugin fromuserprovider
service for Benchmarking purposes.
-
- 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 theuserprovider
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
-
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.
-
Methods to get and set context
- Created methods,
GetContextKV
to extract context values from context andPutContextKV
to put context values into context type.
- Created methods,
-
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.
-
- Added basic developer manual/documention describing the Reva plugin architecture.
- Documentation serves as guide for the reva plugin developers.
-
- Maintained a blog describing my weekly work and my entire journey, check it out if you are more interested in my work! :)
-
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.
-
OCM Invitation Workflow Commands
- Added CLI commands:
ocm-invite-generate
: to generate an invitation tokenocm-invite-forward
: to forward the invitation token to the mesh provider
- Added CLI commands:
-
Modularized API Token Management
- Refractored the GRAPPA Driver code to remove code duplication.
Note: All of these PRs are not merged yet.