{"id":27,"date":"2008-09-04T18:07:08","date_gmt":"2008-09-04T16:07:08","guid":{"rendered":"http:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/o-kernel-de-linux-recursos-e-cultura-organizativa"},"modified":"2008-09-04T18:07:08","modified_gmt":"2008-09-04T16:07:08","slug":"o-kernel-de-linux-recursos-e-cultura-organizativa","status":"publish","type":"post","link":"https:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/2008\/09\/04\/o-kernel-de-linux-recursos-e-cultura-organizativa\/","title":{"rendered":"O Kernel de Linux: recursos e cultura organizativa"},"content":{"rendered":"<p>Neste momento, estamos capacitados para entender a <em>grosso modo<\/em> o funcionamento de calquera proxecto de software libre. Debido \u00e1 s\u00faa importancia imos iniciar unha serie de post onde analizaremos -dende todos os puntos de vista tratados neste blog- o <a href=\"http:\/\/www.kernel.org\/\">kernel de linux<\/a>.<\/p>\n<p><strong>RECURSOS e TECNOLOX\u00cdAS USADAS<\/strong><\/p>\n<p>Nun primeiro acercamento \u00f3 proxecto teremos que mapear os recursos que posee e o modo de interacci\u00f3n dos colaboradores. En primeiro lugar identificamos as ferramentas m\u00e1is habituais:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.kernel.org\/\">web<\/a>, <a href=\"http:\/\/vger.kernel.org\/vger-lists.html\">listas de correo<\/a>, &#8230;<\/li>\n<li><a href=\"http:\/\/git.kernel.org\/\">repositorios de git<\/a>, <a href=\"http:\/\/bugzilla.kernel.org\/\">bugzilla<\/a>, &#8230;<\/li>\n<\/ul>\n<p>Como caracter\u00edstica principal vemos que o repositorio usado no kernel non \u00e9 <a href=\"http:\/\/subversion.tigris.org\/\">svn<\/a>, sen\u00f3n <a href=\"http:\/\/git.or.cz\/\">git<\/a>. Este sistema de control de versi\u00f3ns \u00e9 distribuido, polo que o fluxo de traballo \u00e9 un pouco diferente do que <a href=\"http:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/sesion-de-traballo-con-svn-e-envio-de-parches\">vimos en svn<\/a>. Na propia p\u00e1xina de git hai extensa <a href=\"http:\/\/git.or.cz\/#documentation\">documentaci\u00f3n<\/a> sobre <a href=\"http:\/\/git.or.cz\/gitwiki\/QuickStart\">c\u00f3mo usalo<\/a>. Un documento moi recomendable \u00e9 <em><a href=\"http:\/\/www.newartisans.com\/blog_files\/git.from.bottom.up.php\">Git from the bottom up<\/a><\/em> [<a href=\"http:\/\/www.newartisans.com\/blog_assets\/git.from.bottom.up.pdf\">PDF<\/a>].<\/p>\n<p>Outro m\u00e9todo para obter informaci\u00f3n do proxecto \u00e9 baixarse o c\u00f3digo fonte directamente do repositorio. Unha vez localizada a <a href=\"http:\/\/git.kernel.org\/\">\u00e1rbore de repositorios<\/a>, identificamos a rama que corresponde coa <a href=\"http:\/\/git.kernel.org\/?p=linux\/kernel\/git\/torvalds\/linux-2.6.git;a=summary\">\u00faltima versi\u00f3n do kernel<\/a>. Descarg\u00e1molo e executamos o programa <a href=\"http:\/\/www.dwheeler.com\/sloccount\/\"><em>sloccount<\/em><\/a> para co\u00f1ecer o n\u00famero de li\u00f1as de c\u00f3digo de cada linguaxe de progamaci\u00f3n no proxecto:<\/p>\n<blockquote><p>cd \/tmp<\/p>\n<p>git clone git:\/\/git.kernel.org\/pub\/scm\/linux\/kernel\/git\/torvalds\/linux-2.6.git<\/p>\n<p>cd linux-*<\/p>\n<p>sloccount .<\/p><\/blockquote>\n<p>Como resultado obteremos (entre outras cousas) un listado de linguaxes usados e li\u00f1as de c\u00f3digo de cada un deles. Neste caso, o c\u00f3digo escrito en <em>ansic<\/em> sup\u00f3n un 96% do total. Deste modo temos idea de qu\u00e9 tecnolox\u00edas son maioritarias no proxecto.<\/p>\n<p>Por outra banda, podemos atopar arquivos de interese neste repositorio (x ex: MAINTAINERS, que nos dir\u00e1 o mantedor de cada m\u00f3dulo).<\/p>\n<p><strong>MODULARIDADE e INTEGRACI\u00d3N<\/strong><\/p>\n<p>Outro dos puntos importantes que debemos entender \u00e9 a cultura de colaboraci\u00f3n no proxecto: \u00bfc\u00f3mo interact\u00faan entre eles? \u00bfc\u00f3mo se env\u00edan parches? \u00bfusan wikis ou listas de correo para xestionar o traballo que debe ser feito?<\/p>\n<p>Para tratar de responder a estas preguntas, identificamos 2 recursos principais:<\/p>\n<ul>\n<li><a href=\"http:\/\/kernelnewbies.org\/FAQ\">FAQ newbies<\/a><\/li>\n<li><a href=\"http:\/\/ldn.linuxfoundation.org\/book\/how-participate-linux-community\">How to participate in the Linux Community<\/a>, da <a href=\"http:\/\/www.linuxfoundation.org\/en\/Main_Page\">Linux Foundation<\/a>.<\/li>\n<\/ul>\n<p>A\u00ednda que o <em>modo de facer as cousas<\/em>, a cultura organizativa, s\u00f3 se pode aprender interactuando dentro da comunidade, s\u00ed podemos identificar alg\u00fans dos puntos claves do proxecto.<\/p>\n<p>Como dixemos, <a href=\"http:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/a-modularidade-do-proxecto\">a modularidade do traballo \u00e9 un factor clave<\/a> de cara a distribuir as tarefas o m\u00e1is posible e obter participaci\u00f3n. No kernel, resolven esta cuesti\u00f3n dividindo o proxecto en m\u00faltiples m\u00f3dulos nos que participar. Por outra banda, dividir o proxecto en m\u00faltiples partes require un <a href=\"http:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/integracion-das-aportacions-ferramentas-e-procesos\">proceso de integraci\u00f3n posterior<\/a>.<\/p>\n<p>Este proceso, consiste nun <a href=\"http:\/\/ldn.linuxfoundation.org\/book\/2-how-development-process-works\">fluxo continuo e iterativo de revisi\u00f3n de parches<\/a> e ata que \u00e9stos finalmente se integran no que ser\u00e1 o kernel pasan por varias etapas de revisi\u00f3n. Os aspectos clave de todo o proceso son:<\/p>\n<ul>\n<li><em>Revisi\u00f3n de parches en listas de correo<\/em> <em>de cada subsistema<\/em>: os parches con novas funcionalidades son enviados \u00e1 <a href=\"http:\/\/vger.kernel.org\/vger-lists.html\">lista de correo correspondente<\/a> (do <a href=\"http:\/\/www.ibm.com\/developerworks\/linux\/library\/l-linux-kernel\/?S_TACT=105AGX59&amp;S_CMP=GR&amp;ca=dgr-lnxw01LKernalAnatomy\">m\u00f3dulo ou subsistema<\/a>) onde se discuten e revisan. Logo de pasar a validaci\u00f3n o mantedor pode integralo no seu repositorio. Posteriormente ese conxunto de parches pasan a m\u00f3dulos ou subsistemas superiores repetindo o proceso.<\/li>\n<\/ul>\n<ul>\n<li><a href=\"http:\/\/ldn.linuxfoundation.org\/book\/24-staging-trees\"><em>\u00c1rbores de integraci\u00f3n<\/em><\/a>: m\u00e1is al\u00e1 do proceso anterior de <a href=\"http:\/\/ldn.linuxfoundation.org\/book\/23-how-patches-get-kernel\">integraci\u00f3n \u00f3 longo da cadea de subsistemas<\/a>, existen 2 \u00e1rbores especialmente dedicados \u00e1 integraci\u00f3n transversal de parches que ve\u00f1en de diversos sistemas. \u00c9stos son o <em>mm tree<\/em> (\u00e1rbore de xesti\u00f3n de memoria) e o <em>linux-next<\/em>, xestionados por Andrew Morton e Stephen Rothwell respectivamente. A s\u00faa funci\u00f3n consiste en testear que os parches de varios subsistemas inferiores traballan en conxunto previo \u00f3 paso \u00e1 rama de desenvolvemento principal (mantida por Linux Torvalds).<\/li>\n<\/ul>\n<p>Este sistema xer\u00e1rquico de integraci\u00f3n e revisi\u00f3n, garante un control de calidade baseado na revisi\u00f3n do c\u00f3digo de forma continua e por m\u00faltiples programadores. Por outra banda, ferramentas avanzadas de xesti\u00f3n de c\u00f3digo (<em><a href=\"http:\/\/git.or.cz\/\">git<\/a><\/em>) e parches (<a href=\"http:\/\/savannah.nongnu.org\/projects\/quilt\/\"><em>quilt<\/em><\/a>) facilitan o traballo de integraci\u00f3n dos programadores.<\/p>\n<p>Con todo esto temos aproximado un primeiro intento de comprensi\u00f3n da cultura dos <em>hackers<\/em> do kernel, do seu modo organizativo: xer\u00e1rquico (o traballo delegado en varios subsistemas) \u00e1 vez que meritocr\u00e1tico (continua revisi\u00f3n de parches a trav\u00e9s de listas de correo). Un modo de traballo que lles permite obter un produto de alta calidade cada 8\/10 semanas.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste momento, estamos capacitados para entender a grosso modo o funcionamento de calquera proxecto de software libre. Debido \u00e1 s\u00faa importancia imos iniciar unha serie de post onde analizaremos -dende todos os puntos de vista tratados neste blog- o kernel de linux. RECURSOS e TECNOLOX\u00cdAS USADAS Nun primeiro acercamento \u00f3 proxecto teremos que mapear os [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,7],"tags":[],"class_list":["post-27","post","type-post","status-publish","format-standard","hentry","category-sw-libre-analisis-de-casos","category-aspectos-organizativos"],"_links":{"self":[{"href":"https:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/wp-json\/wp\/v2\/posts\/27","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=27"}],"version-history":[{"count":0,"href":"https:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/wp-json\/wp\/v2\/posts\/27\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/wp-json\/wp\/v2\/media?parent=27"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/wp-json\/wp\/v2\/categories?post=27"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.igalia.com\/premio-pfcsoftwarelibre-2008\/wp-json\/wp\/v2\/tags?post=27"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}