Make the software deposit service (swh-deposit) modular (GSoC task)
Introduction
The Software Heritage archive is the most comprehensive open data knowledge base about source code that has been published openly.
In addition to fetching source code from public repositories, it offers to Deposit service, to allow platforms to send code for Software Heritage to archive.
This service is currently written as a monolith, that grew over years to include a complete SWORDv2 server, a partial SWORDv2 client with extensions, and business logic specific to Software Heritage in both. This makes the current code hard to maintain and impossible to reuse.
Task description
swh-deposit would need to be split into the following parts:
- a generic SWORDv2 server (based on Django)
- a generic SWORDv2 client
- server-side business logic (currently implemented mostly in swh/deposit/api/common.py, but is tightly coupled with the views)
- client-side business logic
The generic server and client will need to be extensively documented, so they can be reused by other software projects.
Possible extensions include:
- The code should also be designed to allow extensions to support SWORDv3, if we ever need to support it
- A new administration front-end and/or addition of administrative tools in swh-web
Expected duration
175 hours. Difficulty: medium
Desirable skills
- Python 3 and Git are a must to work on any Software Heritage project
- Basic understanding of the Software Heritage data model and of SWHID identifiers
- Experience with Django