När det gäller open source-mjukvaror som man använder är det lätt att bli irriterad när man stöter på en bugg som sätter käppar i hjulet. Istället för att muttra surt går det som väl är ofta att vara lite konstruktiv och göra något åt problemet iom att källkoden finns tillgänglig. Om man inte har möjlighet att fixa buggen själv kan man se till att kolla om buggen finns rapporterad och annars lämna en så utförlig buggrapport som möjligt.
Jag illustrerar med ett färskt exempel från ikväll och kanske kan nån som inte brukar fixa buggar lära sig något och ta efter…?
Ni som följt bloggen ett tag vet att jag använder pyTrainer. Jag sparar mina data i en extern relationsdatabas (MySQL) och det verkar inte vara den vanligaste varianten (eftersom buggen har fått finnas ett bra tag) utan de flesta låter troligen pyTrainer hantera lagringen lokalt med hjälp av sqlite.
Jag har upptäckt att när jag väl har skapat (dvs importerat från klockan) ett träningspass så kan jag inte uppdatera informationen, exempelvis kommentarsfältet. Om man startar pyTrainer från terminalen och spanar efter fel ser man följande informativa meddelande:
File "/usr/lib/python2.5/site-packages/pytrainer/record.py", line 137, in updateRecord
self.ddbb.update("records",cells,values," id_record=%d" %id_record)
TypeError: int argument required
Saken är så gott som klar. Vi behöver vara lite tydligare och berätta för python att id_record duger gott. Vi pillar in nåt som jag skulle benämna “explicit datatypkonvertering” så att det blir %int(id_record). Se där, fem tecken och en bugg mindre 🙂
Nu till det fina i kråksången, andra användare borde naturligtivs få del av denna fantastiska förbättring (i själva verket är det ju en ganska allvarlig bugg!).
Efter att ha konstaterat att buggen fortfarande existerar i trunken är det läge att försöka committa patchen.
Jag har checkat ut pytrainer-koden tidigare med kommandot:
svn co https://pytrainer.svn.sourceforge.net/svnroot/pytrainer pytrainer
Nu behövde jag således uppdatera min lokala vy:
svn update
Ser till att min patch är på plats (råkar vara i record.py rad 218) och skickar upp förändringen till repositoryt (källkodsförrådet):
svn commit record.py -m "Fixed bug where track record was supposed to be updated in database. Type cast was missing."
Det sista steget kräver att man har skrivrättigheter till repositoryn men det bör inte vara något problem att få om du presenterar dig på nån e-postlista/forum eller dylikt och säger att du har koll.
Efter detta är det bara att luta sig tillbaka och njuta av ditt stordåd 🙂