22 d'octubre del 2013
Aquest matí he mantingut una reunió amb CETRAMSA pel cas de l’aplicació Proper bus Barcelona. La reunió ha estat positiva i hem decidit publicar els següents comunicats.
Per part de CETRAMSA:
Arran dels comentaris publicats en la xarxa social i al diari el País sobre l’aplicació app Proper Bus Barcelona volem informar-vos i posar-vos al dia de tot això:
1.- No s’ha interposat ninguna demanda judicial contra el titular de l’aplicació app Proper Bus Barcelona.
2.- CETRAMSA col·labora amb diverses entitats privades cedint la informació necessària de les seves bases de dades per tal de que sigui operativa i eficient per al usuari del transport públic tota la informació que resulta d’aquestes aplicacions. De forma recurrent i habitual la informació que facilitem és objecte d’actualització, millores, canvis, etc., si no existeix una correcta actualitació podria originar una gran confusió al usuari del transport públic. Aquest és el motiu per el que totes les entitats i persones que han precisat d’aquesta informació, han contactat i consensuat amb nosaltres el normal funcionament de les seves aplicacions respecte a les nostres bases de dades.
3.- En aquest sentit CETRAMSA i el Sr. Eduard Ereza, titular de l’aplicació app Proper Bus Barcelona, ja han normalitzat i consensuat el normal funcionament de l’aplicació, respecte a la informació que aquesta empresa està en condicions d'obrir les bases de dades per l'us de la mencionada aplicació, que estarà disponible aquest mateix matí.
Per part meva:
Arran de la polèmica suscitada per la publicació en diversos mitjans i xarxes socials de l'eliminació de l'aplicació "Proper bus Barcelona", m'agradaria fer les següents puntualitzacions:
- Per part de CETRAMSA s'han mostrat disposats en tot moment a trobar una solució al conflicte generat, i l'actuació de tots els professionals implicats ha estat l'adequada a les circumstàncies.
- Hem arribat a un acord de col·laboració, que permet restablir immediatament el funcionament de l'aplicació Proper bus Barcelona. CETRAMSA s'ha mostrat a favor de les dades obertes en tot moment, i únicament ha demanat que se li notifiqués la intenció d'utilitzar aquestes dades, de manera que fos possible garantir la seguretat i actualització de les mateixes.
- Assumeixo la meva part de culpa en el conflicte per no haver contactat prèviament amb l'Àrea Metropolitana, sol·licitant permís per a la utilització de les dades i indicacions per a la seva correcta gestió. No obstant això, la meva única queixa ha estat en tot moment per la comunicació oficial en el moment inicial, requerint l'eliminació de l'aplicació. Totes les converses posteriors han estat raonables i en pro de buscar un acord positiu per a les dues parts i per a Barcelona.
Considero, per tant, tancat aquest tema.
Ja a nivell més personal, voldria aprofitar aquesta publicació per agrair el recolzament i els missatges de suport de tots els usuaris. Sense vosaltres, res seria possible. Gràcies a tots una vegada més.
Podeu descarregar l’aplicació des de Google Play o des de BlackBerry World (els enllaços poden trigar una estona a estar operatius per motius d’actualització).
21 d'octubre del 2013
Finalment s’ha solucionat el problema: Proper bus Barcelona torna a estar disponible
Respecte del que comentava en l’anterior publicació, m’agradaria comentar algunes novetats que hi ha hagut pel que fa al cas.
21/10/2013 10:53
Aquest matí m’ha contactat l’advocat que signava el burofax, comentant-me que des de CETRAMSA des del primer moment només pretenien avisar-me, perquè les dades que utilitzo canvien diàriament i estaven preocupats perquè poguessin ser inconsistents (per exemple, que algun usuari es queixés perquè accedia a una parada de bus que s’havia eliminat). M’ha comentat que en cap cas pretenien demandar-me ni denunciar-me, i m’ha mostrat la seva preocupació pels missatges que s’estaven escampant per fòrums i per Twitter.
M’ha comentat que volien reunir-se amb mi durant aquesta setmana per parlar del tema i perquè l’accés a les dades des de l’aplicació es fes de manera segura i que les dades sempre fossin les reals, que em contactarien quan tinguessin disponibilitat.
21/10/2013 12:32
M’han contactat des de CETRAMSA per acordar una reunió demà a les 9:00. M’han tornat a mostrar la seva disconformitat amb els comentaris d’altra gent a fòrums i tuits, ja que ells en cap moment han volgut demandar-me. Asseguren que no hi ha cap problema perquè l’aplicació funcioni, però cal que faci servir els sistemes d’obtenció de dades adients perquè les mateixes estiguin degudament actualitzades.
Aquest és l’estat de les coses a dia d’avui, aniré actualitzant aquesta publicació conforme hi hagi més novetats. Per ara, l’aplicació segueix desactivada.
Aprofito per agrair des d’aquí tots els comentaris, missatges i tuits de recolzament. Han estat moltíssims i realment em motiven a seguir endavant, ja que sembla que realment la meva feina feia una mica més feliç a la gent. Moltes gràcies.
18 d'octubre del 2013
Última actualització: Proper bus Barcelona: Sense rastre de les dades
Finalment s’ha solucionat el problema: Proper bus Barcelona torna a estar disponible
Llegiu també l’actualització anterior aquí: Actualització del cas Proper bus Barcelona
Avui he rebut un burofax amb un requeriment legal enviat per un gabinet d’advocats, informant-me que segons CETRAMSA (Centre Metropolità d’Informació i Promoció del Transport, SA), autors de l’aplicació AMBTempsbus, estic fent un ús deslleial i un aprofitament indegut de la seva aplicació, i que la meva aplicació Proper bus Barcelona vulnera els seus drets de propietat intel·lectual. M’han exigit la immediata eliminació de l’aplicació, així com la destrucció de totes les dades propietat de CETRAMSA associades a la mateixa.
Lògicament, l’aplicació ja ha estat eliminada tant de Google Play com de BlackBerry World, i he destruït la base de dades utilitzada al servidor. Ningú pot descarregar l’aplicació, i qui ja la tenia descarregada, rep un missatge d’error.
Proper bus Barcelona va néixer una tarda d’avorriment, donat que quan havia d’agafar el bus, l’aplicació de TMB se’m feia pesada. Calia obrir-la (que ja comportava uns segons), anar a l’opció iBus, introduir el codi de la parada, i esperar que carreguessin les dades (i molts cops, no carregaven!). Em vaig adonar que acabava d’aparèixer una nova aplicació (AMB Temps bus) que permetia que, només introduint-hi el codi de parada, ja tinguessis totes les dades que necessitaves, i a més, mostrava també les línies que no eren de TMB. Però era una simple web que feia això, no hi havia possibilitat de veure les properes arribades sense saber el codi de parada, ni cap mapa, ni tan sols l’opció de desar una llista de parades preferides (mesos després sí que la van afegir, però mai ha acabat d’anar del tot bé). Com que això em semblava important, vaig creure que seria una bona idea fer una aplicació més intuïtiva i amb més funcionalitats, basant-me en les dades que ja proporcionava AMB Temps bus.
Inicialment, l’aplicació era una simple llista de parades preferides i una crida al web de l’AMB Temps bus per treure’n els temps d’arribada. És més, ni tan sols tenia intenció de publicar-la a Google Play, ja que creia que amb l’aplicació de TMB o la d’AMB Temps bus, la majoria de gent ja en tindria prou, que potser era jo que era molt “tiquismiquis” i m’havia de fer la meva pròpia aplicació per estalviar-me uns segons. Però més endavant vaig pensar que s’hi podien afegir altres funcionalitats i per què no, provar de publicar-la al Google Play a veure si, ja que tenia la feina feta, a algú altre li servia.
No m’esperava ni molt menys la resposta que va tenir l’aplicació: va passar a ser la 10a aplicació de transport més descarregada a tot Espanya (lloc que ocupava avui mateix, abans de ser retirada), molt per sobre de l’AMB Temps bus i frec a frec amb l’aplicació de TMB (TMB Virtual). Amb 50.000 descàrregues i 33.000 usuaris actius, ha estat tot un èxit. Amb el temps, i partint moltes vegades dels suggeriments dels usuaris, s’hi han anat incorporant noves funcionalitats: cerca, mapa, escaneig per QR, recorregut gràfic dels autobusos, etc. Tot això ha fet que sigui una aplicació molt superior a la resta de les publicades a Google Play (tot i que per suposat, sempre hi ha coses a millorar!).
Entenc que a l’AMB (i a CETRAMSA) això no li agradi, ja que una aplicació desenvolupada per un “mindundi” en el seu temps lliure li està trepitjant usuaris a la seva aplicació oficial, que segurament deu haver costat molts diners. És cert que estic fent ús de les seves dades (tot i que d’altra banda s’haurien de considerar públiques, ja que per alguna cosa hem pagat amb els nostres diners la feina d’aquesta empresa pública), però en cap moment estic provocant cap dany a l’empresa, ja que només dono un valor afegit que la seva aplicació no dóna, i no tergiverso les dades ni me n’apropio indegudament (sempre he indicat que les dades no són de la meva propietat).
En un context com el de Barcelona, capital mundial del mòbil i gran promotora de les dades obertes, sembla mentida que aquestes coses puguin passar, i que s’obligui algú a retirar la seva aplicació, simplement pel fet d’oferir un servei addicional que la pròpia administració ja hauria d’oferir. Si les coses es fessin bé des del principi, jo mai hauria creat l’aplicació, i no seríem on som ara.
Tampoc crec que fos necessari arribar a aquests extrems d’enviar un requeriment legal. Si m’haguessin contactat, hauríem pogut arribar a un acord, o com a mínim hauríem pogut parlar dels problemes que els ocasionava i com podíem solucionar-los, i mai hauríem arribat fins aquest punt. Però pel que sembla, han optat per l’altra via.
En fi, no m’allargo més, suposo que fins aquí ha arribat l’aplicació. Des d’aquí, vull donar les gràcies a tots els usuaris que l’han descarregat, que l’utilitzaven (molts diàriament) i que han enviat suggeriments de millora (són molts i a alguns no havia pogut ni respondre encara!). Esperem que algun dia ens retrobem. Mentrestant, podeu fer servir l’AMB Temps bus.
22 de juliol del 2013
Porto un temps utilitzant HoloEverywhere a la meva aplicació “Proper bus Barcelona”, i he pensat que estaria bé compartir la meva experiència amb aquesta biblioteca.
HoloEverywhere, en cas que no ho sàpigues ja, és una biblioteca que intenta posar-te fàcil tenir el mateix aspecte i disseny en totes les versions d’Android des de la 2.1 fins a la més actual. Això ho fa recreant el tema Holo d’Android 4.x. He de dir que, per suposat, no és senzill desenvolupar una biblioteca així. Algunes coses no es poden solucionar simplement aplicant temes als widgets antics, sinó que s’han d’implementar de zero, o bé crear subclasses d’algunes classes d’Android. Això és el que fa HoloEverywhere. Ah, i per cert, has de tenir en compte que necessita la majoria de recursos Holo, de manera que aquesta biblioteca afegeix 3,3 MB a les aplicacions ja existents.
Pensant que em faria més senzill tenir un estil Holo uniforme a totes les plataformes, vaig decidir implementar-ho a les meves aplicacions. Vaig provar-ho amb “Proper bus Barcelona”, i el resultat semblava que estava bé. Canviar una aplicació perquè utilitzi HoloEverywhere és senzill però pesat, ja que has reemplaçar totes les referències a widgets d’Android amb els seus equivalents de HoloEverywhere. Et pot comportar un bon temps si l’aplicació té una base de codi gran.
1r problema: El primer problema va ser amb algunes de les classes equivalents. A l’aplicació tenia algunes referències a la classe BaseAdapter
, obtingudes de ListView.getAdapter()
. Van passar a donar-me ClassCastException
, ja que la classe que retorna HoloEverywhere no és una subclasse de BaseAdapter
, i cal canviar els BaseAdapter
a ListAdapterWrapper
.
2n problema: El segon problema va ser amb un Spinner
que impedia que la vista es refresqués. Va resultar ser un bug de HoloEverywhere, i vaig trobar-hi una solució a StackOverflow.
3r problema: El tercer problema va ser que tenia una Activity
que utilitzava un tema “dialog”, i donava error en versions d’Android anteriors a la 4.0. La vaig reescriure utilitzant un DialogFragment
, i tot va anar bé…
4t problema: Fins que em vaig adonar que el diàleg no mostrava el títol en versions d’Android anteriors a la 4.0. Vaig revisar el codi de HoloEverywhere i vaig aconseguir implementar una manera d’evitar-ho.
En aquest moment, havent solucionat tots aquests bugs, tot funcionava correctament, i vaig decidir publicar la nova versió de l’aplicació, utilitzant HoloEverywhere 1.5.0. L’aplicació no tenia problemes, fins que vaig llançar-ne una nova versió amb HoloEverywhere 1.5.1 en lloc de 1.5.0. Així que…
5è problema: Vaig començar a rebre queixes d’usuaris que tenien telèfons Sony Xperia (Sony Xperia U amb Android 2.3.7, per exemple), dient-me que les llistes de l’aplicació havien desaparegut.
Vaig rellançar l’aplicació tornant a la 1.5.0, i tot va tornar a funcionar bé…
6è problema: Fins que altres usuaris, amb diversos models de telèfon diferents, van començar a queixar-se que l’aplicació es penjava aleatòriament amb una pantalla blanca. No veig cap altra raó que en pugui ser la causa, a part de HoloEverywhere, així que vaig decidir provar d’actualitzar a l’última versió estable, la 1.6.8, i demanar-li a una usuària que la provés. Tot i que no va poder reproduir el problema de la pantalla blanca, les ListView
s que tenien scroll desapareixien, com passava amb la 1.5.1.
Finalment: Després de tots aquests problemes, he eliminat HoloEverywhere del meu projecte. Sí, els botons i els textos de l’aplicació no es veuran igual en totes les versions d’Android, però m’he desfet de diversos bugs molestos, i encara millor… ara la meva aplicació ocupa 3,3 MB menys!
En conclusió, tots sabem que totes les biblioteques tenen bugs, és normal, no hi ha cap desenvolupador que no faci errors. Però quan has d’utilitzar una biblioteca per a un projecte (que no és res fora del normal en un projecte Android), i et topes amb un parell de bugs coneguts, i a sobre n’has d’informar quatre més tu mateix, alguns d’ells de funcionalitats comunes com ara diàlegs o menús contextuals, jo no la recomanaria per a l’ús en producció.
Potser algun dia HoloEverywhere tindrà menys errors i serà més senzilla d’integrar. Això espero, ja que simplificaria molt les coses a molts desenvolupadors a l’hora de dissenyar les seves aplicacions. Però ara per ara, no puc recomanar-te que l’usis.
14 d'abril del 2013
Si et desenvolupador d’Android, segurament en algun moment hagis estat temptat d’implementar tu mateix els canvis de configuració en canviar l’orientació de la pantalla. És a dir, afegir el següent atribut a les teves activitats a l’AndroidManifest.xml:
<activity android:name=".LaMevaActivity"
android:configChanges="keyboardHidden|orientation|screenSize" />
I llavors sobrecarregant el mètode onConfigurationChanged a la teva activitat:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
//el teu codi per gestionar el canvi d'orientació, si cal
}
Bé… Senzillament, NO ho facis. Evita utilitzar aquesta solució, i fes-la servir només com a últim recurs. Com explica la guia de desenvolupadors d’Android:
This technique should be considered a last resort when you must avoid restarts due to a configuration change and is not recommended for most applications.
Com que molt sovint aquest mètode és la solució proposada a molts dels problemes de la recreació de les activitats, i com que ho simplifica tot perquè no t’has d’encarregar de la recreació de l’activitat quan canvia l’orientació, vaig acabar fent-lo servir per a totes les activitats de les meves aplicacions. I llavors, van aparèixer els bugs.
Primer punt: L’ActionBarSherlock té un comportament estrany quan gestiones tu mateix els canvis d’orientació. En el meu cas, tot semblava funcionar, però en els dispositius amb Android <4.0, després de girar la pantalla, les pestanyes de la barra de navegació quedaven totalment congelades i no reaccionaven a cap clic. Com indica Jake Wharton en un dels informes d’errors:
FYI this may never be fully fixed. Avoid handling configuration changes at all costs.
Segon punt: Els AlertDialogs també tenen problemes similars, fins i tot a les últimes versions d’Android. En tenia alguns que, després de diversos canvis d’orientació, també es convertien en “inclicables”. No sé per què, però estic força segur que la causa deu ser la mateixa per la qual l’ActionBarSherlock també es torna “inclicable”.
Així… Què hauries de fer? Bé… simplement, utilitzar la manera normal de gestionar canvis de configuració a les activitats d’Android. És a dir, tenir en compte que la teva activitat pot ser recreada i desant i restaurant-ne l’estat utilitzant els mètodes onSaveInstanceState() i onRestoreInstanceState(), o utilitzant el mètode setRetainInstance() dels fragments. Assegura’t de llegir la guia oficial d’Android per gestionar els canvis de configuració.