Upstream First: Un principi bàsic de Fedora

El concepte de "upstream first" és un principi fonamental dins del Projecte Fedora. Configura la nostra història, cultura i enfocament per contribuir a l’ecosistema de codi obert. Entendre aquest principi és crucial per a qualsevol que vulgui contribuir a Fedora i al més ampli ecosistema de distribucions Linux.

El compromís de Fedora amb l’Upstream First

Fedora, com a distribució Linux, juga un paper únic com a integrador d’innombrables components de programari. Tot i que Fedora desenvolupa part del seu propi programari, la seva funció principal és empaquetar i oferir una experiència de sistema operatiu cohesionada construïda sobre el treball de nombrosos projectes upstream.

Des dels seus inicis, Fedora ha defensat el principi de upstream first. Aquesta no és una política o una regla estricta; és un valor fonamental teixit en l’estructura de la comunitat Fedora. Els col·laboradors de Fedora creuen que els canvis i millores al programari de codi obert haurien de ser compartits, sempre que sigui possible, amb els projectes upstream. Això assegura que tots els usuaris d’aquest programari, no només els usuaris de Fedora, se’n puguin beneficiar. En última instància, l’objectiu final de Fedora és el benefici de l’usuari, i els col·laboradors de Fedora faran el que creguin que és millor per a l’usuari, fins i tot si l’upstream no hi està d’acord.

Upstream first també és un principi d’enginyeria pragmàtic. Contribuint els canvis upstream, Fedora redueix la càrrega de manteniment a llarg termini de portar pedaços específics downstream. Mantenir conjunts de pedaços externs pot arribar a ser cada vegada més difícil a mesura que els projectes upstream evolucionen. Abraçar l’upstream first ajuda a garantir la sostenibilitat de Fedora i les seves contribucions.

Aquest enfocament té un efecte dòmino a tot l’ecosistema de codi obert. Els canvis introduïts a Fedora sovint impacten nombrosos projectes downstream que utilitzen Fedora com a base. Per tant, contribuir a Fedora és una manera altament eficaç d’influir i millorar el paisatge de codi obert més ampli, particularment dins de l’ecosistema RPM/Enterprise Linux.

Prioritzant les contribucions upstream, Fedora s’alinea amb la seva visió d’un món on tothom es beneficia del programari lliure i de codi obert construït per comunitats inclusives i acollidores. Aquest compromís s’estén a tot el programari de codi obert, no només al propi Fedora.

Entenent Upstream i Downstream

Al món del codi obert, els projectes sovint tenen relacions interconnectades descrites com a "upstream" i "downstream". El projecte upstream és la font original del programari: la base sobre la qual es construeixen altres projectes. Els projectes downstream, al seu torn, són aquells que utilitzen i sovint modifiquen el programari upstream. Penseu-hi com un riu: l’upstream és la font i els projectes downstream estan més avall del corrent, rebent i potencialment alterant l’aigua.

Aquesta metàfora és essencial per entendre com els projectes de codi obert depenen i interactuen entre ells. Els diferents models de desenvolupament fomenten diferents tipus de relacions upstream/downstream.

Comunicació oberta amb l’Upstream

Fedora reconeix la importància d’una comunicació clara i oberta amb els projectes upstream. Creiem en el foment de relacions fortes amb els desenvolupadors i comunitats upstream, i busquem activament la seva aportació i retroalimentació.

Fedora sempre està oberta a escoltar els projectes upstream sobre com podem millorar els nostres processos de col·laboració i integració. Entenem que l’ús downstream de Fedora de vegades pot crear reptes o friccions per als projectes upstream. Animem els mantenidors upstream a posar-se en contacte amb nosaltres si troben algun problema o tenen suggeriments de millora.

El nostre objectiu és treballar junts de manera constructiva per trobar solucions que beneficiïn tant a Fedora com als projectes upstream en què confiem. Tot i que no sempre podem satisfer totes les sol·licituds upstream, ens comprometem a escoltar, aprendre i adaptar les nostres pràctiques per minimitzar qualsevol impacte negatiu en les comunitats upstream.

La filosofia de treballar primer a l’upstream no acaba només amb el desenvolupament. També engloba una relació productiva, positiva i respectuosa amb els nostres projectes upstream. Les nostres comunitats se superposen i volem estendre els nostres valors de Fedora al seu projecte tant com ho faríem dins de Fedora. Amb aquesta finalitat, sempre volem tractar els reptes entre projectes junts i tenir línies clares de comunicació.

Quan succeeixen canvis Downstream

Tot i que Fedora prioritza les contribucions upstream, hi ha situacions en què són necessaris canvis específics downstream. Aquestes excepcions no són contradiccions del principi upstream-first, sinó més aviat reconeixements de les realitats complexes del desenvolupament i distribució de programari.

Les raons dels pedaços downstream inclouen:

  • Rebuig de l’Upstream: De vegades, els mantenidors upstream poden rebutjar un pedaç per diverses raons, fins i tot si és beneficiós per a Fedora. Fedora encara pot necessitar portar aquest pedaç per abordar un problema o requisit específic.

  • Progrés de l’Upstream Els projectes upstream poden avançar amb noves característiques o canvis que requereixen una adaptació significativa a Fedora. Fedora pot necessitar adaptar correccions o implementar solucions temporals mentre es completa l’adaptació downstream.

  • Necessitats Específiques de la Distribució: Fedora, i les seves distribucions downstream com EPEL, poden tenir requisits o restriccions únics que requereixen modificacions downstream. Aquestes necessitats poden estar relacionades amb el suport de maquinari específic, consideracions de seguretat o integració amb altres components de Fedora.

  • Blobs No Lliures: Fedora està compromesa a promoure programari lliure i de codi obert i construir-ho tot des del codi font. De vegades, els projectes upstream inclouen blobs binaris no lliures o preconstruïts que Fedora necessita pedaçar per adherir-se als seus principis. Tot i que Fedora pot discutir possibles correccions amb l’upstream, aquests pedaços potser no sempre seran acceptats si no hi ha alternatives adequades o si eliminen funcionalitat.

En aquestes situacions, Fedora s’esforça per minimitzar l’abast i la durada dels pedaços downstream, i continua treballant cap a canvis upstream sempre que sigui factible. Entendre les raons dels canvis downstream és essencial per mantenir la transparència i la confiança dins de la comunitat.

Exemples en Acció

El principi de "upstream first" es manifesta de diverses maneres. Aquí teniu un parell d’exemples:

  • Millores d’Empaquetament: Un empaquetador de Fedora identifica un error o una característica que falta en una cadena d’eines de compilació. En lloc de crear un pedaç específic per a Fedora, envien un pedaç upstream als mantenidors de la cadena d’eines. Després de la revisió i discussió, el pedaç es fusiona upstream, beneficiant tots els usuaris de la cadena d’eines i eliminant la necessitat d’un pedaç downstream de Fedora.

  • Script Comunitari: Un col·laborador de Fedora desenvolupa un script per analitzar dades de paquets. Comparteixen l’script públicament. Un altre col·laborador millora l’script amb noves característiques i envia un pull request. El col·laborador original fusiona els canvis, fent que l’script millorat estigui disponible per a tota la comunitat.

  • Clarificacions de Llicència: Un empaquetador de Fedora descobreix problemes de llicència amb un projecte de codi obert, com ara llicències poc clares o no conformes per als actius inclosos. En lloc de simplement excloure el projecte de Fedora, treballen amb els desenvolupadors upstream per aclarir o corregir les llicències. Això assegura que el projecte es pugui incloure a Fedora i beneficia la comunitat de codi obert més àmplia promovent el compliment de llicències.

  • Evitar Dependències Empaquetades: Un empaquetador de Fedora s’adona que un projecte upstream empaqueta una versió específica d’una dependència. En lloc d’utilitzar la dependència empaquetada, reempaqueten el projecte per utilitzar la versió de tot el sistema de la dependència. Això assegura la coherència entre els paquets de Fedora, permet el desplegament ràpid de pedaços de seguretat i manté la compatibilitat entre paquets interdependents.

  • Proves Primerenques i Informes d’Errors: Fedora sovint és pionera en la integració de noves versions de programari i llibreries. Aquesta adopció primerenca permet als col·laboradors de Fedora identificar i informar d’errors de compilació o compatibilitat upstream, especialment a l’ecosistema Python. Aquestes contribucions beneficien tota la comunitat de codi obert assegurant transicions i actualitzacions més suaus per a tothom.

Aquests exemples il·lustren com l’upstream first fomenta la col·laboració, la propietat compartida i la millora contínua dins de l’ecosistema de codi obert. Us animem a pensar com podeu aplicar el principi "Upstream First" en les vostres contribucions a Fedora. Teniu una història sobre una contribució upstream? Compartiu-la amb la comunitat!