1. Make each program do one thing well. To do a new job, build afresh rather than
1. Make each program do one thing well. To do a new job, build afresh rather than
complicate old programs by adding new "features".
complicate old programs by adding new "features".
...
@@ -16,21 +15,18 @@ Un bon sistema modular ha d'aplicar els patrons de disseny de la
...
@@ -16,21 +15,18 @@ Un bon sistema modular ha d'aplicar els patrons de disseny de la
if you have to detour to build the tools and expect to throw some of them out
if you have to detour to build the tools and expect to throw some of them out
after you've finished using them.
after you've finished using them.
L'estrategia a seguir, guiada per aquests principis de disseny, passa per dissenyar
L'estrategia a seguir, guiada per aquests principis de disseny, passa per dissenyar un programari amb les funcionalitats bàsiques implementades i amb capacitat per a connectar-hi nous paquets de codi que resolguin, de forma unitaria i simple, les diferents lògiques de negoci específiques de cada cas sense modificar la lògica subjacent.
un programari amb les funcionalitats bàsiques implementades i amb capacitat per
a connectar-hi nous paquets de codi que resolguin, de forma unitaria i simple, les
diferents lògiques de negoci específiques de cada cas sense modificar la lògica
subjacent.
Tot el codi generat en el marc del projecte serà llicenciat de forma lliure i
Tot el codi generat en el marc del projecte serà llicenciat de forma lliure i publicat a repositoris de codi públics per tal de generar un procomú d'eines digitals que pugin enfortir l'economia social i solidària. Per tal d'assolir
publicat a repositoris de codi públics per tal de generar un procomú d'eines
digitals que pugin enfortir l'economia social i solidària. Per tal d'assolir
aquest objectiu.
aquest objectiu.
## API Providers
## API Providers
Empaquetar clients d'APIs com a paquets de pypi per resoldre els requeriments de
L'aplicació de servidor de l'oficina virtual, **somoffice**, desenvolipada amb Django[https://www.djangoproject.com/] implementa es la responsable de resoldre la lògica de negoci de l'oficina virtual des de la part del servidor i alimentar de dades al frontend via una REST API, a més de gestionar les sessions d'usuari. La gestió de les connexions HTTP, l'exposició d'endpoints, la serialització de les dades i el control de sessions i privilegis d'usuaris són les funcionalitats centrals de l'aplicació.
connexió entre proviedors.
Per al cas concret de Som Connexio, el _backend_ de l'oficina virtual necessita gestionar l'accés a serveis específics dedicats a la facturació dels serveis telèfonicss, APIs d'altres proveidors de xarxa amb els que treballa la companyia, sistemes d'autenticació d'usuaris i eines de ticketing. Totes aquestes necessitats són específiques del projecte de Som Connexio. Per tal de resoldre aquestes necessitats sense introduir al codi de l'aplicació **somoffice** un acoplament amb les particularitats del projecte, s'han implementat mòduls de python que s'integren a l'aplicació central com a mòduls que extenen les seves funcionalitats i gestionen la connexió amb les fonts de dades externes. Aquests mòduls els anomenem _providers_ i estan dissenyats com a clients d'APIs externes i serialitzadors dels models de dades que es connecten a la resta de l'aplicació extenent la superficie de la seva API interna.
L'estrategia dels providers permet definir mòduls lògics desacoplables de l'aplicació principal. Amb aquesta modularitat aconseguin enriquir el projecte **somoffice** amb un ecosistema de mòduls reutilitzables que permeten fer l'eina adaptable a diferents entorns i lògiques de negoci i que asegura un reflux de valor cap a l'eina de cadascuna de les implementacions que se'n facin sense generar dependències específiques ni necessitat de bifurcacions del desenvolupament.
PyPI és un repositori de programari per al llenguatge de programació Python.
PyPI és un repositori de programari per al llenguatge de programació Python.