Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Desmitificando el Mantenimiento- DjangoCon US

Desmitificando el Mantenimiento- DjangoCon US

KatherineMichel

September 07, 2021
Tweet

More Decks by KatherineMichel

Other Decks in Technology

Transcript

  1. Objetivos de la Charla • Fundamentos del mantenimiento • Un

    caso de estudio: Sitio Web de DjangoCon US • Un caso de estudio: Pinax • Lecciones aprendidas
  2. Terminología de GitHub • Repo, branch • Fork, clone, commit,

    submit • Issue, pull request (PR) • Fetch, push, update, merge, delete • Community health files, templates • Change log
  3. El mantenimiento no es sólo acerca de código Es también

    sobre: • Personas • Comunidad • Proceso • Comunicación • Amabilidad
  4. Intenta ponerte en los zapatos del colaborador Haz del proceso

    de contribución lo más fácil posible
  5. Algunos Signos de un Proyecto Saludable • Hay un ambiente

    de bienvenida • Hay actividad reciente • Los mantenedores responden rápidamente • Los mantenedores reducen issues/pull requests
  6. Proceso Ideal Para futuros colaboradores: • Encontrar un proyecto •

    Estar de acuerdo con el Código de Conducta • Lee el archivo CONTRIBUTING.md • Usa docs, issue/pull request templates • Submit issue/pull request • El mantenedor responde rápidamente
  7. Documentación • Muy valorado • Usualmente se pasa por alto

    • Es un medio para establecer comunidades inclusivas y accesibles -De la encuesta sobre código abierto de GitHub de 2017
  8. Modelo de Repo Compartido Repo del sitio web de DjangoCon

    US Hace push a las branches, crea pull requests Puede hacer push o pull gracias al “write permission”, no necesitas hacer fork Clonar Entorno de desarrollo
  9. Modelo de Fork y Pull Repo del sitio web de

    DjangoCon US Fork Submit pull request Push cambios, incluyendo branches Entorno de desarrollo
  10. Crear un Pull Request DjangoCon US Sitio Web Repo Crear

    un Nuevo Pull Request Título y descripción Crear Elige branches
  11. Revisando un Pull Request Botón de Merge Instrucciones de linea

    de comando Revisa los cambios Título y descripción
  12. Pull Request: Opciones Si No Ejecutas el Código Localmente •

    Si no se necesita ningún cambio o el cambio se puede hacer en el navegador • Realice el cambio en el navegador • Haga clic en merge
  13. Pull Request: Opciones Si Ejecutas el Código Localmente • Si

    no se necesita ningún cambio, vuelve al navegador y haz clic en merge • Si se necesita un cambio, pídale al colaborador que lo haga, o submit mismo la actualización, y luego haga clic en merge
  14. Pull Request: Comandos Branch en un Repo Compartido Branch en

    un Forked Repo $ git fetch origin $ git checkout -b <branch-name> origin/<branch-name> $ git merge main $ git push origin <branch-name> $ git checkout -b <branch-name> main $ git pull https://github.com/<user-name>/<repo-name> <branch-name> $ git push https://github.com/<user-name>/<repo-name> <branch-name>
  15. Licencias • Licencias no copyleft • Licencias Copyleft • Licencias

    éticas • GitHub “Choose a License” (Elija una Licencia)
  16. Seguridad • Software supply chain • Nivel individual (2FA, acceso

    limitado) • Nivel organizacional (secreto y dependencia scanning) • Nivel de proyecto (releases nuevas, security plan)
  17. Más Funciones Útiles de GitHub • Issue y pull request

    templates • Global Community Health File Repo • Project Boards, milestones, issues, labels • Wiki, GitHub Pages/Jekyll • Labels/triaging, topics, publicaciones de blog
  18. Puntos Clave Una oportunidad para: • Aprender los fundamentos de

    mantenimiento • Crecer en una comunidad de colaboradores
  19. • Hacer fetch a un pull request localmente • Ejecutar

    el código • Hacer push a una actualización desde un fork a un pull request • Hacer merge a un pull request localmente • Hacer push a un pull request a una `main` branch Yo aprendí como...
  20. Los Errores Desaparecen en el Historial de Git • Está

    bien tener una mentalidad de principiante; cometer errores, seguir mejorando
  21. La Perspectiva del Principiante es Valiosa • Los veteranos del

    proyecto no pueden verlo con los ojos de un principiante • Mejorar el proyecto para la próxima persona • Por ejemplo: crear docs de instalación
  22. Logrando Resultados 10x 10x habilidades que no involucrar escribir código

    • Mantener los docs • Hacerle publicidad al proyecto • Ser mentor de los colaboradores
  23. Vocabulario de Pinax • Pinax Starter Project es un Proyecto

    de Inicio de Pinax • Pinax app es una aplicación Pinax • Pinax CLI (Command line interface) es una interfaz de línea de comandos • Pinax Themes son Temas Pinax
  24. Vocabulario de Testing • Test es prueba • Test matrix

    es matriz de pruebas • Continuous integration es integración continua
  25. Vocabulario de Packaging • Package es paquete • Release notes

    son notas de versión • Tag es etiqueta • Publish es publicar
  26. Puntos Clave Una oportunidad para: • Mantener una librería compleja

    de Django • Convertirte en un Python package release manager • Aprenda a lidiar con el síndrome de lavadero
  27. Fui Contratado por Eldarion para Mantener Pinax Pinax: una librería

    de código abierto de Starter Projects, apps y temas reutilizables de Django para crear sitios web
  28. Cómo Iba 80 Proyectos y Apps account blog static stripe

    waitinglist zero company documents team-wiki wiki forums socialauth Pinax Themes Popular Pinax Apps Pinax Starter Projects django-user-accounts pinax-stripe pinax-announcements pinax-badges pinax-blog pinax-calendars pinax-cohorts pinax-comments pinax-documents pinax-eventlog pinax-events pinax-forums pinax-images pinax-invitations pinax-likes pinax-messages pinax-news pinax-notifications pinax-points pinax-ratings pinax-referrals pinax-submissions pinax-teams pinax-testimonials pinax-types pinax-waitinglist pinax-webanalytics pinax-wiki pinax-templates pinax-theme-bootstrap
  29. Pinax Starter Projects • Los starter projects están en uno

    repo • Cada starter project está en una branch individual
  30. Pinax Apps en Starter Projects Cada starter project contiene las

    Pinax apps relevantes, para ser instaladas desde PyPI (Python Package Index)
  31. Pinax Apps Independiente Alternativamente, puedes usar Pinax apps independiente de

    cualquier Pinax Starter Project Buscas “pinax” en PyPI
  32. Un Release Típico • Actualizar la test matrix • Agregar

    nuevas funciones • Implementar nuevas mejores prácticas • Arreglar las depreciaciones • Mejorar la documentación
  33. Manteniendo Pinax Apps • GitHub Flow flujo de trabajo •

    CalVer en el release-nivel (año.mes) • SemVer en el aplicación-nivel (major.minor.patch)
  34. pyenv y tox Puedes usar pyenv para instalar múltiples versiones

    de Python globalmente... Entonces tox puede ejecutar la test matrix Terminal
  35. Release 20.07 • 28 apps incluidas • Discontinuamos el soporte

    para Python 2.7 • Un hito importante para mí, personal y profesionalmente
  36. Mejoras Importantes que He Dirigido • Documentación del conocimiento tribal

    • Consolidation de docs, en un lugar fácil de encontrar • Estandarización de las configuraciones • Creación de docs de release y mantenimiento • Creación de Community Health Files y Templates • Reducción significativa en issues y pull requests
  37. Reducir el Alcance • Marcar repos como obsoletos • Archivar

    repos • Desactivar issues • Comunicar que los mantenedores mantienen el código esporádicamente
  38. Centralizar el Acceso y el Conocimiento • Centralizar el acceso

    • Estar dispuesto a dar acceso a otras personas • Evitar soluciones que sean muy únicas
  39. Gestión de Mantenedores Voluntarios • Dar permisos selectivos • Proteger

    branches • Requerir revisiones • Usar status checks • Revertir un pull request, si es necesario
  40. Cuando Necesites Ayuda • Google • Stack Overflow • GitHub

    docs • Git docs • Atlassian y GitLab docs
  41. Contrato Social de OS “... open source maintainers owe you

    quite literally nothing when it comes to their open source code, and treating them poorly is unethical.” - Brett Cannon, Python Core Dev
  42. Ventajas del mantenimiento • Aprender habilidades técnicas • Encontrar nuevas

    oportunidades profesionales • Asistir a conferencias • Conocer personas inteligentes e interesantes • Viajar a lugares increíbles