Guías de Contribución
Ya sean de código abierto o internas, los repositorios de Solana necesitan reglas de contribución claras: quién revisa los cambios en los programas, cómo proponer ADRs y cómo esta guía acepta correcciones de artículos.
Receta
Tarjeta de receta de referencia rápida - lista para copiar y pegar.
## Lista de verificación de PR
- [ ] Las pruebas pasan (prueba de anclaje / LiteSVM)
- [ ] IDL actualizado si la interfaz del programa cambió
- [ ] ADR enlazado si es arquitectónico
- [ ] Runbook actualizado si las operaciones cambiaron
- [ ] No hay secretos en la diferenciaCuándo usar esto:
- Publicación de
CONTRIBUTING.mden GitHub - Incorporación de contratistas
- Lanzamiento de la comunidad de código abierto
- Corrección de la guía por parte del lector
Ejemplo de Trabajo
# CONTRIBUTING.md (extracto)
## Ramas
- `main` protegido; requiere 2 aprobaciones en `programs/`
- Característica: `feat/withdraw-v2`
## Commits
feat(lending): agregar instrucción withdraw_v2
fix(client): análisis de cantidad bigint
docs(incident): actualizar runbook de pausa
## Seguridad
security@company.com - no abrir problemas públicos para exploits# CODEOWNERS
programs/ @solana-team-leads
docs/runbooks/ @sre-oncall
site/solana/ @docs-maintainersLo que esto demuestra:
- Protección de ramas alineada con el riesgo
- Commits convencionales para notas de lanzamiento
- Canal de seguridad privado
- Enrutamiento de CODEOWNERS
Análisis Profundo
Tipos de Contribución
| Cambio | Revisores | Puertas adicionales |
|---|---|---|
| Lógica del programa | 2 seniors + seguridad | Pruebas de atacante LiteSVM |
| Solo cliente | 1 senior | Simular humo |
| Guía de documentación | 1 mantenedor | lint-docs |
| Runbook | Propietario de operaciones | Perforación opcional |
Contribuciones a la Guía
- Corregir errores fácticos mediante PR a
site/solana/ - Coincidir versiones de pila en manifest.json
- No usar guiones largos; pie de página de pila en la última línea
Trampas
- PR de programa de pasada sin contexto - Rechazar cortésmente; requerir enlace RFC. Solución: Plantilla CONTRIBUTING.
- Problema de exploit público - Riesgo de imitadores. Solución: Política de seguridad prominente.
- Documentación sin lint - Se envían enlaces rotos. Solución: CI
lint-docsverificación requerida. - Dependencia sin licencia - Riesgo legal. Solución: Lista de permitidos de licencias
cargo deny. - Forzar push a main - Incidente esperando suceder. Solución: Protección de ramas.
Alternativas
| Alternativa | Usar cuándo | No usar cuándo |
|---|---|---|
| Fork + PR solamente | Código abierto | Monorepo interno |
| Fusión de tronco | Mantenedor en solitario | Programa que maneja fondos |
| Firma DCO | Proyectos Apache | Equipo interno pequeño |
Preguntas Frecuentes
¿Primera contribución?
Elegir good first issue en cliente o documentación; no en seguridad del programa.
¿Se requiere CLA?
Política de la organización; el código abierto a menudo sí.
¿SLA de revisión?
Documentar en CONTRIBUTING - por ejemplo, 2 días hábiles de primera respuesta.
¿Quién fusiona?
El autor no puede fusionar su propia PR de programa; fusión de guardia para hotfix con aprobación de IC.
¿Notas de lanzamiento?
A partir de commits convencionales en la etiqueta; se incluye el aumento de la versión de IDL.
¿Traducir documentación?
Inglés primero; pipeline translate-es post-lanzamiento.
¿PRs generadas por IA?
El humano debe verificar las afirmaciones de Solana; la responsabilidad del revisor no cambia.
¿Deprecación?
ADR + semver + fecha de puesta a sol en CHANGELOG.
¿RFC de comunidad?
Discusión de GitHub -> triaje interno -> RFC de ingeniería si se acepta.
¿Estilo de página de guía?
Seguir la columna vertebral del artículo sme-content; ver páginas hermanas en la sección.
Relacionados
- Convenciones de Documentación - dónde vive la documentación
- Estándares de Codificación y Programas - estilo de código
- Programa de Auditoría y Recompensas por Errores - recepción de seguridad
Versiones de pila: Esta página fue escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0, y LiteSVM 0.6.x.