--- layout: post status: publish published: true title: ! 'Why I''m a fan of open source software: An argument by anecdote/example' wordpress_id: 2967 wordpress_url: https://www.martineve.com/?p=2967 date: !binary |- MjAxMy0xMi0yNyAxODowNToxMCArMDEwMA== date_gmt: !binary |- MjAxMy0xMi0yNyAxODowNToxMCArMDEwMA== categories: - Technology - Linux tags: - Linux - Python comments: [] --- <p>An argument by anecdote.</p> <p>My prized Christmas present this year (which I obtained by selling a load of old electronics that I didn't want/need) was a pair of Parrot Zik headphones. They're wonderful. They paired with my Android phone flawlessly and they also connected with superb ease to my Linux installation which is my primary setup.</p> <p>However, I have now spent several hours trying to get them to work under Windows 7. Will they pair? Of course they won't. Apparently you need to install a different Bluetooth stack. After much registry hacking and following circular trails of advice from Microsoft, I have up and plugged them in manually.</p> <p>Switching back into my Linux installation I found that somebody had written <a href="https://github.com/m0sia/pyParrotZik">a great-looking cross-platform indicator icon for the headphones</a>, having reverse engineered the protocol. I cloned the git repo, installed the dependencies (todo: write list of python modules required) and, bang, it fired up and worked.</p> <p>Now, it didn't work flawlessly. The icon in the indicator was showing up as "not found". Hmmm, I thought. Is this going to be another Windows fiasco? No, it is not. I delved into the code, because I can(!) so I can actually see what's wrong. About five minutes later I'd written a fix for the problem and <a href="https://github.com/m0sia/pyParrotZik/pull/1">committed it back as a pull request</a> to the original author so that everyone can benefit.</p> <p>Now, the problems are of a different magnitude: writing and debugging a full low-level bluetooth stack is likely beyond my ability and willpower. However, I will never know. All I have in that case are compiled binaries that I cannot fix. By contrast, in the open context, I've given something, admittedly small, but useful, back.</p>