# Universal plugin SDK

### In short:

* The Universal plugin SDK is an open-source framework for developing edtech plugins that are compatible with all major educational software (build once, plug to many)
* The Universal plugin SDK will allow data space participants to easily integrate any solution into any other without having to develop integrations each time

### Timeline

Start date: T0 + 16 months (T0 = expected: Q1 2023)

End date : T0 + 36 months

Duration (in months): 20

#### Where we are now

* The work will start Q2 of 2024. Want to learn more and join the effort: join [here](/fundamentals/working-groups.md)!

### Objectives and Expected Outcomes

The objective of this building block is to specify and develop a software development kit (SDK) for the development of universal plugins, i.e. plugins that are compatible with the main softwares used in education and training. Most software such as Moodle, Blackboard, Canvas, Microsoft Teams for Education or Zoom allow the enrichment of their functionalities via plugins/APIs. Each of these platforms actually requires specific developments, according to different languages (php, C# .net, etc) and/or different data models. Each integration/plugin development represents a significant cost for edtech companies who usually only integrate or develop the plugin for the main softwares reinforcing data centralization.

This task aims to develop an open-source framework for developing plugins that are compatible with all major educational software (build once, plug to many). This would simplify plugin development in a similar way to what React Native has been able to do for multi-OS (iOS/Android) mobile app deployment and what IMS has started to do with the Learning Interoperability Tool ([LTI](https://www.imsglobal.org/activity/learning-tools-interoperability)) standard.

A framework that fills in the missing pieces of interoperability would therefore reinforce the dissemination of innovative products and services developed by the European edtech ecosystem. It should also be noted that this would allow for the operationalization of the right to data portability, which is supposed to be guaranteed by the RGPD but which in practice generally only translates into the possibility for users to recover their data in .zip format. With more interoperability between LMSs, the learner will be able to more easily allow the circulation of his data from one software to another without being locked in (vendor lock-in).

### Scope&#x20;

* State of the art of the plug-in frameworks of the main software and tools used in the field of education and training in France and in Europe from the list identified in the working groups of the Data space Education & Skills (i.e. Moodle, Teams, Zoom, LTI)
* Modeling of priority functionalities
* Design of the development kit (SDK: Software Development Kit) and generic and reusable modular elements (templates)
* Development tests from the SDK
* Drafting of public documentation, hosting and putting it online

### Deliverables

<table data-header-hidden><thead><tr><th width="102.33333333333331"></th><th width="99"></th><th></th></tr></thead><tbody><tr><td>#</td><td>Availability</td><td>Deliverable</td></tr><tr><td>3.1.1</td><td>T0 + 16</td><td>Documents : Specification and state of the art</td></tr><tr><td>3.1.2</td><td>T0 + 24</td><td>Development of the SDK in beta version (v0)</td></tr><tr><td>3.1.3</td><td>T0 + 32</td><td>QA test report</td></tr><tr><td>3.1.4</td><td>T0 + 36</td><td>Final version (v1) of the SDK and public documentation</td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dataspace.prometheus-x.org/building-blocks/interoperability/universal-plugin-sdk.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
