Ask HN: How to Price a Software Library?
It does not seem wise to charge a fixed one time fee of a few hundred bucks when the customer then uses the library for years in their own products. Is it still common to charge per installed CPU/core? How do you then deal with cloud systems where that number always changes and may even be difficult to determine? What about charging "per end user"? In general, can libraries also be charged on an ongoing basis like a SaaS (x EUR per month or year), i.e. do customers accept that?
I've offered maintenance and support packages but when the software works beyond the initial warranty, customers usually don't order them. I could turn the library into an API and charge for that but that's not always what the customer wants.
Any ideas on how to maximize my revenues here?
[+] [-] JohnFen|6 years ago|reply
I don't really do ongoing payment (rental) schemes, out of pure personal preference. (If a customer asks for one, I can do that, though -- it's just not a default option). I don't like it when other software does this, so I'm not going to do it myself. That's not an economic or business-based decision and not a recommendation. I'm just mentioning it to explain why that's absent here.
I take a look at what my development costs were to develop the library, and use that to estimate what it would cost another shop to replicate the same functionality. I try to subtract out the portion of the development costs that are reflect the API design and other things that are unique to library development (including documentation).
Then, once I have an estimate for what it would cost my potential customers to develop the functionality, I cut that in half, and that becomes my asking price.
I also sell libraries in two forms: with source code and without. For those who want the source code (which is most of my customers), I charge double what the asking price I computed above is.
[+] [-] rivo|6 years ago|reply
I would add that the customer may not come up with a detailed estimate/calculation so it's more a question of how expensive they perceive their development costs to be. (If their developer casually says, "I can do this in two days", that's bad even if it's wrong.)
One probably has to factor in the (possible) inefficiency of the customer, i.e. inexperienced devs and the usual overhead of working at a large company.
At first, I thought that by cutting the costs in half, you would end up with a fairly low price. But giving them the option to receive the source code at double the price is a nice touch, especially since you say most of your customers want that anyway.
[+] [-] dsr_|6 years ago|reply
We eventually worked out a special deal where we would pay for 2 years at a time in advance, and get a version without the stupid expiring key.
The library vendor trusts us to account for the number of CPUs we are running it on and self-report. We don't abuse that trust.
The alternatives are:
1. Writing our own math library. We estimated it would take a man-month to get it usable, but we might spend years in corner cases.
2. Paying someone to improve Octave. Probably similar to case 1, but we would feel good about our contribution.
3. Very expensive alternatives.
[+] [-] actionowl|6 years ago|reply
Maybe you could make the one-time price higher? I've seen some critical libraries cost several thousand dollars, and it was worth it in time saved.
[+] [-] geoah|6 years ago|reply
The pay-more-once scheme always seemed the most easy choice for companies I worked for, as they wanted to be able to sell products that they couldn't easily keep charging for after the sale.
[+] [-] JohnFen|6 years ago|reply
That said, as a small businessperson I have considerable flexibility. If a customer really wants a lease option, I can easily accommodate that.
[+] [-] cweagans|6 years ago|reply
Personally, I'd do a fixed one time fee for each major version of the library.
Another option is to scale your pricing based on your customers' revenue like Unity does (minus the subscription part). Smaller companies can get a better deal on your software, but when they cross a threshold of annual revenue, then they pay more.
[+] [-] JohnFen|6 years ago|reply
I don't scale the pricing in an overt way, but I have been known to reduce the fee for small companies or individual developers if they ask.
Also, if I think a particular customer would give me additional benefits (such as increased exposure or clout), I have sometimes cut the rate in exchange for permission to advertise their use of my library.
[+] [-] DerekQ|6 years ago|reply
A few hundred bucks is way too low for any library of substance that saves the local developers a few weeks work.
[+] [-] happythought|6 years ago|reply
[+] [-] gremlinsinc|6 years ago|reply
[+] [-] user5994461|6 years ago|reply
If you charge any support, this should be similar or more than the price of the library. Clients who ask for support are the most annoying ones who are planning to use it and the bigger companies with deep pockets.
Better make the support crystal clear on what is covered because clients might try to have you do the integration in their software, which is a whole development project, not a support task.
[+] [-] kahoon|6 years ago|reply
[+] [-] laydn|6 years ago|reply
Sell the library for X EUR, and then charge Y Eur/year for ongoing support and maintenance, where Y is a fraction of X. If the user does not want the support and maintenance, so be it, they can use the software indefinitely. In my experience, most serious users have no problem paying for long term support.
Good luck.