{"id":16,"date":"2008-08-19T13:39:37","date_gmt":"2008-08-19T11:39:37","guid":{"rendered":"http:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/integracion-das-aportacions-ferramentas-e-procesos"},"modified":"2008-08-19T13:39:37","modified_gmt":"2008-08-19T11:39:37","slug":"integracion-das-aportacions-ferramentas-e-procesos","status":"publish","type":"post","link":"https:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/2008\/08\/19\/integracion-das-aportacions-ferramentas-e-procesos\/","title":{"rendered":"Integraci\u00f3n das aportaci\u00f3ns: ferramentas e procesos"},"content":{"rendered":"<div align=\"left\">\n<blockquote><p><em>Peer production is limited not by the total cost or complexity of a project, but by its modularity, granularity and the cost of integration.<\/em><\/p>\n<p><em>&#8212; Benkler. <a href=\"http:\/\/www.benkler.org\/CoasesPenguin.html\">Coase&#8217;s Penguin or Linux and The nature of the firm<\/a>.<\/em><\/p><\/blockquote>\n<\/div>\n<p>Si a <a href=\"http:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/a-modularidade-do-proxecto\">modularidade do proxecto<\/a> \u00e9 un factores clave para aumentar a participaci\u00f3n, o proceso de <strong>integraci\u00f3n das aportaci\u00f3ns<\/strong> \u00e9 primordial para que non <em>morrer de \u00e9xito<\/em>, \u00e9 dicir, que a xente contin\u00fae participando \u00e1 vez que se obt\u00e9n un producto de calidade. As\u00ed, as preguntas que debemos responder son as 2 seguintes:<\/p>\n<ul>\n<li>\u00bfc\u00f3mo combinamos cada unha das aportaci\u00f3ns nun <em>todo<\/em>, nun <em>producto final<\/em>?<\/li>\n<li>\u00bfc\u00f3mo aseguramos a calidade das aportaci\u00f3ns?<\/li>\n<\/ul>\n<p>O modo en que habitualmente as resolven alg\u00fans proxectos de software libre sup\u00f3n unha conxunci\u00f3n de uso de ferramentas e cumplimento de certas normas sociais que agora pasamos a relatar.<\/p>\n<p><strong>Ferramentas<\/strong><\/p>\n<p>A continuacion enumeramos algunhas ferramentas que facilitan o traballo distribuido entre m\u00faltiples colaboradores (programadores, traductores, &#8230;) xeogr\u00e1ficamente dispersos. A\u00ednda que non publicaremos tutoriais de cada unha delas, s\u00ed faremos en pr\u00f3ximos post unha breve introduci\u00f3n \u00e1s m\u00e1is relevantes.<\/p>\n<p>De cara a entender a s\u00faa funci\u00f3n, podemos agrupalas nas seguintes categor\u00edas:<\/p>\n<ul>\n<li>Sistemas de <strong>control de versi\u00f3ns<\/strong>: \u00fasanse para o mantemento, integraci\u00f3n e distribuci\u00f3n do c\u00f3digo fonte dos programas. <em>Exemplos<\/em>: <a href=\"http:\/\/svnbook.red-bean.com\/nightly\/en\/svn.basic.html\">svn<\/a>, <a href=\"http:\/\/ximbiot.com\/cvs\/cvshome\/\">cvs<\/a>, <a href=\"http:\/\/git.or.cz\/\">git<\/a>, <a href=\"http:\/\/bazaar-vcs.org\/\">bazaar<\/a>.<\/li>\n<\/ul>\n<ul>\n<li><strong>Xesti\u00f3n da compilaci\u00f3n e configuraci\u00f3n<\/strong>. Na compilaci\u00f3n e <em>release<\/em> do producto final \u00e9 habitual ter que facer unha serie de tarefas repetitivas. Para realizar este tipo de tarefas existen algunhas ferramentas que nos axudan a automatizalas. <em>Exemplos<\/em>: <a href=\"http:\/\/sources.redhat.com\/autobook\/\">autotools<\/a> (autoconf, automake, libtool), <a href=\"http:\/\/ant.apache.org\/\">ant<\/a>.<\/li>\n<\/ul>\n<ul>\n<li>Sistemas de <strong>xesti\u00f3n de incidencias<\/strong>: usadas para a publicaci\u00f3n e xesti\u00f3n de <em>bugs<\/em> encontrados no programa. Nalg\u00fans casos \u00fasanse para listar funcionalidades interesantes para o proxecto. <em>Exemplos<\/em>: <a href=\"http:\/\/www.bugzilla.org\/\">bugzilla<\/a>, <a href=\"http:\/\/trac.edgewall.org\/\">trac<\/a>.<\/li>\n<\/ul>\n<ul>\n<li>Sistemas de <strong>monitorizaci\u00f3n do desenvolvemento<\/strong><em> (nightly build tools)<\/em>: este tipo de ferramentas son usadas para compilar autom\u00e1ticamente o c\u00f3digo e xerar informes (erros de compilaci\u00f3n, detecci\u00f3n de regresi\u00f3ns, &#8230;).  <em>Exemplos<\/em>: <a href=\"http:\/\/www.mozilla.org\/tinderbox.html\">tinderbox<\/a>, <a href=\"http:\/\/maven.apache.org\/\">maven<\/a>.<\/li>\n<\/ul>\n<p>As d\u00faas primeiras categor\u00edas encaixan \u00e1 perfecci\u00f3n dentro do proceso de <em>integraci\u00f3n das aportaci\u00f3ns nun producto final<\/em>: as facilidades que nos dan ferramentas tipo <em>svn<\/em> ou <em>autotools<\/em> son inmensas e reducen o coste da integraci\u00f3n.<\/p>\n<p>Pola contra, nas \u00faltimas 2 categor\u00edas encaixan ferramentas especialmente dese\u00f1adas para realizar o <em>control de calidade<\/em> das aportaci\u00f3ns.<\/p>\n<p><strong>Procesos e boas pr\u00e1cticas<\/strong><\/p>\n<p>A continuaci\u00f3n agruparemos unha serie de pr\u00e1cticas que se realizan habitualmente nas comunidades e proxectos de software libre que podemos encaixar dentro dos procesos de <em>integraci\u00f3n<\/em> e <em>control de calidade<\/em>. Evidentemente, existen moitas m\u00e1is e cada proxecto ten as s\u00faas propias. Sirvan \u00e9stas simplemente como mostra.<\/p>\n<p>Pr\u00e1cticas relacionados co <strong>control da calidade<\/strong> e revisi\u00f3n de c\u00f3digo entre pares (<em>peer review<\/em>):<\/p>\n<ul>\n<li><em>Lista de correo de cambios<\/em> (<em>commits<\/em>): \u00e9 com\u00fan que exista unha lista de correo \u00e1 que se env\u00edan de modo autom\u00e1tico os cambios no repositorio do proxecto. Deste xeito, todo o mundo suscrito a esa lista pode observar os cambios que foron feitos, detectando erros e aportando melloras.<\/li>\n<\/ul>\n<ul>\n<li><em>Revisi\u00f3n de parches<\/em>: ter unha persoa que revise o c\u00f3digo que o resto do grupo lle env\u00eda. S\u00f3lo esta persoa pode enviar os cambios \u00f3 repositorio de c\u00f3digo do proxecto.<\/li>\n<\/ul>\n<ul>\n<li><em>Grupos de calidade<\/em>: en certos proxectos existen grupos espec\u00edficos dedicados \u00e1 calidade. No proxecto GNOME, por exemplo existe a <a href=\"http:\/\/developer.gnome.org\/projects\/bugsquad\/\">Bugsquad<\/a> que se dedica a  <em>explorar o xestor de incidencias e bugs<\/em>, tratando de cerrar aqueles que xa est\u00e9n resoltos ou repetidos. Con esta pr\u00e1ctica est\u00e1n axudando \u00f3s desenvolvedores dos proxectos que poden centrarse nos erros realmente importantes. Incluso se chegan a <a href=\"http:\/\/live.gnome.org\/Bugsquad\/BugDays\">realizar eventos<\/a> coa \u00fanica finalidade de realizar esta tarefa.<\/li>\n<\/ul>\n<p>Pr\u00e1cticas relacionadas coa <strong>integraci\u00f3n das aportaci\u00f3ns<\/strong> <strong>nun todo<\/strong>:<\/p>\n<ul>\n<li><em>Pol\u00edtica de cambios<\/em>: unha serie de normas que definen c\u00f3mo se deben facer os cambios no repositorio de c\u00f3digo. \u00c9 normal, por exemplo, atopar a regla de <a href=\"http:\/\/techbase.kde.org\/Policies\/SVN_Commit_Policy\">nunca subir cambios que provoquen que o proxecto non compile<\/a>. Este tipo de normas sociais facilitan que programadores que desexen subir os seus cambios, non se vexan obligados a resolver erros cometidos por cambios introducidos anteriormente.<\/li>\n<\/ul>\n<ul>\n<li><a href=\"http:\/\/en.wikipedia.org\/wiki\/Programming_style\"><em>C<\/em><em>oding style<\/em><\/a>. \u00c9 habitual que cada proxecto te\u00f1a o seu <em>estilo<\/em> <em>de programaci\u00f3n<\/em>, que facilite a lectura e revisi\u00f3n do c\u00f3digo. Moitas veces os parches son denegados porque o c\u00f3digo enviado non sigue as reglas de estilo do proxecto. Ex: <a href=\"http:\/\/developer.gnome.org\/doc\/guides\/programming-guidelines\/code-style.html\">Gnome Coding Style<\/a>, <a href=\"http:\/\/www.mozilla.org\/hacking\/mozilla-style-guide.html\">Mozilla Coding Style Guide<\/a>.<\/li>\n<ul \/><\/ul>\n<p>Por outra banda, existen convenci\u00f3ns para o uso de cada ferramenta que se deben explorar a medida que se usan.<\/p>\n<p>Adem\u00e1is destas medidas informais integradas no traballo diario, no propio fluxo de publicaci\u00f3n do proxecto poden existir fases espec\u00edficas dedicadas a testear o funcionamento do programa ou \u00e1 integraci\u00f3n. As\u00ed, marcarse un plan e ter unha axenda clara que sirva como sincronizaci\u00f3n dos esforzos, \u00e9 unha das acci\u00f3ns principais que poden favorecer a evoluci\u00f3n do proxecto.<\/p>\n<p>Para finalizar, m\u00e1is que tomar nota de cada unha das pr\u00e1cticas e ferramentas descritas, <strong>para liderar un proxecto de software libre, \u00e9 necesario comprender que a integraci\u00f3n das aportaci\u00f3ns e os mecanismos de control de calidade son necesarios para que o proxecto non <em>morra de \u00e9xito<\/em>.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Peer production is limited not by the total cost or complexity of a project, but by its modularity, granularity and the cost of integration. &#8212; Benkler. Coase&#8217;s Penguin or Linux and The nature of the firm. Si a modularidade do proxecto \u00e9 un factores clave para aumentar a participaci\u00f3n, o proceso de integraci\u00f3n das aportaci\u00f3ns [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-16","post","type-post","status-publish","format-standard","hentry","category-aspectos-organizativos"],"_links":{"self":[{"href":"https:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/wp-json\/wp\/v2\/posts\/16","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/wp-json\/wp\/v2\/comments?post=16"}],"version-history":[{"count":0,"href":"https:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/wp-json\/wp\/v2\/posts\/16\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/wp-json\/wp\/v2\/media?parent=16"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/wp-json\/wp\/v2\/categories?post=16"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/wp-json\/wp\/v2\/tags?post=16"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}