{"id":31,"date":"2017-10-17T12:03:43","date_gmt":"2017-10-17T17:03:43","guid":{"rendered":"http:\/\/blogs.gentoo.org\/chrisadr\/?p=31"},"modified":"2019-11-01T03:35:28","modified_gmt":"2019-11-01T08:35:28","slug":"mi-primer-pr-pull-request-en-github","status":"publish","type":"post","link":"https:\/\/blogs.gentoo.org\/chrisadr\/2017\/10\/17\/mi-primer-pr-pull-request-en-github\/","title":{"rendered":"Mi primer PR (Pull Request) en Github"},"content":{"rendered":"<p>Bueno, me tomar\u00e9 la libertad de salir un poco de mi zona de confort, para entrar en otra de mis zonas de confort :P <strong>FOSS<\/strong>. En este post pretendo, as\u00ed como hice con Gentoo, primero compartir un poco de mi experiencia personal y as\u00ed tratar de emocionarlos un poco a poder sumergirse de lleno en el mundo de los proyectos y las contribuciones. Sin m\u00e1s que agregar, empecemos:<\/p>\n<h3>FOSS<\/h3>\n<p><strong>Free and Open Source Software<\/strong> (por sus siglas en ingl\u00e9s) es una corriente que <strong>envuelve tanto a proyectos open source como de software libre<\/strong>. No pretendo discutir las diferencias entre ambos ya que ya lo he hecho en repetidas oportunidades, incluso una vez tuve que explicar todo al mismo se\u00f1or Stallman que me contact\u00f3 por correo en una de las listas de proyectos que abundan por internet. Un art\u00edculo que me emociona mucho y el cual les voy a compartir se encuentra en la p\u00e1gina oficial de GNU y como muchos de sus documentos, se encuentran traducidos a diversos idiomas. Les adjunto el link y me tomar\u00e9 la libertad de citar uno de los p\u00e1rrafos que m\u00e1s me llaman la atenci\u00f3n.<\/p>\n<p><a href=\"https:\/\/www.gnu.org\/education\/edu-schools.es.html\">https:\/\/www.gnu.org\/education\/edu-schools.es.html<\/a><\/p>\n<blockquote class=\"td_quote_box td_box_center\"><p>La raz\u00f3n m\u00e1s profunda para utilizar software libre en las escuelas es la educaci\u00f3n moral. Esperamos que las escuelas ense\u00f1en hechos b\u00e1sicos y habilidades \u00fatiles, pero esa es solo una parte de su funci\u00f3n. La tarea fundamental de las escuelas es ense\u00f1ar a ser buenos ciudadanos, incluyendo el h\u00e1bito de ayudar a los dem\u00e1s. En el \u00e1mbito inform\u00e1tico, esto se traduce en ense\u00f1ar a compartir el software. Las escuelas, a partir del jard\u00edn infantil, deber\u00edan decirle a sus alumnos: \u00abSi tra\u00e9is software a la escuela, deb\u00e9is compartirlo con los dem\u00e1s ni\u00f1os. Y deb\u00e9is mostrar el c\u00f3digo fuente en clase, por si alguien quiere aprender. Por lo tanto, no est\u00e1 permitido traer a la escuela software que no sea libre, a menos que sirva para hacer alg\u00fan trabajo de ingenier\u00eda inversa\u00bb.<\/p><\/blockquote>\n<p>Como pueden ver, <strong>el software libre es una corriente m\u00e1s que t\u00e9cnica, yo dir\u00eda moral<\/strong>. Es como acercarnos un paso m\u00e1s a este mundo en el que el ego\u00edsmo y la soberbia est\u00e1n de lado y podemos tener gente que realmente comparte y se preocupa por los dem\u00e1s.<\/p>\n<p>Bueno, no pretendo hacerlos fervientes usuarios de software libre, pero los animo a que den un salto por los documentos, y vean lo bueno que puedan rescatar :)<\/p>\n<h3>Proyectos<\/h3>\n<p>Todo software, ya sea open source o free software, tiene un proyecto y probablemente una comunidad girando a su alrededor. Estos son quienes lo mantienen, mejoran, protegen, etc. Como es de esperarse, mientras m\u00e1s grande es el proyecto, las estructuras se vuelven cada vez m\u00e1s espec\u00edficas en cuanto a procesos y formas, y evidentemente es lo correcto puesto que a mayor n\u00famero de participantes, los errores pueden ser mayores si no se tienen bien definidas las formas de colaborar y los procesos para hacerlo.<\/p>\n<p><strong>La principal regla al momento de optar por contribuir a un programa FOSS, es <em>USAR\u00a0<\/em>dicho programa<\/strong> :D Y puede que suene un poco tonto lo que digo, pero en realidad tiene mucho sentido. \u00bfC\u00f3mo nacen muchos de los <em>features\u00a0<\/em>que incluye un programa? Pues por necesidad. Cada funcionalidad existente surge en base a que alguien (una o muchas personas) necesitan de dicha funci\u00f3n. Es por esto que si tu deseas compartir y colaborar a una comunidad, un paso indispensable es que <strong>uses\u00a0<\/strong>lo que desarrollan.<\/p>\n<h3>\u00bfEs necesario ser un experto programador?<\/h3>\n<p>Yo quiero comenzar esta parte haciendo una simple pregunta. \u00bfC\u00f3mo se convierte uno en un experto programador? Aqu\u00ed algunos me dir\u00e1n,\u00a0<em>pues escribiendo c\u00f3digo<\/em>, y a todas esas personas yo les comento que ese no es el enfoque correcto. \u00bfPor qu\u00e9?<\/p>\n<h4>Leer c\u00f3digo te hace mejor programador<\/h4>\n<p>Piensen en esto un poco antes de continuar. \u00bfQu\u00e9 escritor naci\u00f3 sabiendo escribir? \u00bfNo es acaso primero aprender a leer, para nutrir el cerebro con muchos otros autores y as\u00ed eventualmente poder empezar a escribir algo con contenido y valor? Sucede exactamente igual con el c\u00f3digo, uno debe aprender a leer mucho antes de aprender a <em>escribir.<\/em><\/p>\n<h4>Tu c\u00f3digo probablemente no es tan bueno<\/h4>\n<p>Para los que lleven programando por muchos a\u00f1os, perd\u00f3n si con esto destruyo sus concepciones de lo que han logrado en todo este tiempo, pero es verdad. Para los que hemos tenido la oportunidad de colaborar en proyectos realmente grandes, lo primero que puedes apreciar es que existe much\u00edsima gente que es much\u00edsimo m\u00e1s talentosa que uno. Evidentemente esto antes que ser una desventaja, es un punto por el cual apoyar en un proyecto te convierte en un mejor desarrollador.<\/p>\n<p>Tener cientos, o tal vez miles, de ojos revisando tu c\u00f3digo d\u00eda a d\u00eda, te hace descubrir en qu\u00e9 aspectos tu l\u00f3gica no es la mejor de todas. La principal ventaja de esto es que con el pasar del tiempo, tu cerebro va descubriendo nuevas formas de proceder, y los errores &#8220;infantiles&#8221; que comet\u00edas al principio de tu participaci\u00f3n, se convierten en un vago recuerdo.<\/p>\n<p>Con esto solo quiero reforzar el hecho de que un proyecto te hace bien, tanto para aprender a leer como para aprender a escribir c\u00f3digo, lo que a la larga te convertir\u00e1 en un\u00a0<em>experto programador.<\/em><\/p>\n<h3>Y&#8230; \u00bfsi yo no soy programador?<\/h3>\n<p>Este es un punto que quiero tocar tambi\u00e9n porque mucha gente piensa que si no escribe c\u00f3digo, no hay nada que se pueda hacer para ayudar. Este es un mito urbano de los m\u00e1s perjudiciales que existen.<\/p>\n<p>Muchos proyectos requiere de m\u00e1s mano de obra en temas que no son de c\u00f3digo de la que requieren para producir c\u00f3digo. Tal vez en marketing, o en publicidad, o derecho, incluso en planeamiento de eventos, la ayuda siempre es bienvenida. Adem\u00e1s de que te permite conocer nueva gente, el participar en estos proyectos te permite conocer nuevas formas de pensar y al mismo tiempo compartir experiencias nuevas.<\/p>\n<h3>\u00bfC\u00f3mo participo?<\/h3>\n<p>Pues si ya est\u00e1s aqu\u00ed, espero que al menos un poco de curiosidad te pique por participar en proyectos FOSS ;) . Para comenzar es necesario comprender que cada proyecto y comunidad tiene su proceso propio. Muchos de estos se juntan en distintos puntos, y divergen en otros, pero al fin de cuentas, el primer punto de referencia para participar ser\u00e1 la comunidad del programa que\u00a0<strong>usas<\/strong>.<\/p>\n<h4>P\u00e1gina web<\/h4>\n<p>Cada p\u00e1gina web tiene su propia secci\u00f3n de\u00a0<em>Contribuye<\/em>. Y si no la tiene, pues esa es la primer cosa en la que puedes ayudar :D aprende el proceso, conversa con la comunidad, y escribe un peque\u00f1o texto para que puedas guiar a otros por el proceso ;) Si ya tienen uno, pero no est\u00e1 en espa\u00f1ol, pues puedes tomarte un fin de semana para traducirlo y as\u00ed estar\u00e1s ayudando a tu proyecto y al mismo tiempo a todos los de habla hispana :) Dos p\u00e1jaros de un tiro ;)<\/p>\n<h4>Listas de correo<\/h4>\n<p>Mucha de la comunicaci\u00f3n de las comunidades se da por listas de correo, es necesario subscribirse y empezar a tomarse un par de minutos al d\u00eda para leerlos. Tal vez al principio no entiendas, pero te aseguro que con el pasar de los d\u00edas o semanas, ir\u00e1s comprendiendo lo que sucede. Antes de darte cuenta, ya estar\u00e1s escribiendo en la lista, y no pasar\u00e1 mucho antes de que la gente te empiece a preguntar opini\u00f3n o posibles soluciones (si te esfuerzas claro est\u00e1 ;) ).<\/p>\n<h4>Github<\/h4>\n<p>Este es un punto crucial para toda persona que desee colaborar en un proyecto FOSS, aprender a manjera Github, o Gitlab, o Bitbucket, o cualquier host que albergue el c\u00f3digo del repositorio, te permitir\u00e1 ayudar de manera tangible a la mejora de la comunidad.<\/p>\n<h4>IRC\/Gitter\/Telegram<\/h4>\n<p>IRC (Internet Relay Chat) ha estado desde los primeros d\u00edas del internet. As\u00ed es como la gente se comunicaba antes de whatsapp y los smartphones. Y como es de esperarse, muchos proyectos tienen sus canales de IRC a disposici\u00f3n donde se pueden hacer preguntas y conversar sobre temas del proyecto o comunidad, o tener una charla espont\u00e1nea :) siempre teniendo cuidado porque uno nuca sabe lo que puede encontrar en internet ;)<\/p>\n<h3>Mi primer PR<\/h3>\n<p>Bueno, aqu\u00ed no vengo a explicar c\u00f3mo es que se hace un Pull Request en detalle, eso lo dejar\u00e9 para otro post si es que les interesa comenzar a participar.<\/p>\n<h4>Como programador<\/h4>\n<figure id=\"attachment_77330\" aria-describedby=\"caption-attachment-77330\" style=\"width: 420px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"size-medium wp-image-77330\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2017\/10\/Selection_007-420x186.jpg\" alt=\"\" width=\"420\" height=\"186\" \/><figcaption id=\"caption-attachment-77330\" class=\"wp-caption-text\">Dise\u00f1o propio. Christopher D\u00edaz Riveros<\/figcaption><\/figure>\n<h4>Como no programador<\/h4>\n<figure id=\"attachment_77328\" aria-describedby=\"caption-attachment-77328\" style=\"width: 420px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" class=\"size-medium wp-image-77328\" src=\"https:\/\/blog.desdelinux.net\/wp-content\/uploads\/2017\/10\/Selection_006-420x243.jpg\" alt=\"\" width=\"420\" height=\"243\" \/><figcaption id=\"caption-attachment-77328\" class=\"wp-caption-text\">Dise\u00f1o propio. Christopher D\u00edaz Riveros<\/figcaption><\/figure>\n<p>El primero fue un bug de seguridad en el cual incorpor\u00e9 un parche para resolverlo, el segundo es parte del cap\u00edtulo 7 del <a href=\"https:\/\/git-scm.com\/book\/es\/v1\">libro de Git<\/a>. Sigo trabajando en ambos proyectos, incluso hace poco termin\u00e9 de traducir por completo el programa <code>git<\/code> al espa\u00f1ol. (Saldr\u00e1 en la versi\u00f3n 2.15 ;) )<\/p>\n<p>Son aportes peque\u00f1os como podr\u00e1n ver, no m\u00e1s de 100 l\u00edneas de c\u00f3digo ( de las cuales bastantes solo fueron copiar y pegar lo que ya exist\u00eda en un nuevo archivo), pero son <em>mi<\/em> contribuci\u00f3n al proyecto :) y son cosas que yo\u00a0<strong>uso<\/strong> a diario.<\/p>\n<p>Como puede apreciar, la sensaci\u00f3n es bastante indescriptible :) ver tu nombre en algo que usas, saber que ayudas a mucha gente en el proceso, y\u00a0 \u00a1aprender a hacerlo cada d\u00eda mejor! \u00bfPuede acaso haber algo mejor que esto? :)<\/p>\n<h3>En conclusi\u00f3n:<\/h3>\n<p>Me promet\u00ed a mi mismo mantener corto este post pero creo que no ha sido tan corto como esper\u00e9 que ser\u00eda :P . En fin, espero que con esto les haya picado un poco la curiosidad por empezar a colaborar en proyectos FOSS. Y pronto poder ver sus commits en muchos programas que ustedes usen a diario ;) disculpen que haga tanto \u00e9nfasis en esto, pero deben comprender que nadie puede mejorar algo que no conoce, y por eso es indispensable poder conocer antes de mejorar :)<\/p>\n<p>Saludos<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bueno, me tomar\u00e9 la libertad de salir un poco de mi zona de confort, para entrar en otra de mis zonas de confort :P FOSS. En este post pretendo, as\u00ed como hice con Gentoo, primero compartir un poco de mi experiencia personal y as\u00ed tratar de emocionarlos un poco a poder sumergirse de lleno en &hellip; <a href=\"https:\/\/blogs.gentoo.org\/chrisadr\/2017\/10\/17\/mi-primer-pr-pull-request-en-github\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Mi primer PR (Pull Request) en Github<\/span><\/a><\/p>\n","protected":false},"author":169,"featured_media":36,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[3],"jetpack_featured_media_url":"https:\/\/blogs.gentoo.org\/chrisadr\/files\/2017\/10\/foss.jpg","_links":{"self":[{"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/posts\/31"}],"collection":[{"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/users\/169"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/comments?post=31"}],"version-history":[{"count":1,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/posts\/31\/revisions"}],"predecessor-version":[{"id":32,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/posts\/31\/revisions\/32"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/media\/36"}],"wp:attachment":[{"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/media?parent=31"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/categories?post=31"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.gentoo.org\/chrisadr\/wp-json\/wp\/v2\/tags?post=31"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}