Closed plamarque closed 1 month ago
@srenault-meeds @margondicco I'm submitting this new MIP for the Crowdin Connector, providing the ability to incentivize community translators
@plamarque I have a question. In order to boost translations for a language or a folder, it would be really interesting to add a parameter to the action like language, folder. WDYT?
Yes, I have requirements for that but no mockup. I intend to implement them as additional fields in step 2 of the drawer
Ok yes it would be nice indeed. No blocker for me of course.
Go fonc, of course
Technical spec added. To check please @rdenarie
Hello, go tech
MIP ready for review by the DAO members (cc @rdenarie ). Acc up & running.
Ok, for me, you can proceed to merge
Rationale
Content translation is a very accessible and popular activity in communities. One of the best solutions for translation management is Crowdin.com. It has 120K projects and 2 million users.
Meeds is currently running a rewarding program for translation, but it requires significant review effort and can only work in batches. A technical integration would allow the capture and point allocation to be automated.
1. Functional Requirements
The Crowdin Connector should be capable of:
Top User Stories
Contributor
Program Owner
As a program owner, I can add an automated action to reward a fixed amount of points when users on Crowdin :
As a program owner, I can create an automated action that will track translations on a specific folder of the Crowdin project
As a program owner, I can create an automated action that will track translations on a specific language of the Crowdin project
As a program owner, I can create an automated action that will track only human translations (rather than MT or TM)
Connector Administration
Impacts
Gamification
Notifications
Analytics
Unified Search
2. Technical Requirements
Expected Volume & Performance
Terminology
Security
*The Oauth Tokens don't have to be stored in the Meeds database, but only used to validate user accounts on external provider
The API key (secret) used by Crowdin to transmit triggered events into the Meeds server has to be generated by the rewarding manager using a specific UI in the Gamification administration UI inside Crowdin connector settings. This Meeds API Key has to be encrypted using
CodecInitializer
before storing it in the database.A Crowdin oAuth Client & Secret keys have to be provided by rewarding admin in a dedicated UI. Those oAuth Keys have to be encrypted using
CodecInitializer
before storing it in the database. Those Keys will be used to validate the oAuth Token provided by the user from the Meeds Server to the Crowdin Server.Extensibility
Configurability
Upgradability
NA
Existing Features
NA
Feature Flags
No feature flag is needed.
Other Non Functional Requirements
Source code The Crowdin Connector should have a dedicated code repository.
Packaging The Crowdin Connector should be packaged as a separate add-on.
Webhooks
translation.user.username
suggestion.added
suggestion.deleted
translation.user.username
suggestion.approved
suggestion.disapproved
suggestion.approved
suggestion.disapproved
comment.user.username
stringComment.created
stringComment.deleted
4. Software Architecture
Security
CodecInitialize
before storing them in the database usingSettingService
withGlobal
context andCrowdin
ApplicationScope
.REST endpoints
Some REST endpoints have to be added to serve new assets:
/crowdin/hooks
: this will allow the admin to manage webhooks (add, update, delete)/crowdin/webhooks
: this endpoint will manage external webhooks events.Services & processing
io.meeds.gamification.service.RealizationService.createRealizationsAsync
. The queue has to hold the objects sent by WebHook without parsing dataData and persistence
GAMIFICATION_EVENTS
gamification tableGAMIFICATION_CONNECTOR_ACCOUNTS
gamification tableCROWDIN_WEBHOOKS