Bonjour,
Here is how the data will flow through fedeproxy. Whenever the user changes the DB via the web interface, the fedeproxy instance in charge of a given forge will retrieve the change via the REST API and transform it into an internal pivot format that will be stored in the DVCS provided by the forge (the fedeproxy instance itself is stateless, it has no presistent storage). It will then convert this pivot format into an ActivityPub type (commit) and publish the activity.
The fedeproxy instance in charge of the other forge receives the commit activity and uses it to git fetch the details directly from the DVCS of the other forge. It then converts the pivot format into REST API calls to change the DB of the forge, on behalf of the user of the other forge.
Cheers
Converted with asciigrid
:-)
|
v
+----------- web ---+
| forge | | |
|-------/ +----+ |
| +-----| UI | |
| | +--+-+ |
| | | |
| +--+---+ +-+--+ |
| | DVCS | | DB |
| +--+---+ +----+ |
| | | |
+--- git ---- REST--+
| |
| |
| |
| | +--------------------------------------+
| | |fedeproxy | |
| | |---------/ |
| | | |
| | | +-----------+ +-------------+ |
| \--------------+--| forge API | | ActivityPub -<>---\
| | +-------^---+ +------^------+ | |
| | | | | |
| | +-------^------+ | | |
\+---------+------------+--| pivot format >-----------^ | |
\ / | +--------------+ | |
\ / | | |
\ / +--------------------------------------+ |
\ / |
\ |
/ \ |
/ \ +--------------------------------------+ |
/ \ | | |
/ \ | +--------------+ | |
/+---------+------------+--| pivot format >-----------^ | |
| | +-------^------+ | | |
| | | | | |
| | +-------^---+ +------^------+ | |
| /--------------+--| forge API | | ActivityPub -<>---/
| | | +-----------+ +-------------+ |
| | | |
| | |---------\ |
| | |fedeproxy | |
| | +--------------------------------------+
| |
+--- git ---- REST--+
| | | |
| +--+---+ +----+ |
| | DVCS | | DB |
| +--+---+ +-+--+ |
| | | |
| | +--+-+ |
| +-----| UI | |
|-------\ +----+ |
| forge | | |
+----------- web ---+
^
|
:-)