Saturday, March 15, 2014

Offsetting the cost of OpenSource development

There is a cost associated with OpenSource development. The cost I pay to maintain the domain, the hosting cost, and most importantly, the time I spend coding and fixing things up. Recently, I have been thinking of how to offset this cost of OpenSource development. One arena I was thinking was of making available my builds via App Stores. This gives the end-users the value add of having a certified build, automatically updated to the latest version. I believe, a person, like me, wouldn’t mind paying a small amount for this additional value add, and would provide a source of income for the OpenSource project. Thus started my experiment.

Experiment 1: Mac App Store

I selected my most popular OpenSource project for this experiment: RESTClient. I began the effort. My initial estimate was for one week after reading this blog. And one fine Monday, couple of weeks back, I began the work. As I progressed, I understood the enormity of the task I had undertaken. From building OpenJDK, to scouring Apple documentation (excellent BTW) written for Xcode development—translating to the Java counterpart, complying to Apple sandbox. I understood that I had jumped into something enormous.

During mid-week, I discovered that making RESTClient compliant to Apple sandbox restrictions is near to impossible due to two reasons:

  1. The file open API I was supposed to use, needed to open related files. Example, if I open a file of request type, this particular file could link to external files like SSL certificates. I cannot use normal-file-open APIs if I have to use these linked files. The solution? Use JNI technologies to comply to sandbox restrictions, and link them to Java application. Not elegant. No other platform would benefit from these code changes.
  2. The application configuration were stored by RESTClient in ~/.rest-client folder. Sandbox restricted me from writing/reading to/from this location. And this location is shared between the Cli and GUI application. Again, I would have to do some crazy logic to write generic configuration files for sandboxed and non-sandboxed version of the software.

Based on these developments, I changed my course of plan:

  1. I wanted to experience Mac App Store onboard. So I selected a more simple application for that experiment, RegularExpression Tester. It is currently under review by Apple.
  2. I didn’t want my effort spent on RESTClient go waste. I wanted to provide a signed build of RESTClient that could be purchased.

Experiment 2: FastSpring

I wanted a store-front to sell my RESTClient binaries. The effort setting up the store and maintenance of it should be minimal. For the customers, it should be simple effort to purchase and download. The only store I explored was FastSpring. I got hooked to its simple interface, and created my product page. This experiment is now ongoing—I am trying to figure out how many people would really pay for a software that is easily available for download as OpenSource.

No comments: