In our world there are a vast number of software tools which are "open source". That means 1) anyone can use them, for free, and 2) anyone can fix them, enhance them, or otherwise change them, for free. These open source tools are mostly maintained by a small group of individuals, as a labor of love, although sometimes companies will contribute some of their people's time or even their intellectual property, as a sort of public good.
There are a significant number of benefits to open source, but one of the least appreciated is the quick response possible for making enhancements. I experienced just such a case yesterday.
I'd been working on eyesFinder's Visual Search Engine, adding support for PNG images (we already support JPEG, TIFF, and JP2). To do so, I chose to integrate an open source library called libpng. Using this standard library made sense to ensure compatibility with the widest range of possible images, not to mention it's out there and it works, so using it saved a metric ton of effort.
As I started using it, I realized there was an API capability I'd like to have which wasn't exposed; the capability was already there, but it wasn't neatly packaged. At this point I had two options, 1) use the existing API, or 2) make a custom change to implement a new function which did what I want. To help me decide, I emailed Glenn Randers-Pehrson, a maintainer of the library. Two hours later (on a Sunday), I received a response; Glenn had copied John Bowler, the primary developer of the part of the API of interest. Shortly after that (on a Sunday), I received an email from John. We discussed a potential change in email, he improved my idea of what should be done, and I offered to make the change. John replied that he was already making the change, and should have it available in about an hour. Which he did!
So I now have a spiffy custom slightly-enhanced version of libpng, and was able to cleanly integrate it into eyesFinder's VSE. And yay, we now have PNG image support.
What's absolutely remarkable about this is that Glenn and especially John gladly gave their time to be responsive and help. Not only do I have the tool I need, but this version of the tool will be released to "everyone", so everyone will have a slightly enhanced tool. This process, repeated hundreds of times, yields incredible software; solid, robust, functional, debugged, and secure.
Some of the most important software around is open source; the Linux+GNU operating system, which runs most of the servers on the Internet (and most of the phones, via the Android derivative), the Apache webserver, which runs most of the websites on the Internet, the Chrome and Safari web browsers, which are based on the open-source webkit library, Open SSL, which provides security for most of the communications on the Internet, MySQL, the database which powers more online systems than any other, etc. Not to mention thousands of support libraries, some of which encapsulate imaging standards like libjpeg, libtiff, and of course libpng.
It's amazing that this works, and yet it does. Yay, open source :)
|