CONTRIBUTING.md 16 KB

EnglishCatalàDeutschEspañolFrançaisहिंदीItalianoNederlandsРусский

日本語한국어PolskiPortuguês (BR)TürkçeTiếng Việt简体中文繁體中文

Contribuir a Roo Code

Roo Code és un projecte impulsat per la comunitat i valorem molt cada contribució. Per garantir un procés fluid i efectiu per a tothom, treballem amb un enfocament "Issue-First". Això vol dir que tota la feina ha d'estar vinculada a una Issue de GitHub abans de presentar un Pull Request (consulta la nostra Política de PR per a més detalls). Llegeix aquesta guia amb atenció per entendre com pots contribuir. Aquesta guia explica com contribuir a Roo Code, ja sigui corregint errors, afegint funcionalitats o millorant la documentació.

Taula de continguts

I. Abans de contribuir

Primer, familiaritza't amb els nostres estàndards comunitaris i la direcció del projecte.

1. Codi de conducta

Tots els col·laboradors han de complir el nostre Codi de conducta. Si us plau, llegeix-lo abans de contribuir.

2. Entendre la fulla de ruta del projecte

Roo Code té una fulla de ruta clara que guia les nostres prioritats i direcció futura. Entendre-la t'ajuda a:

  • Alinear les teves contribucions amb els objectius del projecte
  • Identificar àrees on la teva experiència sigui més valuosa
  • Comprendre el context darrere de certes decisions de disseny
  • Inspirar-te per a noves funcionalitats que donin suport a la nostra visió

La nostra fulla de ruta actual se centra en sis pilars clau:

Suport de proveïdors

Volem donar suport al màxim nombre de proveïdors possible:

  • Més suport "Compatible amb OpenAI"
  • xAI, Microsoft Azure AI, Alibaba Cloud Qwen, IBM Watsonx, Together AI, DeepInfra, Fireworks AI, Cohere, Perplexity AI, FriendliAI, Replicate
  • Millor suport per a Ollama i LM Studio

Suport de models

Volem que Roo funcioni amb el màxim nombre de models possible, inclosos models locals:

  • Suport de models locals mitjançant prompts i fluxos de treball personalitzats
  • Avaluacions i casos de prova de benchmarking

Suport de sistemes

Volem que Roo funcioni bé a qualsevol ordinador:

  • Integració de terminal multiplataforma
  • Suport fort i coherent per a Mac, Windows i Linux

Documentació

Volem documentació completa i accessible per a tots els usuaris i col·laboradors:

  • Guies i tutorials ampliats
  • Documentació clara de l'API
  • Millor orientació per a col·laboradors
  • Recursos de documentació multilingüe
  • Exemples interactius i fragments de codi

Estabilitat

Volem reduir significativament els errors i augmentar les proves automatitzades:

  • Interruptor de registre de depuració
  • Botó per copiar "Informació de màquina/tasca" per a sol·licituds de suport o errors

Internacionalització

Volem que Roo parli l'idioma de tothom:

  • 我们希望 Roo Code 说每个人的语言
  • Queremos que Roo Code hable el idioma de todos
  • हम चाहते हैं कि Roo Code हर किसी की भाषा बोले
  • نريد أن يتحدث Roo Code لغة الجميع

Agraïm especialment les contribucions que avancin els objectius de la nostra fulla de ruta. Si treballes en alguna cosa alineada amb aquests pilars, esmenta-ho a la descripció del teu PR.

3. Uneix-te a la comunitat Roo Code

Connectar amb la comunitat Roo Code és una excel·lent manera de començar:

  • Mètode principal:
    1. Uneix-te a la comunitat Roo Code a Discord.
    2. Un cop dins, envia un missatge directe (DM) a Hannes Rudolph (Discord: hrudolph) per comentar el teu interès i rebre orientació.
  • Alternativa per a col·laboradors experimentats: Si et sents còmode amb l'enfoc issue-first, pots participar directament a GitHub seguint el tauler Kanban i comunicant-te mitjançant issues i pull requests.

II. Trobar i planificar la teva contribució

Identifica en què t'agradaria treballar i com abordar-ho.

1. Tipus de contribucions

Acceptem diversos tipus de contribucions:

  • Correcció d'errors: Solucionar problemes en el codi existent.
  • Noves funcionalitats: Afegir noves funcionalitats.
  • Documentació: Millorar guies, exemples o corregir errors tipogràfics.

2. Principi clau: Enfoc Issue-First

Totes les contribucions han de començar amb una Issue de GitHub. Aquest pas és fonamental per garantir l'alineació i evitar esforços innecessaris.

  • Cerca o crea una Issue:
    • Abans de començar, busca a GitHub Issues si ja existeix una issue per a la teva contribució.
    • Si existeix i no està assignada, comenta a la issue per expressar el teu interès. Un mantenidor te l'assignarà.
    • Si no existeix, crea'n una de nova utilitzant la plantilla adequada a la nostra pàgina d'issues:
      • Per a errors, utilitza la plantilla "Bug Report".
      • Per a noves funcionalitats, utilitza la plantilla "Detailed Feature Proposal". Espera l'aprovació d'un mantenidor (especialment @hannesrudolph) abans de començar a implementar.
      • Nota: Les idees generals o discussions preliminars sobre funcionalitats poden començar a GitHub Discussions. Quan la idea sigui més concreta, s'ha de crear una issue de "Detailed Feature Proposal".
  • Reclama i assigna:
    • Indica clarament la teva intenció de treballar en una issue comentant-la.
    • Espera que un mantenidor te l'assigni oficialment a GitHub. Així evitem que diverses persones treballin en el mateix.
  • Conseqüències de no seguir-ho:
    • Els Pull Requests (PRs) enviats sense una issue corresponent, preaprovada i assignada poden ser tancats sense revisió completa. Aquesta política existeix per garantir que les contribucions estiguin alineades amb les prioritats del projecte i per respectar el temps de tothom.

Aquest enfoc ens ajuda a fer el seguiment de la feina, garantir que els canvis siguin desitjats i coordinar els esforços de manera efectiva.

3. Decidir en què treballar

  • Good First Issues: Consulta la secció "Issue [Unassigned]" del nostre Projecte Roo Code Issues a GitHub.
  • Documentació: Tot i que aquest CONTRIBUTING.md és la guia principal per a contribucions de codi, si t'interessa contribuir a altra documentació (com guies d'usuari o API), revisa el repositori Roo Code Docs o pregunta a la comunitat de Discord.
  • Proposar noves funcionalitats:
    1. Idea inicial/discussió: Per a idees generals o inicials, inicia una conversa a GitHub Discussions.
    2. Proposta formal: Per a propostes específiques i llestes per a consideració, crea una issue de "Detailed Feature Proposal" utilitzant la plantilla a la nostra pàgina d'issues. Això és clau en el nostre enfoc Issue-First.

4. Informar d'errors o problemes

Si trobes un error:

  1. Cerca issues existents: Revisa GitHub Issues per veure si ja està reportat.
  2. Crea una nova issue: Si és únic, utilitza la plantilla "Bug Report" a la nostra pàgina d'issues.

🔐 Vulnerabilitats de seguretat: Si descobreixes una vulnerabilitat de seguretat, informa-la de manera privada utilitzant l'eina d'avisos de seguretat de GitHub. No creïs una issue pública per a vulnerabilitats de seguretat.

III. Procés de desenvolupament i enviament

Segueix aquests passos per programar i enviar la teva feina.

1. Configuració de desenvolupament

  1. Fork & Clona:
    • Fes un fork del repositori a GitHub.
    • Clona el teu fork localment: git clone https://github.com/EL_TEU_USUARI/Roo-Code.git
  2. Instal·la les dependències: npm run install:all
  3. Executa Webview (mode dev): npm run dev (per a l'app Vite/React amb HMR)
  4. Depura l'extensió: Prem F5 a VS Code (o RunStart Debugging) per obrir una nova finestra Extension Development Host amb Roo Code carregat.

Els canvis a webview (webview-ui) apareixeran immediatament gràcies a Hot Module Replacement. Els canvis a l'extensió principal (src) requeriran reiniciar l'Extension Development Host.

Alternativament, per construir i instal·lar un paquet .vsix:

npm run build
code --install-extension bin/roo-cline-<versió>.vsix

(Substitueix <versió> pel número de versió real del fitxer generat).

2. Guia per escriure codi

  • PRs enfocats: Una funcionalitat/fix per PR.
  • Qualitat del codi:
    • Passar els checks de CI (lint, format)
    • Corregir advertències o errors d'ESLint (npm run lint)
    • Respondre al feedback d'eines automàtiques de revisió de codi
    • Seguir bones pràctiques de TypeScript i mantenir la seguretat de tipus
  • Proves:
    • Afegir tests per a noves funcionalitats
    • Executar npm test per assegurar que tot passa
    • Actualitzar tests existents si el teu canvi els afecta
  • Missatges de commit:
    • Escriure missatges clars i descriptius
    • Referenciar issues rellevants amb #número-issue (ex: Fixes #123)
  • Checklist abans d'enviar PR:
    • Rebasejar la teva branca sobre l'últim main de l'upstream
    • Assegura't que el codi compila (npm run build)
    • Verifica que tots els tests passen (npm test)
    • Elimina qualsevol codi de depuració o console.log

3. Enviar codi: Procés de Pull Request (PR)

Pull Requests en esborrany

Utilitza PRs en esborrany per a feina que encara no està llesta per a revisió completa però per la qual vols:

  • Executar checks automàtics (CI)
  • Rebre feedback primerenc de mantenidors o altres col·laboradors
  • Indicar que la feina està en curs

Marca un PR com a "Llest per a revisió" només quan tots els checks passin i creguis que compleix els criteris de "Guia per escriure codi" i "Descripció del Pull Request".

Descripció del Pull Request

La descripció del teu PR ha de ser completa i seguir l'estructura de la nostra Plantilla de Pull Request. Elements clau:

  • Un enllaç a la Issue de GitHub aprovada que aborda
  • Descripció clara dels canvis realitzats i el seu propòsit
  • Passos detallats per provar els canvis
  • Llista de qualsevol canvi important (breaking changes)
  • Per a canvis de UI, proporciona captures de pantalla o vídeos de l'abans i el després
  • Indica si el teu PR requereix actualitzar documentació d'usuari i quins documents o seccions es veuen afectats

Política de Pull Request (PR)

Objectiu

Mantenir un backlog de PRs net, enfocat i gestionable.

Enfoc Issue-First
  • Requerit: Abans de començar, ha d'existir una Issue de GitHub aprovada i assignada (ja sigui "Bug Report" o "Detailed Feature Proposal").
  • Aprovació: Les Issues, especialment les de canvis importants, han de ser revisades i aprovades pels mantenidors (especialment @hannesrudolph) abans de començar a programar.
  • Referència: Els PRs han de referenciar explícitament aquestes Issues preaprovades a la seva descripció.
  • Conseqüències: No seguir aquest procés pot resultar en el tancament del PR sense revisió completa.
Condicions per a PRs oberts
  • Llest per merge: Passa tots els tests de CI, s'alinea amb la fulla de ruta del projecte (si s'escau), està vinculat a una Issue aprovada i assignada, té documentació/comentaris clars, inclou imatges o vídeos d'abans i després per a canvis de UI
  • Per tancar: Falla en tests de CI, conflictes de merge importants, desalineació amb els objectius del projecte o inactivitat prolongada (>30 dies sense actualitzacions després de feedback)
Procediment
  1. Qualificació i assignació d'Issues: @hannesrudolph (o altres mantenidors) revisen i assignen Issues noves i existents.
  2. Triage inicial de PRs (diari): Els mantenidors fan una revisió ràpida dels PRs entrants per filtrar urgències o problemes crítics.
  3. Revisió exhaustiva de PRs (setmanal): Els mantenidors revisen a fons els PRs per avaluar preparació, alineació amb la Issue aprovada i qualitat general.
  4. Feedback detallat i iteració: Segons la revisió, els mantenidors donen feedback (Aprovar, Sol·licitar canvis o Rebutjar). S'espera que els col·laboradors responguin i millorin segons sigui necessari.
  5. Etapa de decisió: Els PRs aprovats es fusionen. Els PRs amb problemes irresolubles o desalineats poden ser tancats amb una explicació clara.
  6. Seguiment: Els autors de PRs tancats poden abordar el feedback i obrir-ne de nous si es resolen els problemes o canvia la direcció del projecte.
Responsabilitats
  • Qualificació d'Issues i compliment del procés (@hannesrudolph & mantenidors): Assegurar que totes les contribucions segueixin l'enfoc Issue-First. Guiar els col·laboradors en el procés.
  • Mantenidors (equip de desenvolupament): Revisar PRs, donar feedback tècnic, prendre decisions d'aprovació/rebuig i fusionar PRs.
  • Col·laboradors: Assegurar que els PRs estiguin vinculats a una Issue aprovada i assignada, compleixin amb les guies de qualitat i responguin ràpidament al feedback.

Aquesta política garanteix claredat i integració eficient.

IV. Legal

Acord de contribució

En enviar un pull request, acceptes que les teves contribucions es llicenciïn sota la Llicència Apache 2.0 (o la llicència actual del projecte), igual que el projecte.