Desenvolupament col·laboratiu
En els projectes de programari lliure hi ha una cultura de «treballar en obert», ja que aquesta facilita les condicions que els fan sostenibles financerament i tècnica. És d’interès per a tots els projectes incrementar l’afluència de recursos cap al mateix, i això passa per:
-
Incrementar la quantitat de persones o institucions que utilitzen el programari.
-
Propiciar la transició de qualsevol persona o entitat usuària a algú que participa en el projecte de la manera que sigui: contribuint amb codi, testing, correccions, finançament, difusió, traduccions, etcètera.
Fora d’aquest model, basat en incentivar la col·laboració, és molt difícil materialitzar els potencials avantatges que ofereix el paradigma del programari lliure. Hi ha dos elements claus en tot això:
-
Transparència. Aquesta no s’ha de limitar al codi. Per a que hi hagi verdadera col·laboració la transparència ha d’abastar tota la infraestructura de comunicació, coneixement i presa de decisions del projecte.
-
Disseminació del coneixement. A diferència dels models de negoci clàssics, aquí interessa que el coneixement sobre el producte, fins als detalls més tècnics, estigui el més distribuït possible. Això redueix el risc tecnològic i la dependència de l’Ajuntament sobre empreses concretes.
-
Participació de la comunitat. Això reforça tant el projecte, amb més idees i recursos, com les comunitats locals.
Treballar en obert suposa que els següents elements siguin públicament accessibles (per lectura) a tota persona interessada en formats oberts, sense haver d’usar eines privatives i de forma anònima (sense haver-se de registrar a cap servei web i molt menys havent de contractar serveis de pagament):
-
El repositori de codi.
-
El gestor d’incidències (on, entre d’altres, es notifiquen i gestionen els defectes o bugs).
-
Els documents de disseny.
-
La documentació d’usuari/-a.
-
Els canals de comunicació on l’equip de desenvolupament pren les decisions tècniques.
Treballar en obert NO vol dir (necessàriament) que:
-
Persones externes al projecte tinguin accés d’escriptura al repositori (son lliures de copiar el codi en un repositori propi i modificar la seva còpia).
-
Tothom tingui permís per escriure notificacions de defectes i intervenir al gestor d’incidències, cada projecte pot triar la seva política de QA.
-
L’equip del projecte hagi de llegir i respondre totes les notificacions de defectes (si estan obertes per escriptura) ni totes les preguntes als canals de comunicació oberts.
-
L’equip del projecte hagi de revisar totes les suggerències i contribucions (pull requests, patches) que rebi, si es considera que els recursos estan millor invertits en una altra tasca.
Treballar en obert des del dia 1
Un aspecte importantíssim a tenir en compte és que quant més temps es gestiona un projecte de forma tancada, més costós és després obrir-lo. Si s’espera massa, pot ser que algunes mesures no s’arribin a implementar mai, ja que el seu cost resultaria prohibitiu. Les raons d’això es resumeixen en:
-
Tenir canals de comunicació oberts des del dia 1 no vol dir que els "estranys" ens hagin de distreure des del dia 1. En el present document s’explica com deixar clar quins son els nostres compromisos, que podem modular a cada fase.
-
És impossible compensar els incentius que tenen els desenvolupadors per fer coses de manera "ràpida i lletja" amb futures amenaces d’obertura. Si no s’actua en obert des de l’inici, inevitablement incorreran en deute tecnològic amb la intenció d’arreglar les coses en un futur (que mai arriba).
-
Quan arriba el dia d'"obrir el codi", ens trobem de cop i volta que tenim:
-
Configuracions d’usuari específiques i contrasenyes dins del repositori.
-
Notificacions de defectes que contenen informació sensible que no es pot fer pública.
-
Correspondència entre desenvolupadors on es barreja informació tècnica útil amb opinions personals que no estaven pensades per a que tothom les pogués llegir.
-
Dependències sobre components de software que no es poden usar en un projecte de codi obert, o que generen problemes de llicències.
-
Documentació o procediments de build escrits amb eines propietàries que no permeten la seva publicació.
-
(I una llista inacabable de coses).
-
L’obertura del codi provoca haver de prendre decisions difícils, que no es produirien si hagués estat obert des de l’inici (perdre temps netejant l’historial de defectes vs. crear-ne un de nou i perdre l’historial complert, etc).
Es crea un gran "esdeveniment d’obertura" que suposa un alt risc per al projecte, ja que s’han de fer molts canvis de cop, i tot el projecte i les seves potencials vulnerabilitats queden exposades també de cop (i molts ulls, no sempre ben intencionats, estaran mirant). Abans de l’esdeveniment, això crea incertesa i preocupació. Després de l’esdeveniment, pot provocar una allau d’incidències que en condicions normals haguessin arribat escalonadament.
Tots aquests elements es justifiquen abastament als apartats Be open from day one i Being Open Source From Day One is Especially Important for Government Projects del llibre Producing Open Source Software, que convé molt que llegeixin les persones responsables de cada projecte.
Les mesures i recomanacions a tenir en compte per no retardar aquesta
obertura es troben repartides per tota la Guia, etiquetades com a Dia
1
. Les presentem totes aquí llistades:
ID | Title | Type | Tags |
---|---|---|---|
A_D4F |
Vincular el repositori principal a un gestor d’incidències públic |
Alternativa |
Dia1;_ _ Adaptació_;_ Plugin_;_ NouProducte_; _ Publicació |
M_F25 |
Pujar un fitxer |
Mesura |
Dia1_;_ Plugin_;_ NouProducte_;_ Publicació |
M_4F5 |
Publicar unes breus Directrius per desenvolupadors (Developer Guidelines) |
Mesura |
Dia1_;_ Plugin_;_ NouProducte_;_ Publicació |
R_368 |
Vincular el repositori principal a un sistema d’integració contínua de codi obert |
Recomanació |
Dia1_;_ Adaptació_;_ Plugin_;_ NouProducte_;_ Publicació |
M_97E |
Pujar el text de la llicència al repositori principal |
Mesura |
Dia1_;_ Plugin_;_ NouProducte_;_ Publicació |
M_A60 |
Crear el repositori principal a l’espai GitHub public software forge de l’Ajuntament |
Mesura |
Dia1_;_Adaptació_;_ Plugin_;_ NouProducte_;_ Publicació |
M_A63 |
Utilitzar el respositori de GitHub com la web de desenvolupament del projecte |
Mesura |
Dia1_;_ Plugin_;_ NouProducte_;_ Publicació |
M_35A |
Vincular el repositori principal al gestor d’incidències de GitHub |
Mesura |
Dia1_;_ Adaptació_;_ Plugin_;_ NouProducte_;_ Publicació |
R_2D5 |
Reservar una URL permanent per al projecte, i usar-la sempre per fer-hi referència |
Recomanació |
Dia1_;_ Integració_;_ Plugin_;_ NouProducte_;_ Publicació |
Implementar i documentar procediments de build i instal·lació amb eines lliures i d’ús estès |
Mesura |
Dia1_;_ Plugin_;_ NouProducte_;_ Publicació |
|
M_CC5 |
Pujar un fitxer amb instruccions d’instal·lació al repositori principal |
Mesura |
Obertura d’un codi inicialment tancat
L’Ajuntament és propietari dels drets d’autor de molt codi que no es va proporcionar sota una llicència de programari lliure i, per tant, és un programari propietari.
En aquest apartat s’explica com preparar un codi que era tancat per, a partir de la decisió de publicar-lo, poder-lo evolucionar i mantenir en obert.