Redmine: https://projects.artefactual.com/issues/8161
Intro
There is a piece of work particularly challenging in the Archivematica I18N project that this document tries to break down into smaller units of work. Archivematica's workflow data is currently kept in a relational database managed by the Dashboard. It includes information about the microservices, including human-readable strings (labels) that are shown in the user interface. These strings need to be translated into other languages other than English.
The workflow data is currently considered static data not editable by the user. Keeping it in the database makes it hard to maintain (e.g. changes require database migrations) and hard to translate. This document suggests pulling this workflow data our of the database and store it in a simple JSON file - simplest way I can think of but with the goal of making much easier to introduce new way to describe our workflow rules in the future. This is considered an implementation detail specific to MCPServer that we want to encapsulate - in other words, we want to hide this mechanism from the consumers: MCPClient and Dashboard. MCPServer will expose a new API based on the gRPC protocol.
gRPC's Python implementation offers us the possibility to build scalable API client and servers without extra gateway interfaces like gunicorn or Apache/mod_wsgi. gRPC implements its own C shared library used in many of their platform-specific libraries like C++, Ruby, Python, PHP or NodeJS.
Index
- Project plan
- Development notes
- Extra files:
- Some of our work-in-progress branches: