From the first line of code of my first android app, I had the idea of open-source in mind. I wanted to test the advertisement business model and clear my own ideas before doing the mix with open-source, because I had a lot of doubts about how to manage both things at the same time.
Now I have a plan and no longer fear this combination from the economic point of view. Take my words with care, as I am still in a learning process with toy projects of zero cost and zero risk (and almost zero income). Two things can happen that I was concerned about:
Someone can take the code, not contribute anything, and start making money for himself. This is something that can happen with open-source in general, but in the android environment, it is specially easy to do. Anyway, as long as I don’t make less money, I don’t care if others do it also.
Even if this person contributes with enhancements and users prefer his/her version over mine, I would have access to the source of his/her enhancements to update my version and build on them. That is the power of open-source, and I am not afraid of it.
Someone can take the code, remove the advertisement, and republish it free of charge and free of ad in the market. This is a little annoying, and would hurt my income. I used to be also a young boy with plenty of free time and no bills to pay, and did projects for fun, but now things changed a bit, so I must take some action to protect the income. Tom Tasche, author of SayMyName, suggested an interesting and friendly solution to this. If someone is so annoyed by the advertisement that he/she would take the time to publish an ad-free version, then I should allow disabling the ads at the configuration. People annoyed by advertisement don’t click on ads anyway, and people that don’t care and even click when they are interested, would leave them turned on if only as a contribution to the developer.
As I said, my toy projects are not giving real income, allowing me to test these theories with zero risk and better define a business model for the projects to come.
GPL and admob incompatibility
So far so good, but then Brendan Dahl, the author of gcal-call-logger, pointed to an interesting problem with GPL (my favorite license). GPL doesn’t allow linking with closed-source libraries, like is admob. At first, without community contributions, you could relicense it to yourself without GPL just to publish it with admob, and it would work, as it works for gcal-call-logger. The problem comes when you want to accept community contributions to the codebase, something that I would love to do with OTempo, for example. Community contributions are covered also by GPL, but these contributions are not your property, and you can not relicense them in order to publish the resulting app with admob again.
I have not yet found a solution to this last problem. Maybe GPL is not the right open-source license in this case, or maybe I should give AdWhirl (an open-source meta-ad-provider) a try.
Update: People from GNU already thought about issues like this one, and they explain in the FAQ how to overcome it: GPL FAQ (GPL incompatible libs)