Meeds-io / MIPs

The Meeds Improvement Proposal repository
0 stars 0 forks source link

Crowdin Connector #121

Closed plamarque closed 1 month ago

plamarque commented 4 months ago

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

Image

Program Owner

Connector Administration

Image

Image

Event Name Description Contribution Owner Cancel Event
Add Translation Suggest a translation user who suggested the translation The translation is deleted
Approve Translation Approve a translation user who approved the translation Approval is removed
Translation Approved User translation is approved user who suggested the approved translation Approval is removed
Comment String Comment on a string user who commented String comment or issue is deleted

Image

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

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

https://developer.crowdin.com/api/v2/#operation/api.projects.webhooks.post Event Contribution user Crowdin Webhook Event Cancel Event
Add Translation translation.user.username suggestion.added suggestion.deleted
Approve Translation translation.user.username suggestion.approved suggestion.disapproved
Translation Approved suggestion.approved suggestion.disapproved
Comment on a String comment.user.username stringComment.created stringComment.deleted

4. Software Architecture

Security

Note: meeds_api_key: Key generated through UI that has to be personal and non-unique. This key will be encrypted before storing it inside Database, using CodecInitializer.

Warning: The Access Token of user must not be stored in internal database.

REST endpoints

Some REST endpoints have to be added to serve new assets:

Services & processing

Data and persistence

plamarque commented 4 months ago

@srenault-meeds @margondicco I'm submitting this new MIP for the Crowdin Connector, providing the ability to incentivize community translators

srenault-meeds commented 4 months ago

@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?

plamarque commented 4 months ago

Yes, I have requirements for that but no mockup. I intend to implement them as additional fields in step 2 of the drawer

srenault-meeds commented 4 months ago

Ok yes it would be nice indeed. No blocker for me of course.

Go fonc, of course

AzmiTouil commented 1 month ago

Technical spec added. To check please @rdenarie

rdenarie commented 1 month ago

Hello, go tech

AzmiTouil commented 1 month ago

MIP ready for review by the DAO members (cc @rdenarie ). Acc up & running.

rdenarie commented 1 month ago

Ok, for me, you can proceed to merge