Contribución de código abierto 101
Historia de fondo ⏮
Como mentor en ADPList , a menudo me preguntan sobre mis contribuciones de código abierto como committer de Apache y cómo comenzar con Github.
Ser designado como Committer de Apache ( apache/mxnet#19512 ) fue uno de mis mayores logros en el mundo de la codificación y la tecnología. Deseo compartir los aprendizajes de pasar tiempo con la comunidad de código abierto. Esto me impulsó a ser mentor de profesionales de software en los primeros años de su carrera y estudiantes universitarios de ciencias de la computación/ing. Este artículo es un intento de responder a la pregunta:
¿Qué haría hoy en noviembre de 2022 si tuviera que comenzar mi viaje en código abierto?
♀ ¿Qué significa código abierto?
Github es el niño del cartel del universo de código abierto, habiendo popularizado la noción de repositorios, solicitudes de extracción y control de versiones. El código abierto se trata esencialmente de deszocratizar el acceso al código fuente. Se trata de derribar los muros pegados con acuerdos de confidencialidad [NDA] y derechos de autor y marcas registradas restrictivos ™️. Esto no implica que el código fuente abierto no tenga licencias o derechos de autor. Se trata de brindar libertad para compartir conocimiento e información públicamente con la seguridad de una cita y referencia adecuadas. El código abierto es un gran nivelador, en ese sentido. Personas de todo el mundo pueden leer, comentar, escribir y expresarse libremente .sobre el software que se está desarrollando en el mundo de código abierto. Es esta libertad de expresión, el derecho humano fundamental, cuando se aplica al mundo del software y la tecnología, se manifiesta en forma de "código abierto".
♂️¿Qué implica la contribución de código abierto?
Muy bien, ahora que estamos en la misma página en lo que respecta al término "código abierto". ¿Qué actividades están asociadas con las contribuciones del sistema operativo?
En mi opinión, los siguientes conjuntos de acciones caen bajo el paraguas de las contribuciones del sistema operativo
- Crear problemas, errores y hacer preguntas
- Generar solicitudes de funciones [a través de problemas, Jira o software de seguimiento de proyectos]
- Idear y hacer Propuestas
- Comenta y participa en discusiones.
- Responder preguntas
- Corregir errores
- Revise el código desarrollado por otros miembros de la comunidad
- Agregue pruebas, mejore la infraestructura de pruebas/CI/CD
- Escribir nuevo código de característica
- Asistir a eventos virtuales/presenciales
- Evangelizar la biblioteca/producto/servicio
- Comunicarse activamente en los canales de discusión/chat/listas de desarrolladores
- Vote y participe en el proceso de lanzamiento [de biblioteca/producto/marco/servicio]
¿Cómo debo empezar?
Seguiría 1 de las siguientes 2 rutas
- Famoso proyecto de reconocidas organizaciones de código abierto.
- Proyectos en los que tengo más contexto
Busque proyectos familiares respaldados por organizaciones de código abierto famosas

- Fundamentos del software Apache : hadoop, colmena, hbase, mxnet, cassandra
- The Document Foundation — Suite LibreOffice [oficina abierta]
- Fundación GNOME — famoso entorno de escritorio GNOME
- Linux Foundation : famoso por el sistema operativo basado en UNIX
- Fundación Mozilla : famosa por su navegador
Una manera fácil de tener un impacto significativo en la comunidad de desarrolladores es cuando ya tiene un modelo mental integrado del producto/marco/servicio subyacente. Canalizaría mi energía para hacer las contribuciones de código abierto antes mencionadas aprovechando el conocimiento y el contexto que he construido hasta ahora como desarrollador.
Esto podría significar diferentes proyectos para diferentes desarrolladores, obviamente en función de la pila de software a la que están más acostumbrados.
Enumeraré los proyectos comunes de código abierto según los idiomas:

Los 10 mejores proyectos Javascript de Technical Geek
- Reaccionar por Facebook/Meta
- Tensorflow.js por TF [originalmente por Google]
- Nodo.js
- Angular.js
- jQuery
- Administrador de paquetes de nodos [npm]
- Vue.js
- Ember.js
- meteoro.js
- Polímero
- Tensorflow : aprendizaje profundo
- matplotlib — visualización de datos
- Frasco - desarrollador web
- Django por la Fundación de Software Django
- PyTorch — originalmente por Facebook/Meta
- MXNet de Apache Software Foundation
- Ansible : herramienta de implementación, operaciones y orquestación
- Solicitudes : biblioteca HTTP de Python Software Foundation
- Scikit-learn — Aprendizaje automático en Python
- Pandas : ciencia de datos/análisis de datos
- OpenJDK
- RXJava
- Apache Pinot : almacén de datos OLAP
- Hazelcast : plataforma de almacenamiento y computación distribuida
- Formato Java de Google: estilo Java de Google
- jOOQ — SQL para Java
- Bota de primavera
- Glide : almacenamiento en caché y generación de imágenes para Android
- Guayaba : bibliotecas básicas de Java de Google
- mockito — simulacro, marco de prueba
- busque en Google con las palabras clave "top 10 open source project" y "language"
- Buscar en Github —https://github.com/search?q=java+language%3AJava&type=repositories&l=Java