I'm one of the founders of Binpress and I stumbled upon this thread, which is very interesting. I wanted to chime in on the conversation and offer some inner perspective on the concept of buying and selling code.
Initially, we were a software shop named Lionite which built web-services and platforms, mainly for Internet startups. After a considerable amount of completed projects, we accumulated a significant library of components we've been reusing from project to project - stuff like PayPal integration, Facebook connect, Zend Framework CMS and so forth, and we had the idea of selling those as standalone products instead of keep chasing the next project. We could sell many copies without doing additional work, and the clients would be happy with excellent components that cost them a fraction of what it would cost to custom develop it.
It then hit us that it's very likely that a lot of developers are in the same place - they have a library of code they've been reusing between projects and that has reached a very mature level, and it could benefit other developers / development projects that need those features and would have to waste time and money (development costs) to build it from scratch.
It seems to me there are several reasons developers don't usually do this -
- They don't want to make the time investment to prepare it as a standalone product.
- They don't believe they can make enough sales to make it worth their while.
- They suck at marketing.
- They don't want to deal with the related legal and billing issues.
The first and second bullets are solved once you prove that it is worth the initial time investment, and the last two bullets are things that we have a lot experience and expertise with. So we decided to build a service that would enable developers to do just that - sell their code as standalone products. This gives incentive to developers who wouldn't have bothered (or wanted) to release their code as open-source and increases the amount of knowledge available (even if it is paid). We believe it's always best to use mature, well-factored code than develop something from scratch and going through the maturation pains until it reaches a good stable state.
We've been running at full steam for about 4 months now, and we've come a long way. I think I can identify where developers would be willing to spend to buy ready components -
- It solves a big problem - there is a different cut-off for every developer, but I think that around 10-15 hours to develop something from scratch, a ready alternative becomes much more appealing even if it is paid. Obviously, for free open-source you usually try and find solutions for even smaller problems - but when the problem is big enough you would be willing to spend to have a good solution available.
- You need to tackle an area that you are weak in / unfamiliar with. It might be a complex API or low-level programming that is very cumbersome - in either case, you want to avoid spending additional time on research before you can even get started on development, and you are worried you will make a lot of mistakes the first time.
- You find a good UI component that looks much better than what you can manage yourself (due to most developers not being great UI guys)
So for those cases we do see nice sales figures. We do have components that are not selling well - either a good free solution is available, or the problem is not big enough for convincing a developer he should spend on solving it. If we were completely logical machines, we would make a 5-10$ purchase even to save one hour of development (assuming our hourly rate is significantly higher than that), but developers (and me included) have a hard tough paying for something they could easily do themselves (though there are exceptions). When it's no longer easy or viable is when you consider paying for it.
And there is the case of non-developers, as anandcoral mentioned - project managers or site / blog owners that need a feature and could be saving significant money on custom development by buying something ready and just paying for integration (or even doing it themselves if possible).
Another important note is the type of language / platform we are talking about - web stacks usually have a significant amount of open-source code available, but that is the less the case for desktop development and area such as game-development and mobile development. There is still open-source there, but the needs are much more varied and there is a lot of empty space there for good components to take up space.
I've written a giant post and I hope someone will bother reading it
I'll just finish by mentioning a side-project we are working on that might be of interest to you guys - a platform for starting, funding and delivering software products. Somewhat similar to Kickstarter
if you are familiar with it, it would allow people (either developers or potential end-users) to start projects, collaboratively create the spec (by suggesting and voting on features), funding the project by committing a small amount (which will returned if the project is not completed successfully) and eventually launch and complete the project after it complies with the spec and a set of predefined coding standards. It could be a launching pad for new components on our site (developers are always asking what kind of components they should publish) or even for open-source projects that could receive funding to allow developers to work on it full time for the duration of the project (it's always much harder to get donation *after* the project is already available for download).
I would love to hear your thoughts about our service and what I wrote here.